Python Institute · Professional-Level Certification

PCPP1™ – Certified Professional Python Programmer: Software Development

Exam Syllabus

The assessment scope for PCPP1-32-102. Explore seven weighted sections covering advanced Python object-oriented programming, data modeling, text processing, code quality, services, collaborative engineering, and responsible AI-assisted development.

PCPP1-32-102 Software Development Blueprint v1.3 Revised November 6, 2026

This syllabus applies to the PCPP1-32-102 exam. Confirm the exam code when selecting preparation materials or purchasing an exam voucher.

PCPP1 professional Python certification badge PCPP1™ Certification Professional Python software development
PCPP1-32-102 Exam code
Professional Certification level
45 Questions
7 Exam sections
72% Passing score
v1.3 Blueprint version

About PCPP1-32-102

The PCPP1™ – Certified Professional Python Programmer: Software Development certification is designed for experienced Python learners, aspiring professional developers, software engineers, and technical professionals who want to demonstrate advanced competency in designing, developing, integrating, maintaining, and improving Python applications.

The examination builds on associate-level Python programming knowledge and focuses on advanced language mechanisms, object-oriented design, data modeling, type systems, structured data processing, code quality, application integration, and professional engineering practices.

The blueprint emphasizes practical application rather than memorization of isolated language features. Candidates are expected to read, interpret, trace, construct, analyze, debug, refactor, and evaluate professional Python code, while also applying collaborative engineering practices and appropriate safeguards for AI-assisted development.

Exam Sections and Weighting

The table shows the distribution of the 45 exam questions and the weighting assigned to each section in the PCPP1-32-102 blueprint.

Section Section name Questions Weight
01 Advanced Object-Oriented Programming and Core Syntax 7
15%
02 Abstract Classes, Metaclasses, and Exception Groups 5
12%
03 Data Modeling, Object Mechanics, and Type Systems 9
19%
04 Advanced Text Processing, String Formatting, and Security 5
12%
05 Code Development and Maintenance: Conventions, Best Practices, and Standardization 7
15%
06 Communication with Services and Logging 7
15%
07 Collaborative Engineering and AI-Assisted Development 5
12%
Total 45 100%

PCPP1-32-102 Exam Syllabus

Blueprint version 1.3 · Last revised November 6, 2026 · 33 objectives across seven sections

View the complete PCPP1-32-102 syllabus Expand to see all seven sections and their assessment requirements
Section 01

Advanced Object-Oriented Programming and Core Syntax

15% 7 questions · 5 objectives

Python Object Protocols and Decorators (3 items)

Objective 1.1 Perform Python Core Syntax Operations with Special Methods (1 item)
  1. Explain the purpose of Python special methods and their relationship to built-in language operations.
  2. Identify special methods used for comparisons, numeric operations, initialization, object representation, attribute access, and container operations.
  3. Explain the roles of methods such as __eq__(), __abs__(), __init__(), __str__(), __instancecheck__(), __getattr__(), and __getitem__().
  4. Analyze how Python invokes special methods in response to operators, expressions, and built-in operations.
  5. Implement selected special methods to customize object behavior.
  6. Extend class implementations to support additional language-level operations.
Objective 1.2 Design and Apply Function and Class Decorators (2 items)
  1. Explain the purpose and behavior of function decorators and class decorators.
  2. Distinguish between decorating a function with another function and decorating a function with a class.
  3. Construct decorators using wrappers and appropriate callable objects.
  4. Implement parameterized decorators and decorator factories.
  5. Preserve wrapped-function metadata using functools.wraps.
  6. Analyze decorator stacking and the order in which multiple decorators are applied.
  7. Explain the relationship between decorator syntax and the equivalent explicit function or class transformation.
  8. Implement callable decorator classes using __call__() and __init__().
  9. Trace the execution of decorated functions and identify the resulting behavior.

Class Methods and Attribute Management (3 items)

Objective 1.3 Design and Use Class Methods and Static Methods (1 item)
  1. Explain why Python provides instance methods, class methods, and static methods.
  2. Distinguish between the responsibilities and access patterns of these method types.
  3. Define and invoke class methods using @classmethod.
  4. Define and invoke static methods using @staticmethod.
  5. Explain the role of the cls parameter in class methods.
  6. Use class methods to access or modify class-level state and implement alternative object-creation patterns.
