Course Outline
Day 1 — Solidifying Python Foundations and Developer Tooling
Modern Python Features and Static Typing
- Core typing concepts, generics, Protocols, and TypeGuard
- Dataclasses, frozen dataclasses, and an overview of attrs
- Pattern matching (PEP 634+) and idiomatic application
Code Quality and Tooling
- Configuring formatters and linters: black, isort, flake8, ruff
- Implementing static type checking using MyPy and pyright
- Establishing pre-commit hooks and efficient developer workflows
Project Management and Packaging
- Managing dependencies via Poetry and virtual environments
- Optimizing package layout, entry points, and versioning practices
- Publishing packages to PyPI and private registries
Day 2 — Applying Design Patterns and Architectural Standards
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
Architectural Principles
- Applying SOLID principles to Python codebases
- Implementing Hexagonal/Clean Architecture and defining boundaries
- Utilizing dependency injection and robust configuration management
Modularity and Reuse
- Distinguishing design practices for library versus application code
- Defining APIs, stable interfaces, and adhering to semantic versioning
- Managing configuration, secrets, and environment-specific settings
Day 3 — Concurrency, Asynchronous I/O, and Performance Tuning
Concurrency and Parallelism
- Threading fundamentals and the impact of the GIL
- Using multiprocessing and process pools for CPU-bound workloads
- Determining when to choose concurrent.futures over multiprocessing
Async Programming with asyncio
- Async/await patterns, event loop management, and cancellation strategies
- Designing asynchronous libraries and ensuring interoperability with sync code
- Handling I/O-bound tasks, backpressure, and rate limiting
Profiling and Optimization
- Leveraging profiling tools: cProfile, pyinstrument, perf, and memory_profiler
- Optimizing hot paths and integrating C-extensions/Numba where beneficial
- Measuring latency, throughput, and resource utilization
Day 4 — Testing, CI/CD, Observability, and Deployment Strategies
Testing Strategies and Automation
- Unit testing, fixture management with pytest, and test organization
- Property-based testing via Hypothesis and contract testing
- Mocking, monkeypatching, and strategies for testing asynchronous code
CI/CD, Release, and Monitoring
- Integrating tests and quality gates into GitHub Actions or GitLab CI
- Creating reproducible containers with Docker and multi-stage builds
- Implementing application observability: structured logging, Prometheus metrics, and tracing
Security, Hardening, and Best Practices
- Conducting dependency audits, generating SBOMs, and scanning for vulnerabilities
- Adopting secure coding practices for input validation and secrets management
- Runtime hardening: enforcing resource limits, user rights, and container security
Capstone Project & Review
- Team lab: Design and implement a small service utilizing course patterns
- Implementing testing, type-checking, packaging, and CI pipelines for the project
- Final review, code critique, and developing an actionable improvement plan
Summary and Next Steps
Requirements
- Strong intermediate-level proficiency in Python programming
- Familiarity with object-oriented programming concepts and basic testing
- Experience with command-line operations and Git
Audience
- Senior Python developers
- Software engineers responsible 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.