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 idiomatic application
Code Quality and Tooling
- Code formatters and linters: black, isort, flake8, ruff
- Static type checking using MyPy and pyright
- Pre-commit hooks and streamlined developer workflows
Project Management and Packaging
- Dependency management via Poetry and virtual environments
- Package structure, 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 adaptations)
- 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 designing library code and application code
- 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
- Selecting between concurrent.futures and 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 utilities: cProfile, pyinstrument, perf, memory_profiler
- Optimising hot paths and utilising C-extensions/Numba where suitable
- Measuring latency, throughput, and resource utilisation
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Unit testing and fixture management with pytest; test organisation
- Property-based testing using 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
- Constructing reproducible containers with Docker and multi-stage builds
- Application observability: structured logging, Prometheus metrics, and tracing
Security, Hardening, and Best Practices
- Dependency auditing, SBOM fundamentals, and vulnerability scanning
- Secure coding practices for input validation and secrets management
- Runtime hardening: resource limits, user permissions, and container security
Capstone Project & Review
- Team lab: designing and implementing a small service using course patterns
- Testing, type-checking, packaging, and CI pipeline setup for the project
- Final review, code critique, and formulation of an actionable improvement plan
Summary and Next Steps
Requirements
- Solid intermediate-level Python programming proficiency.
- Working familiarity with object-oriented programming concepts and fundamental testing practices.
- Proficiency in using the command line and Git.
Target Audience
- Senior Python developers.
- Software engineers accountable for Python code quality and architecture.
- Technical leads, MLOps/DevOps engineers, and professionals working within Python codebases.
Custom Corporate Training
Training solutions designed exclusively for businesses.
- Customized Content: We adapt the syllabus and practical exercises to the real goals and needs of your project.
- Flexible Schedule: Dates and times adapted to your team's agenda.
- Format: Online (live), In-company (at your offices), or Hybrid.
Price per private group, online live training, starting from 5200 € + VAT*
Contact us for an exact quote and to hear our latest promotions
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.