Objective 1.4 Implement Properties and Descriptors for Attribute Management (2 items)
  1. Explain the descriptor protocol and the responsibilities of __get__(), __set__(), and __delete__().
  2. Describe how descriptors influence attribute access, assignment, and deletion.
  3. Distinguish between data descriptors and non-data descriptors.
  4. Analyze attribute lookup precedence involving descriptors, instance namespaces, and class attributes.
  5. Implement reusable descriptor classes to manage attribute behavior.
  6. Use __set_name__() to associate a descriptor with the attribute name defined in its owner class.
  7. Diagnose unexpected attribute behavior caused by interactions between __dict__, data descriptors, and non-data descriptors.

Extending Built-in Classes (1 items)

Objective 1.5 Extend Built-in Python Classes Through Subclassing (1 item)
  1. Explain the purpose of subclassing Python's built-in classes.
  2. Identify inherited properties, methods, and behaviors of built-in collection and object types.
  3. Create subclasses that extend the functionality of built-in classes.
  4. Override inherited methods and customize class behavior while preserving appropriate base-class functionality.
Back to syllabus contents ↑
Section 02

Abstract Classes, Metaclasses, and Exception Groups

12% 5 questions · 4 objectives

Abstract Classes and Metaprogramming (2 items)

Objective 2.1 Define and Implement Abstract Classes and Methods (1 item)
  1. Explain the purpose of abstract classes and abstract methods.
  2. Define abstract classes and declare abstract methods.
  3. Implement concrete subclasses that satisfy abstract method requirements.
  4. Override abstract methods appropriately in derived classes.
  5. Construct inheritance hierarchies involving multiple abstract base classes.
  6. Explain how abstract classes support interface consistency and reusable object-oriented design.
Objective 2.2 Explain and Apply Metaprogramming Concepts (1 item)
  1. Explain the purpose of metaprogramming and identify appropriate use cases.
  2. Describe the relationship between classes, metaclasses, and the built-in type class.
  3. Explain how the type() function can be used to inspect or construct classes.
  4. Inspect class-related attributes, including __name__, __class__, __bases__, and __dict__.
  5. Analyze how metaclasses interact with class variables and class methods.
  6. Explain how metaprogramming can modify or control class behavior.

Advanced Exception Management (3 items)

Objective 2.3 Analyze Advanced Exception Objects and Chaining (2 items)
  1. Explain how Python represents exceptions as objects.
  2. Inspect exception attributes to obtain information about error conditions.
  3. Distinguish between implicit and explicit exception chaining.
  4. Analyze the roles of __context__ and __cause__.
  5. Inspect traceback information using __traceback__.
  6. Enrich exception information using add_note().
  7. Explain how re-raising and exception suppression affect error reporting.
  8. Analyze the use of raise ... from ... and raise ... from None.
  9. Diagnose exception-handling code that unintentionally masks the original failure.
Objective 2.4 Analyze and Handle Exception Groups (1 item)
  1. Explain the purpose of ExceptionGroup and how it represents multiple related exceptions.
  2. Describe how exception groups propagate through Python programs.
  3. Handle selected sub-exceptions using except*.
  4. Analyze how partial matches affect the propagation of unhandled sub-exceptions.
  5. Trace exception handling in nested except* structures.
  6. Evaluate exception-group reporting in concurrent or multi-operation workflows.
  7. Compare exception groups with approaches that collect individual exceptions in ordinary lists.
  8. Explain how add_note() can improve diagnostic information associated with grouped exceptions.
Back to syllabus contents ↑
Section 03

Data Modeling, Object Mechanics, and Type Systems

19% 9 questions · 6 objectives

Object Identity, Copying, and Persistence (2 items)

Objective 3.1 Apply Shallow and Deep Copying Operations (1 item)
  1. Distinguish between object identity, value equality, and references to objects.
  2. Explain the differences between shallow copying and deep copying.
  3. Use id() and the is operator to analyze object identity.
  4. Explain how copying affects mutable and immutable objects.
  5. Use the copy module and its copy() and deepcopy() functions.
  6. Trace object relationships and mutations after shallow and deep copying.
