Course Outline
Day 1 — Solid Python Foundations & Modern Tooling
Contemporary Python Features and Static Typing
- Foundations of typing, generics, Protocols, and TypeGuard implementation
- Overview of dataclasses, frozen dataclasses, and the attrs library
- Pattern matching (PEP 634+) and its idiomatic application
Code Quality Standards and Developer Tooling
- Utilizing code formatters and linters: black, isort, flake8, and ruff
- Performing static type checking using MyPy and pyright
- Implementing pre-commit hooks and optimizing developer workflows
Project Management and Software Packaging
- Managing dependencies with Poetry and setting up virtual environments
- Best practices for package layout, entry points, and versioning
- Processes for building and publishing packages to PyPI and private registries
Day 2 — Design Patterns & Architectural Strategies
Applying Design Patterns in Python
- Creational patterns: Factory, Builder, and Singleton (with Pythonic adaptations)
- Structural patterns: Adapter, Facade, Decorator, and Proxy
- Behavioral patterns: Strategy, Observer, and Command
Core Architectural Principles
- Applying SOLID principles within Python codebases
- Implementing Hexagonal/Clean Architecture and defining system boundaries
- Patterns for dependency injection and managing application configuration
Modularity and Code Reusability
- Distinguishing between library design and application development
- Defining APIs, maintaining stable interfaces, and adhering to semantic versioning
- Handling configuration, secrets, and environment-specific settings securely
Day 3 — Concurrency, Async IO, and Performance Optimization
Concurrency and Parallel Processing
- Understanding threading fundamentals and the implications of the GIL
- Using multiprocessing and process pools for CPU-intensive tasks
- Determining when to utilize concurrent.futures versus multiprocessing
Asynchronous Programming with asyncio
- Async/await patterns, event loop management, and cancellation handling
- Designing async libraries and ensuring interoperability with synchronous code
- Implementing IO-bound patterns, backpressure management, and rate limiting
Performance Profiling and Optimization
- Using profiling tools: cProfile, pyinstrument, perf, and memory_profiler
- Optimizing critical code paths and leveraging C-extensions or Numba where suitable
- Measuring key performance indicators such as latency, throughput, and resource usage
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Unit testing and fixture management with pytest; organizing test suites
- Property-based testing using Hypothesis and contract testing techniques
- Mocking, monkeypatching, and testing asynchronous code effectively
CI/CD Pipelines, Release Management, and Monitoring
- Integrating tests and quality gates into GitHub Actions or GitLab CI
- Creating reproducible containers using Docker and multi-stage builds
- Ensuring application observability through structured logging, Prometheus metrics, and tracing
Security, Hardening, and Industry Best Practices
- Dependency auditing, SBOM basics, and vulnerability scanning processes
- Secure coding practices for input validation and secret management
- Runtime hardening techniques: resource limits, user permissions, and container security
Capstone Project & Comprehensive Review
- Team lab: Design and implement a small service utilizing the patterns covered in the course
- Establishing testing, type-checking, packaging, and CI pipelines for the project
- Final review, code critique sessions, and formulating an actionable improvement plan
Summary and Future Pathways
Requirements
- Proficient intermediate-level Python programming proficiency
- Working knowledge of object-oriented programming concepts and fundamental testing principles
- Practical experience with command-line interfaces and Git version control
Target Audience
- Senior Python developers
- Software engineers tasked with maintaining code quality and architectural integrity for Python projects
- Technical leads and MLOps/DevOps engineers who interact with Python codebases
Testimonials (2)
everything was perfect
Florin Vrincianu
Course - Python Programming Fundamentals
Hands-on exercises related to content really helps to understand more about each topic. Also, style of start class with lecture and continue with hands-on exercise is good and helpful to relate with the lecture that presented earlier.