Course Outline
Day 1 — Robust Python Foundations & Tooling
Modern Python Features and Typing
- Typing fundamentals, generics, Protocols, and TypeGuard.
- Dataclasses, frozen dataclasses, and an overview of attrs.
- Pattern matching (PEP 634+) and its idiomatic application.
Code Quality and Tooling
- Code formatters and linters: black, isort, flake8, ruff.
- Static type checking utilizing MyPy and pyright.
- Pre-commit hooks and streamlined developer workflows.
Project Management and Packaging
- Dependency management using Poetry and virtual environments.
- Package layout, entry points, and versioning best practices.
- Building and publishing packages to PyPI and private registries.
Day 2 — Design Patterns & Architectural Practices
Design Patterns in Python
- Creational patterns: Factory, Builder, Singleton (Pythonic variants).
- Structural patterns: Adapter, Facade, Decorator, Proxy.
- Behavioral patterns: Strategy, Observer, Command.
Architectural Principles
- Application of SOLID principles within Python codebases.
- Hexagonal/Clean Architecture and system boundaries.
- Dependency injection patterns and configuration management.
Modularity and Reuse
- Distinguishing between library design and application code design.
- APIs, stable interfaces, and semantic versioning.
- Managing configuration, secrets, and environment-specific settings.
Day 3 — Concurrency, Async IO, and Performance
Concurrency and Parallelism
- Threading fundamentals and the implications of the GIL.
- Multiprocessing and process pools for CPU-bound tasks.
- Determining when to utilize concurrent.futures versus multiprocessing.
Async Programming with asyncio
- Async/await patterns, event loops, and cancellation mechanisms.
- Designing asynchronous libraries and ensuring interoperability with synchronous code.
- IO-bound patterns, backpressure management, and rate limiting.
Profiling and Optimization
- Profiling tools: cProfile, pyinstrument, perf, memory_profiler.
- Optimizing hot paths and employing C-extensions/Numba where appropriate.
- Measuring latency, throughput, and resource utilization.
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Unit testing and fixtures with pytest; effective test organization.
- Property-based testing with Hypothesis and contract testing.
- Mocking, monkeypatching, and testing asynchronous code.
CI/CD, Release, and Monitoring
- Integrating tests and quality gates into GitHub Actions/GitLab CI.
- Building reproducible containers using Docker and multi-stage builds.
- Application observability: structured logging, Prometheus metrics, and tracing.
Security, Hardening, and Best Practices
- Dependency auditing, SBOM basics, and vulnerability scanning.
- Secure coding practices for input validation and secrets management.
- Runtime hardening: resource limits, user rights, and container security.
Capstone Project & Review
- Team lab: design and implement a small service using patterns covered in the course.
- Implementation of testing, type-checking, packaging, and CI pipelines for the project.
- Final review, code critique, and formulation of an actionable improvement plan.
Summary and Next Steps
Requirements
- Solid intermediate-level proficiency in Python programming.
- 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 responsible for maintaining Python code quality and architectural integrity.
- Technical leads and MLOps/DevOps engineers who manage Python-based 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.