Objective 3.2 Serialize and Deserialize Python Objects (1 item)
  1. Explain object persistence, serialization, and deserialization.
  2. Identify appropriate uses and limitations of Python object serialization.
  3. Use the pickle module to serialize and deserialize supported Python objects.
  4. Apply dumps() and loads() to work with serialized byte streams.
  5. Explain how the shelve module stores serialized objects in a persistent dictionary-like structure.
  6. Create and access shelf objects using appropriate file-access modes.
  7. Analyze how serialization and deserialization affect object data and application behavior.

Structured Data Formats (3 items)

Objective 3.3 Process Structured Data Using CSV, JSON, and XML (3 items)
  1. Select an appropriate data interchange format based on the data structure and intended application.
  2. Explain the structure and characteristics of CSV files, including delimiters and limitations relating to data types and encoding information.
  3. Read and write CSV data using csv.reader() and csv.writer().
  4. Process CSV records using csv.DictReader() and csv.DictWriter().
  5. Explain the syntax, supported data types, and structural characteristics of JSON.
  6. Relate JSON data structures to corresponding native Python types.
  7. Serialize and deserialize structured data using JSON.
  8. Explain the structure of XML documents, including elements, attributes, namespaces, and schema concepts.
  9. Parse XML documents and navigate their structures.
  10. Locate XML elements using find() and findall().
  11. Construct and modify XML documents.
  12. Analyze the suitability of CSV, JSON, and XML for different data exchange requirements.

Type Systems and Data Modeling (3 items)

Objective 3.4 Apply Type Hints and Type Annotations (1 item)
  1. Explain the purpose of type hints and type annotations.
  2. Recognize the syntax used to annotate variables, function parameters, and return values.
  3. Apply type annotations to improve code readability and documentation.
  4. Explain why ordinary Python type annotations are not enforced automatically at runtime.
  5. Describe how editors, static type checkers, and development tools use type information.
  6. Evaluate the benefits of annotations for code maintenance and collaboration.
Objective 3.5 Implement Advanced Dataclasses and Initialization Logic (2 items)
  1. Explain how @dataclass can generate methods such as __init__(), __repr__(), and __eq__().
  2. Define and use dataclasses to represent structured application data.
  3. Apply keyword-only fields using kw_only=True.
  4. Configure dataclasses using slots=True and field-level metadata.
  5. Use __post_init__() to perform additional initialization and calculate derived attributes.
  6. Analyze interactions between slots=True and frozen=True.
  7. Explain memory layout and mutation-related implications of different dataclass configurations.
  8. Compare dataclasses with NamedTuple and Pydantic models for selected data-modeling requirements.
  9. Evaluate data-modeling approaches based on clarity, flexibility, validation needs, and performance characteristics.

Resource Management (1 items)

Objective 3.6 Implement Context Managers and Manage Resource Lifecycles (1 item)
  1. Explain the context manager protocol and the roles of __enter__() and __exit__().
  2. Describe how context managers coordinate resource acquisition and release.
  3. Explain exception-handling behavior within context-managed blocks.
  4. Create class-based context managers using appropriate protocol methods.
  5. Recognize the purpose of AbstractContextManager.
  6. Create generator-based context managers using contextlib.contextmanager.
  7. Analyze resource leaks and cleanup failures involving exceptions.
  8. Trace exception propagation and cleanup behavior in generator-based context managers.
Back to syllabus contents ↑
Section 04

Advanced Text Processing, String Formatting, and Security

12% 5 questions · 4 objectives

Immutability and Data Protection (1 items)

Objective 4.1 Analyze Immutable Data Types and Their Uses (1 item)
  1. Explain why immutable data types are useful in Python programming.
  2. Describe the purpose and behavior of frozenset.
  3. Explain the concept and practical uses of immutable dictionary-like structures such as frozendict.
  4. Distinguish immutable objects from mutable objects.
  5. Analyze the behavior and limitations of frozen dataclasses.
  6. Compare frozen=True dataclasses with custom immutable object implementations.

Regular Expressions and Text Processing (2 items)

Objective 4.2 Apply Regular Expressions for Advanced Text Processing (2 items)
  1. Explain how regular expressions support pattern matching, searching, validation, and data extraction.
  2. Compile reusable patterns using re.compile().
  3. Search and match text using re.search() and re.match().
  4. Locate multiple matches using re.findall() and re.finditer().
  5. Transform and split text using re.sub() and re.split().
  6. Construct patterns using capturing groups, named capturing groups, and non-capturing groups.
  7. Analyze how grouping and matching behavior affect extracted results.
  8. Select appropriate regular expression operations for a specified text-processing task.

