| Advanced Object-Oriented Programming | - Understand and explain the basic terms and programming concepts used in the OOP paradigm 
						essential terminology: class, instance, object, attribute, method, type, instance and class variables, superclasses and subclasses
						reflexion: isinstance(), issubclass()
						the __init__() method
						creating classes, methods, and class and instance variables; calling methods; accessing class and instance variables 				- Perform Python core syntax operations 
						Python core syntax expressions – magic methods: comparison methods (e.g. __eq__(self, other)), numeric methods (e.g. __abs__(self)), type conversion methods (e.g. __init__(self)), object intro- and retrospection (e.g. __str__(self), __instancecheck__(self, object)), object attribute access (e.g. __getattr__(self, attribute)), accessing containers (e.g. __getitem__(self, key))
						operating with special methods
						extending class implementations to support additional core syntax operations 				- Understand and use the concepts of inheritance, polymorphism, and composition 
						class hierarchies
						single vs. multiple inheritance
						Method Resolution Order (MRO)
						duck typing
						inheritance vs. composition
						modelling real-life problems using the "is a" and "has a" relations 				- Understand the concept of extended function argument syntax and demonstrate proficiency in using decorators 
						special identifiers: *args, **kwargs
						forwarding arguments to other functions
						function parameter handling
						closures
						function and class decorators
						decorating functions with classes
						creating decorators and operating with them: implementing decorator patterns, decorator arguments, wrappers
						decorator stacking
						syntactic sugar
						special methods: __call__, __init__ 				- Design, build, and use Python static and class methods 
						implementing class and static methods
						class vs. static methods
						the cls parameter
						the @classmethod and @staticmethod decorators
						class methods: accessing and modifying the state/methods of a class, creating objects 				- Understand and use Python abstract classes and methods 
						abstract classes and abstract methods: defining, creating, and implementing abstract classes and abstract methods
						overriding abstract methods
						implementing a multiple inheritance from abstract classes
						delivering multiple child classes 				- Understand and use the concept of attribute encapsulation 
						definition, meaning, usage
						operating with the getter, setter, and deleter methods 				- Understand and apply the concept of subclassing built-in classes 
						inheriting properties from built-in classes
						using the concept of subclassing the built-ins to extend class features and modify class methods and attributes 				- Demonstrate proficiency in the advanced techniques for creating and serving exceptions 
						exceptions as objects, named attributes of exception objects, basic terms and concepts
						chained exceptions, the __context__ and __cause__ attributes, implicitly and explicitly chained exceptions
						analyzing exception traceback objects, the __traceback__ attribute
						operating with different kinds of exceptions 				- Demonstrate proficiency in performing shallow and deep copy operations 
						shallow and deep copies of objects
						object: label vs. identity vs. value
						the id() function and the is operand
						operating with the copy() and deepcopy() methods 				- Understand and perform (de)serialization of Python objects 
						object persistence, serialization and deserialization: meaning, purpose, usage
						serializing objects as a single byte stream: the pickle module, pickling various data types
						the dumps() and loads functions
						serializing objects by implementing a serialization dictionary: the shelve module, file modes, creating shelve objects 				- Understand and explain the concept of metaprogramming 
						metaclasses: meaning, purpose, usage
						the type metaclass and the type() function
						special attributes: __name__, __class__, __bases__, __dict__
						operating with metaclasses, class variables, and class methods | 25% | 
| Coding Conventions, Best Practices, and Standardization | - Understand and explain the concept of Python Enhancement Proposals and Python philosophy 
						the PEP concept and selected PEPs: PEP 1, PEP 8, PEP 20, PEP 257
						PEP 1: different types of PEPs, formats, purpose, guidelines
						PEP 20: Python philosophy, its guiding principles, and design; the import this instruction and PEP 20 aphorisms 				- Employ the PEP 8 guidelines, coding conventions, and best practices 
						PEP 8 compliant checkers
						recommendations for code layout: indentation, continuation lines, maximum line length, line breaks, blank lines (vertical whitespaces)
						default encodings
						module imports
						recommendations for string quotes, whitespace, and trailing commas: single-quoted vs. double-quoted strings, whitespace in expressions and statements, whitespace and trailing commas
						recommendations for using comments: block comments, inline comments
						documentation strings
						naming conventions: naming styles, recommendations
						programming recommendations 				- Employ the PEP 257 guidelines, conventions, and best practices 
						docstrings: rationale, usage
						comments vs. docstrings
						PEP 484 and type hints
						creating, using, and accessing docstrings
						one-line vs. multi-line docstrings
						documentation standards, linters, fixers | 12% | 
