Course Outline
Day 1 — Robust Python Foundations & Tooling
Modern Python Features and Typing
- Foundations of typing, including generics, Protocols, and TypeGuard
- Implementation of dataclasses, frozen dataclasses, and an overview of attrs
- Pattern matching (PEP 634+) and idiomatic application
Code Quality and Tooling
- Utilizing code formatters and linters: black, isort, flake8, and ruff
- Performing static type checks with MyPy and pyright
- Integrating pre-commit hooks and streamlining developer workflows
Project Management and Packaging
- Managing dependencies with Poetry and setting up virtual environments
- Optimizing package layout, entry points, and versioning strategies
- Building and publishing packages to PyPI and private registries
Day 2 — Design Patterns & Architectural Practices
Design Patterns in Python
- Creational patterns: Factory, Builder, and Singleton (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 patterns and managing configuration
Modularity and Reuse
- Distinguishing between designing library code and application code
- Defining 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 impact of the GIL
- Using multiprocessing and process pools for CPU-bound tasks
- Choosing between concurrent.futures and multiprocessing
Async Programming with asyncio
- Mastery of Async/await patterns, event loops, and cancellation
- Designing async libraries and ensuring interoperability with synchronous code
- Handling IO-bound patterns, backpressure, and rate limiting
Profiling and Optimization
- Using profiling tools: cProfile, pyinstrument, perf, and memory_profiler
- Optimizing hot paths and leveraging C-extensions or Numba where suitable
- Measuring latency, throughput, and resource utilization
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Unit testing and fixture management with pytest; organizing tests
- 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 or GitLab CI
- Creating reproducible containers with Docker and multi-stage builds
- Enhancing application observability through structured logging, Prometheus metrics, and tracing
Security, Hardening, and Best Practices
- Conducting dependency audits, understanding SBOM basics, and performing vulnerability scans
- Adopting secure coding practices for input validation and secrets management
- Implementing runtime hardening: resource limits, user rights, and container security
Capstone Project & Review
- Team lab: designing and implementing a small service utilizing course patterns
- Integrating testing, type-checking, packaging, and CI pipelines for the project
- Final review, code critique, and development of an actionable improvement plan
Summary and Next Steps
Requirements
- Strong proficiency in intermediate-level Python programming
- Familiarity with object-oriented programming concepts and basic testing practices
- Practical experience with command-line interfaces and Git version control
Target Audience
- Senior Python developers
- Software engineers tasked with ensuring Python code quality and architectural integrity
- Technical leads, MLOps, and DevOps engineers working within Python codebases
Testimonials (3)
everything was perfect
Florin Vrincianu
Course - Python Programming Fundamentals
The adaptation of exos to our context and the consideration of our request
Amel Guetat - EURO-INFORMATION DEVELOPPEMENTS
Course - Fraud Detection with Python and TensorFlow
Machine Translated
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.