Advanced Formatting and Secure Templating (2 items)

Objective 4.3 Construct and Analyze Advanced String Formatting (1 item)
  1. Explain the compilation and evaluation characteristics of f-strings.
  2. Distinguish f-strings from str.format(), %-style formatting, and string.Template.
  3. Construct f-strings containing expressions and advanced formatting specifications.
  4. Use the f-string debugging specifier (=).
  5. Apply custom format specifications when formatting values.
  6. Analyze differences in execution behavior and runtime performance among string formatting approaches.
  7. Recognize the relationship between string formatting and generated bytecode.
  8. Diagnose formatting exceptions and name-resolution problems in complex or nested f-string expressions.
Objective 4.4 Evaluate Secure Dynamic Templating and Injection Risks (1 item)
  1. Explain how unsafe dynamic evaluation and interpolation can introduce security vulnerabilities.
  2. Recognize injection risks associated with untrusted values used in dynamically generated text.
  3. Describe the intended uses of string.Template and template string literals (t-strings).
  4. Analyze the behavior of template-based interpolation mechanisms.
  5. Evaluate different approaches to handling untrusted data in templating workflows.
  6. Select appropriate safeguards for applications that dynamically construct text or other structured content.
Back to syllabus contents ↑
Section 05

Code Development and Maintenance: Conventions, Best Practices, and Standardization

15% 7 questions · 5 objectives

Python Standards and Documentation (4 items)

Objective 5.1 Explain Python Enhancement Proposals and Python Philosophy (1 item)
  1. Explain the purpose of Python Enhancement Proposals (PEPs).
  2. Describe the role of PEPs in Python's design, development, and standardization.
  3. Recognize the purpose and structure of PEP 1.
  4. Explain the role of PEP 8 in defining Python coding style recommendations.
  5. Explain the principles expressed in PEP 20, The Zen of Python.
  6. Use import this to access the principles of Python's design philosophy.
  7. Explain the purpose of PEP 257 and its recommendations for docstrings.
Objective 5.2 Apply PEP 8 Coding Conventions and Best Practices (2 items)
  1. Explain the purpose of consistent coding conventions.
  2. Apply PEP 8 recommendations for indentation and continuation lines.
  3. Recognize recommendations for line length, line breaks, and blank lines.
  4. Apply appropriate conventions for whitespace, string quotes, and trailing commas.
  5. Organize module imports according to recommended practices.
  6. Explain recommendations relating to source-file encoding.
  7. Distinguish between block comments and inline comments.
  8. Apply appropriate naming conventions for modules, functions, classes, variables, and constants.
  9. Recognize general Python programming recommendations expressed by PEP 8.
  10. Identify code that does not follow established style conventions.
  11. Explain how automated checkers can support consistent application of coding standards.
Objective 5.3 Apply PEP 257 Documentation Conventions (1 item)
  1. Explain the purpose of docstrings in Python programs.
  2. Distinguish docstrings from ordinary code comments.
  3. Create docstrings for modules, classes, functions, and methods where appropriate.
  4. Access existing documentation through object attributes and documentation tools.
  5. Distinguish between one-line and multi-line docstrings.
  6. Apply relevant PEP 257 recommendations for documentation structure and formatting.
  7. Explain how consistent documentation improves code understanding and maintenance.

Automated Code Quality and Coverage (3 items)

Objective 5.4 Use Linters, Formatters, and Code Quality Tools (2 items)
  1. Distinguish between static analyzers, linters, auto-formatters, code fixers, and static type checkers.
  2. Explain the kinds of problems different code quality tools can identify.
  3. Configure and use linters such as Flake8, Pylint, and Ruff.
  4. Use formatting and import-organization tools such as Black, isort, and Ruff.
  5. Explain how automated fixes differ from diagnostic-only checks.
  6. Apply appropriate suppression mechanisms, including # noqa and # pylint: disable.
  7. Distinguish between inline suppressions, scoped suppressions, and configuration-level overrides.
  8. Evaluate when suppressing a diagnostic is justified and when correcting the underlying code is preferable.
