Course Outline
Day 1 — Solid Python Fundamentals & Tooling
Contemporary Python Features and Type Safety
- Essentials of typing, generics, Protocols, and TypeGuard
- Utilizing dataclasses, frozen dataclasses, and an overview of attrs
- Applying pattern matching (PEP 634+) and idiomatic implementations
Code Quality and Developer Tools
- Employing code formatters and linters such as black, isort, flake8, and ruff
- Performing static type analysis using MyPy and pyright
- Configuring Pre-commit hooks and optimizing developer workflows
Project Management and Packaging
- Managing dependencies via Poetry and virtual environments
- Adopting best practices for package layout, entry points, and versioning
- Building and distributing packages to PyPI and private registries
Day 2 — Design Patterns & Architectural Strategies
Design Patterns in Python
- Creational patterns: Factory, Builder, Singleton (with Pythonic adaptations)
- Structural patterns: Adapter, Facade, Decorator, Proxy
- Behavioral patterns: Strategy, Observer, Command
Architectural Principles
- Applying SOLID principles to Python codebases
- Implementing Hexagonal/Clean Architecture and defining clear boundaries
- Utilizing dependency injection patterns and managing configuration
Modularity and Reusability
- Distinguishing between library design and application code
- Defining APIs, stable interfaces, and semantic versioning
- Managing configuration, secrets, and environment-specific settings
Day 3 — Concurrency, Asynchronous IO, and Performance
Concurrency and Parallel Execution
- Understanding threading fundamentals and GIL implications
- Using multiprocessing and process pools for CPU-bound workloads
- Deciding when to use concurrent.futures versus multiprocessing
Asynchronous Programming with asyncio
- Mastering Async/await patterns, event loops, and cancellation mechanisms
- Designing asynchronous libraries and ensuring interoperability with synchronous code
- Handling IO-bound patterns, backpressure, and rate limiting
Profiling and Optimization
- Utilizing profiling tools such as cProfile, pyinstrument, perf, and memory_profiler
- Optimizing critical paths and leveraging C-extensions or Numba where suitable
- Measuring latency, throughput, and resource consumption
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Conducting unit testing and fixture management with pytest; organizing tests effectively
- Implementing property-based testing with Hypothesis and contract testing
- Applying mocking, monkeypatching, and testing asynchronous code
CI/CD, Release Management, and Monitoring
- Integrating tests and quality gates into GitHub Actions/GitLab CI
- Creating reproducible containers using Docker and multi-stage builds
- Enhancing application observability through structured logging, Prometheus metrics, and tracing
Security, Hardening, and Best Practices
- Performing dependency audits, understanding SBOM basics, and vulnerability scanning
- Applying secure coding practices for input validation and secret management
- Implementing runtime hardening through resource limits, user rights, and container security
Capstone Project & Evaluation
- Team lab: Design and implement a small service utilizing patterns learned in the course
- Establishing 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
- Proficient intermediate-level Python programming experience
- Familiarity with object-oriented programming concepts and basic testing practices
- Practical experience using the command line and Git
Target Audience
- Senior Python developers
- Software engineers accountable for Python code quality and architecture
- Technical leads and MLOps/DevOps engineers working 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.