Course Outline
Day 1 — Solidifying Python Foundations and Tooling
Contemporary Python Features and Type Systems
- Essentials of typing, generics, Protocols, and TypeGuard
- Implementation of dataclasses, frozen dataclasses, and an overview of attrs
- Utilizing pattern matching (PEP 634+) and idiomatic application
Enhancing Code Quality and Tooling
- Employing code formatters and linters such as black, isort, flake8, and ruff
- Performing static type analysis using MyPy and pyright
- Integrating pre-commit hooks to streamline developer workflows
Managing Projects and Packaging
- Handling dependencies with Poetry and managing virtual environments
- Best practices for package layout, entry points, and versioning
- Constructing and publishing packages to PyPI and private registries
Day 2 — Design Patterns and Architectural Strategies
Applying Design Patterns in Python
- Creational patterns including Factory, Builder, and Singleton (Pythonic implementations)
- Structural patterns such as Adapter, Facade, Decorator, and Proxy
- Behavioral patterns like Strategy, Observer, and Command
Architectural Guidelines
- Applying SOLID principles to Python codebases
- Implementing Hexagonal/Clean Architecture and defining boundaries
- Utilizing dependency injection patterns and managing configuration
Ensuring Modularity and Reusability
- Distinguishing between library and application code design
- Defining APIs, maintaining stable interfaces, and applying semantic versioning
- Managing configuration, secrets, and environment-specific settings
Day 3 — Concurrency, Asynchronous IO, and Performance Optimization
Concurrency and Parallel Processing
- Fundamentals of threading and understanding GIL implications
- Using multiprocessing and process pools for CPU-intensive tasks
- Determining when to utilize concurrent.futures versus multiprocessing
Asynchronous Programming with asyncio
- Mastering Async/await patterns, event loops, and cancellation mechanisms
- Designing async libraries and ensuring interoperability with synchronous code
- Handling IO-bound patterns, backpressure, and rate limiting
Profiling and Performance Tuning
- Utilizing profiling tools such as cProfile, pyinstrument, perf, and memory_profiler
- Optimizing critical code paths and employing C-extensions/Numba where suitable
- Monitoring latency, throughput, and resource consumption
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Methodologies and Automation
- Structuring unit tests and fixtures with pytest
- 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 Operational Best Practices
- Conducting dependency audits, understanding SBOM basics, and vulnerability scanning
- Adopting secure coding practices for input validation and secrets management
- Implementing runtime hardening: resource limits, user permissions, and container security
Capstone Project and Evaluation
- Collaborative lab: designing and building a small service using course-derived patterns
- Applying testing, type-checking, packaging, and CI pipelines to the project
- Conducting final reviews, code critiques, and developing actionable improvement plans
Conclusion and Future Steps
Requirements
- Solid intermediate proficiency in Python programming
- Understanding of object-oriented programming concepts and basic testing practices
- 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, MLOps, and 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.