Objective 5.5 Analyze Dead Code and Code Coverage (1 item)
  1. Explain the concept of dead code and why unnecessary or unreachable code can create maintenance problems.
  2. Describe how code coverage tools collect execution information.
  3. Interpret coverage results to identify unexecuted statements and branches.
  4. Recognize suspicious or unused execution paths that require further investigation.
  5. Explain how coverage analysis can support code maintenance and quality improvement.
Back to syllabus contents ↑
Section 06

Communication with Services and Logging

15% 7 questions · 5 objectives

Network Programming and Web Services (3 items)

Objective 6.1 Explain Fundamental Network Programming Concepts (1 item)
  1. Define and distinguish domains, network addresses, ports, and communication protocols.
  2. Explain the purpose of Uniform Resource Identifiers (URIs) and Uniform Resource Locators (URLs).
  3. Distinguish between URIs and URLs.
  4. Explain client-server communication models.
  5. Distinguish between connection-oriented and connectionless communication.
  6. Recognize how basic networking concepts apply to Python applications.
Objective 6.2 Use HTTP in Python Applications (1 item)
  1. Explain the purpose and general operation of the HTTP protocol.
  2. Recognize differences between HTTP protocol versions.
  3. Explain the purposes of HTTP methods, including GET, POST, PUT, DELETE, and PATCH.
  4. Distinguish between informational, successful, redirection, client-error, and server-error response status categories.
  5. Select appropriate HTTP methods for common application operations.
  6. Use Python HTTP-related libraries and modules, including urllib, http, and requests.
  7. Interpret the structure and results of basic HTTP interactions.
Objective 6.3 Interact with REST Web Services (1 item)
  1. Explain Representational State Transfer (REST) as an architectural style.
  2. Describe REST constraints, including client-server separation, statelessness, cacheability, uniform interfaces, and layered systems.
  3. Identify common elements of REST APIs, including resources, endpoints, requests, responses, and data interchange formats.
  4. Explain how HTTP methods relate to resource-oriented API operations.
  5. Consume REST APIs from Python applications.
  6. Perform basic create, read, update, and delete (CRUD) operations against web services.
  7. Analyze responses returned by REST APIs and select appropriate follow-up operations.

Database Programming (2 items)

Objective 6.4 Implement Database Operations Using Python (2 items)
  1. Explain how Python applications communicate with relational databases.
  2. Describe the purpose of the sqlite3 module and SQLite databases.
  3. Create and close database connections using appropriate connection methods.
  4. Create database tables and define basic structures.
  5. Construct SQL statements using SELECT, INSERT INTO, UPDATE, and DELETE.
  6. Execute SQL statements using cursor methods such as execute() and executemany().
  7. Retrieve query results using fetchone() and fetchall().
  8. Perform database create, read, update, and delete operations.
  9. Explain transaction boundaries and their role in maintaining consistent data.
  10. Use parameterized or prepared statements appropriately when executing SQL operations.

Application Logging (2 items)

Objective 6.5 Configure and Analyze Application Logging (2 items)
  1. Explain the purpose of application event logging.
  2. Distinguish between logging levels and their intended uses.
  3. Configure logging behavior using logger objects.
  4. Create and use custom handlers and formatters.
  5. Access LogRecord attributes when constructing log messages and formats.
  6. Explain the hierarchy of logging.Logger objects.
  7. Analyze log record propagation between related loggers and modules.
  8. Configure structured logging to produce machine-readable records.
  9. Use structlog to create JSON-formatted log events with contextual information.
  10. Explain how structured logging can include context identifiers and diagnostic information such as stack traces.
Back to syllabus contents ↑
Section 07

Collaborative Engineering and AI-Assisted Development

12% 5 questions · 4 objectives

Collaborative Development and Lifecycle Management (2 items)

Objective 7.1 Apply Advanced Version Control Strategies (1 item)
  1. Explain the principles of trunk-based development, feature branching, release branches, and long-lived branches.
  2. Compare the advantages, limitations, and trade-offs of different branching strategies.
  3. Select an appropriate development and integration strategy based on team requirements.
  4. Explain how rebasing affects commit history and change integration.
  5. Apply cherry-picking and other history-management techniques where appropriate.
  6. Explain how commit history, tags, and releases support traceability, auditing, rollback, and maintenance.
  7. Use feature flags to separate the integration of code changes from the release of functionality.
  8. Evaluate how version control practices affect collaboration, maintainability, and release management.