| GUI Programming | - Understand and explain the basic concepts and terminology related to GUI programming 
						GUI: meaning, rationale, basic terms and definitions
						visual programming: examples, basic features
						widgets/controls – basic terms: windows, title and title bars, buttons, icons, labels, etc.
						classical vs. event-driven programming
						events – basic terms
						widget toolkits/GUI toolkits 				- Use GUI toolkits, basic blocks, and conventions to design and build simple GUI applications 
						importing tkinter components
						creating an application's main window: the Tk(), mainloop(), and title methods
						adding widgets to the window: buttons, labels, frames, the place() method, widget constructors, location, screen coordinates, size, etc.
						launching the event controller: event handlers, defining and using callbacks, the destroy() method, dialog boxes
						shaping the main window and interacting with the user
						checking the validity of user input and handling errors
						working with Canvas and its methods
						using the Entry, Radiobutton, and Button widgets
						managing widgets with the grid and place managers
						binding events using the bind() method 				- Demonstrate proficiency in using widgets and handling events 
						settling widgets in the window's interior, geometry managers
						coloring widgets, color modes: RGB, HEX
						event handling: writing event handlers and assigning them to widgets
						event-driven programming: implementing interfaces using events and callbacks
						widget properties and methods
						variables: observable variables and adding observers to variables
						using selected clickable and non-clickable widgets
						identifying and servicing GUI events | 20% | 
| Network Programming | - Understand and explain the basic concepts of network programming 
						REST
						network sockets
						Domains, addresses, ports, protocols, and services
						Network communication: connection-oriented vs. connectionless communication, clients and servers 				- Demonstrate proficiency in working with sockets in Python 
						the socket module: importing and creating sockets
						connecting sockets to HTTP servers, closing connections with servers
						sending requests to servers, the send() method
						receiving responses from servers, the recv() method
						exception handling mechanisms and exception types 				- Employ data transfer mechanisms for network communication 
						JSON: syntax, structure, data types (numbers, strings, Boolean values, null), compound data (arrays and objects), sample JSON documents and their anatomies
						the json module: serialization and deserialization, serializing Python data/deserializing JSON (the dumps() and loads methods), serializng and deserializing Python objects
						XML: syntax, structure, sample xml documents and their anatomies, DTD, XML as a tree
						processing xml files 				- Design, develop, and improve a simple REST client 
						the request module
						designing, building, and using testing environments
						HTTP methods: GET, POST, PUT, DELETE
						CRUD
						adding and updating data
						fetching and removing data from servers
						analyzing the server's response
						response status codes | 18% | 
| File Processing and Communicating with a Program's Environment | - Demonstrate proficiency in database programming in Python 
						the sqlite module
						creating and closing database connection using the connect and close methods
						creating tables
						inserting, reading, updating, and deleting data
						transaction demarcation
						cursor methods: execute, executemany, fetchone, fetchall
						creating basic SQL statements (SELECT, INSERT INTO, UPDATE, DELETE, etc.) 				- Demonstrate proficiency in processing different file formats in Python 
						parsing XML documents
						searching data in XML documents using the find and findall methods
						building XML documents using the Element class and the SubElement function
						reading and writing CSV data using functions and classes: reader, writer, DictReader, DictWriter
						logging events in applications
						working with different levels of logging
						using LogRecord attributes to create log formats
						creating custom handlers and formatters
						parsing and creating configuration files using the ConfigParser object
						interpolating values in .ini files | 15% |