
Python Institute PCPP1 - Certified Professional Python Programmer 1
The PCPP1™ – Certified Professional Python Programmer Level 1 certification validates advanced Python programming skills, including object-oriented programming, GUI development, network programming, and best practices. It is designed for developers and IT professionals seeking to demonstrate their expertise and advance their careers as professional Python developers. Earning PCPP1™ signals a high degree of technical knowledge and work independence, positioning you for junior and middle-level programming roles.
530 practice questions · Updated 2025-03-21
PCPP-32-1 Curriculum
Every domain, objective, and concept the PCPP-32-1 exam measures.
- Class and instance
- Object and attribute
- Method
- Type
- Instance variables
- Class variables
- Superclasses and subclasses
- isinstance()
- issubclass()
- The __init__() method
- Creating classes and methods
- Creating and accessing class and instance variables
- Calling methods
- Comparison magic methods
- Numeric magic methods
- Type conversion magic methods
- Introspection and retrospection magic methods
- Attribute access magic methods
- Container access magic methods
- Operating with special methods
- Extending class implementations for core syntax
- Class Hierarchies
- Single vs. Multiple Inheritance
- Method Resolution Order (MRO)
- Duck Typing
- Inheritance vs. Composition
- Modeling with is-a and has-a Relations
- *args and **kwargs
- Forwarding arguments
- Parameter handling with * and **
- Closures
- Function decorators
- Class decorators
- Decorating functions with classes
- Decorator patterns
- Decorator arguments
- Wrappers and functools.wraps
- Decorator stacking
- Syntactic sugar for decorators
- __call__ special method
- __init__ special method
- Implementing class methods
- Implementing static methods
- Understanding @classmethod vs @staticmethod
- Using the cls parameter
- Accessing and modifying class state
- Creating objects with class methods
- Defining abstract classes
- Defining abstract methods
- Implementing abstract methods
- Overriding abstract methods
- Multiple inheritance from abstract classes
- Delivering multiple child classes
- Definition of attribute encapsulation
- Meaning and purpose of encapsulation
- Usage of encapsulation in Python
- Getter methods
- Setter methods
- Deleter methods
- Operating with getter, setter, and deleter methods
- Inheriting from built-in classes
- Extending built-in class methods
- Modifying built-in class attributes
- Using super() with built-in subclasses
- Practical examples of built-in subclassing
- Exceptions as objects
- Named attributes in exceptions
- Chained exceptions with __context__
- Chained exceptions with __cause__
- Implicit vs explicit chaining
- Analyzing traceback objects
- Operating with different kinds of exceptions
- Object label vs. identity vs. value
- Using id() to get object identity
- Using the is operator for identity comparison
- Shallow copy with copy()
- Deep copy with deepcopy()
- Persistence, serialization, and deserialization
- pickle module basics
- shelve module for dictionary serialization
- Metaclasses: meaning and purpose
- Using the type metaclass and type()
- Creating custom metaclasses
- Special attribute __name__
- Special attribute __class__
- Special attribute __bases__
- Special attribute __dict__
- Operating with metaclasses
- Class variables and class methods in metaprogramming
- PEP concept
- PEP 1
- PEP 8
- PEP 20
- PEP 257
- PEP 8 checkers
- Indentation and continuation lines
- Maximum line length and line breaks
- Blank lines
- Default encodings
- Module imports
- String quotes
- Whitespace in expressions and statements
- Trailing commas
- Comments vs. documentation strings
- Naming conventions
- Programming recommendations
- GUI meaning and rationale
- Visual programming concepts
- Widgets and controls
- Classical programming model
- Event-driven programming model
- Basic event terminology
- GUI toolkits
- tkinter import and main window setup
- Widget creation and placement with place()
- Event handlers and callbacks
- Window destruction and dialog boxes
- Input validation and error handling
- Canvas methods for drawing
- Entry, Radiobutton, and Button widgets
- Grid and place layout management
- Event binding with bind()
- Geometry managers
- Coloring widgets with RGB and HEX
- Event-driven programming model
- Events and callbacks
- Widget properties and methods
- Observable variables and observers
- Clickable widgets
- Non-clickable widgets
- Identifying and servicing events
- REST fundamentals
- Socket basics
- Network domains
- Addresses and ports
- Protocols and services
- Connection-oriented vs. connectionless
- Clients and servers
- socket module basics
- creating sockets
- connecting to HTTP servers
- closing connections
- sending requests with send()
- receiving responses with recv()
- exception handling in socket operations
- JSON syntax and structure
- JSON module: dumps()
- JSON module: loads()
- XML syntax and structure
- Document Type Definition (DTD)
- XML as a tree model
- Processing XML files with Python
- requests module basics
- test environments for REST clients
- HTTP GET and fetching data
- HTTP POST and creating data
- HTTP PUT and updating data
- HTTP DELETE and removing data
- CRUD operations mapping
- analyzing HTTP responses
- HTTP status codes interpretation
- sqlite3 module basics
- Connection management
- Creating tables
- Inserting data
- Reading data
- Updating data
- Deleting data
- Transaction demarcation
- Cursor creation and use
- execute method
- executemany method
- fetchone method
- fetchall method
- Basic SQL statements
- XML parsing with find and findall
- Building XML with Element and SubElement
- CSV reading with reader and DictReader
- CSV writing with writer and DictWriter
- Logging events and levels
- LogRecord attributes
- Custom handlers and formatters
- ConfigParser for configuration files
- Value interpolation in .ini files
Percentages reflect share of the current practice bank, not official exam weightings — no structured per-skill weight is published for PCPP-32-1, so none is invented.