Objective 7.2 Manage Technical Risks and Development Decisions (1 item)
  1. Identify and track technical risks, assumptions, blockers, and dependencies throughout a development lifecycle.
  2. Explain how unresolved dependencies and risks can affect software delivery and maintainability.
  3. Communicate technical changes and risks using an appropriate level of detail for the intended audience.
  4. Maintain decision records describing significant engineering decisions.
  5. Document alternatives, assumptions, and consequences associated with technical decisions.
  6. Establish escalation paths for issues that cannot be resolved within the development team.
  7. Explain how transparent technical communication supports coordinated project delivery.

AI-Assisted Engineering and Governance (3 items)

Objective 7.3 Integrate AI-Assisted Tools into Professional Engineering Workflows (2 items)
  1. Explain the capabilities and limitations of code-generation models and AI coding assistants.
  2. Describe the roles of retrieval-augmented tools and agent-based development systems.
  3. Select AI-assisted development approaches based on task complexity, available context, constraints, and risk.
  4. Construct prompts and supporting context for multi-step development tasks.
  5. Use AI assistance to explore and understand unfamiliar codebases.
  6. Apply AI-assisted tools to identify dependencies, generate tests, investigate defects, and propose code refactoring.
  7. Evaluate AI-assisted suggestions against project requirements and existing architectural constraints.
  8. Analyze the potential productivity benefits and associated costs of AI-assisted workflows.
  9. Consider review effort, defect risk, and maintainability when evaluating AI-generated changes.
  10. Identify situations in which autonomous or semi-autonomous AI actions require additional safeguards or explicit human approval.
Objective 7.4 Apply Governance and Accountability to AI-Assisted Development (1 item)
  1. Identify risks associated with AI-generated software, including incorrect or nonexistent APIs, insecure implementations, and hidden dependencies.
  2. Recognize licensing, intellectual property, data leakage, and provenance concerns associated with AI-generated artifacts.
  3. Select validation approaches appropriate to the complexity and risk of proposed AI-assisted changes.
  4. Verify generated code and technical claims against authoritative documentation and source code.
  5. Use tests and independent evidence to evaluate AI-generated implementations.
  6. Follow organizational policies governing confidential information, proprietary code, credentials, intellectual property, and external AI services.
  7. Explain the responsibilities of developers and reviewers when incorporating AI-generated code into projects.
  8. Identify circumstances requiring explicit human approval before AI-generated artifacts are committed, deployed, or used in production.
  9. Retain human responsibility for the correctness, security, compliance, and consequences of the final implementation.
Back to syllabus contents ↑

Minimally Qualified Candidate (MQC) Profile

A minimally qualified PCPP1-32-102 candidate combines advanced Python language knowledge, practical programming ability, and professional engineering judgment to build, analyze, improve, and maintain Python applications.

OOP & Core Syntax

Can customize object behavior with special methods, design decorators, use class and static methods, implement descriptors, and extend built-in classes.

Advanced Classes & Exceptions

Can implement abstract classes, apply metaprogramming concepts, analyze exception chaining and tracebacks, and handle ExceptionGroup workflows.

Data Modeling & Type Systems

Can reason about copying and persistence, process CSV, JSON, and XML, apply type hints, design dataclasses, and manage resources with context managers.

Text Processing & Security

Can evaluate immutable data models, apply regular expressions, use advanced string formatting, and recognize injection risks in dynamic templating.

Code Quality & Standards

Can apply PEP 8, PEP 20, and PEP 257, use linters and formatters, and interpret code coverage to investigate unexecuted or unnecessary paths.

Services, Databases & Logging

Can work with networking concepts, HTTP and REST services, relational databases and SQL, and configure structured application logging.

Collaborative Engineering & AI

Can apply advanced version control strategies, manage technical risks and decisions, and use AI-assisted development with validation, governance, and human oversight.

Pass the PCPP1-32-102 Exam

The passing score is 72%. The passing standard is finalized based on psychometric analysis, item performance, exam-pool difficulty, and the minimum competency standard defined for the certification.

72% Passing score

Ready to demonstrate professional Python software development skills?

Explore the PCPP1 certification requirements and prepare for PCPP1-32-102.

Explore PCPP1 Certification