Course Outline
Day 1 — Robust Python Foundations & Tooling
Modern Python Features and Typing
- Foundations of typing, generics, Protocols, and TypeGuard
- Overview of dataclasses, frozen dataclasses, and attrs
- Pattern matching (PEP 634+) and idiomatic application
Code Quality and Tooling
- Implementation of code formatters and linters: black, isort, flake8, ruff
- Performing static type analysis with MyPy and pyright
- Integrating pre-commit hooks into developer workflows
Project Management and Packaging
- Managing dependencies via Poetry and utilizing virtual environments
- Best practices for package layout, entry points, and versioning
- Constructing and publishing packages to PyPI and private registries
Day 2 — Design Patterns & Architectural Practices
Design Patterns in Python
- Creational patterns: Factory, Builder, Singleton (with Python-specific implementations)
- Structural patterns: Adapter, Facade, Decorator, Proxy
- Behavioral patterns: Strategy, Observer, Command
Architectural Principles
- Applying SOLID principles within Python codebases
- Implementing Hexagonal/Clean Architecture and defining boundaries
- Utilizing dependency injection patterns and managing configuration
Modularity and Reuse
- Differentiating between library design and application design
- Establishing 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
- Utilizing multiprocessing and process pools for CPU-bound operations
- Determining when to employ concurrent.futures versus multiprocessing
Async Programming with asyncio
- Async/await paradigms, event loops, and cancellation mechanisms
- Designing asynchronous libraries and ensuring interoperability with synchronous code
- Handling IO-bound tasks, backpressure, and rate limiting
Profiling and Optimization
- Using profiling tools: cProfile, pyinstrument, perf, memory_profiler
- Optimizing critical code paths and leveraging C-extensions/Numba where suitable
- Assessing latency, throughput, and resource consumption
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Conducting unit testing and organizing tests with pytest fixtures
- Implementing property-based testing using Hypothesis and contract testing
- Applying mocking, monkeypatching, and testing asynchronous code
CI/CD, Release, and Monitoring
- Incorporating 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 scanning for vulnerabilities
- Adopting secure coding practices for input validation and secrets management
- Implementing runtime hardening: resource limits, user privileges, and container security
Capstone Project & Review
- Group laboratory: design and develop a small service utilizing patterns learned in the course
- Implementing testing, type-checking, packaging, and CI pipelines for the project
- Conducting a final review, code critique, and formulating an actionable improvement plan
Summary and Next Steps
Requirements
- Solid intermediate-level proficiency in Python programming
- Working knowledge of object-oriented programming and fundamental testing concepts
- Practical experience with command-line interfaces and Git
Target Audience
- Senior Python developers
- Software engineers accountable for Python code quality and system architecture
- Technical leads and MLOps/DevOps engineers engaged 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.