Course Outline
Day 1 — Solidifying Python Foundations & Developer Tooling
Modern Python Features & Type Systems
- Core typing concepts, generics, Protocols, and TypeGuard
- Utilizing dataclasses, frozen dataclasses, and an overview of attrs
- Pattern matching (PEP 634+) and its idiomatic application
Code Quality & Tooling Ecosystem
- Implementing code formatters and linters: black, isort, flake8, ruff
- Performing static type analysis with MyPy and pyright
- Setting up pre-commit hooks and optimizing developer workflows
Project Management & Packaging
- Managing dependencies with Poetry and configuring virtual environments
- Best practices for package layout, entry points, and versioning
- Building and distributing packages to PyPI and private registries
Day 2 — Design Patterns & Architectural Strategies
Applying Design Patterns in Python
- Creational patterns: Factory, Builder, Singleton (with Pythonic implementations)
- Structural patterns: Adapter, Facade, Decorator, Proxy
- Behavioral patterns: Strategy, Observer, Command
Architectural Core Principles
- Applying SOLID principles within Python codebases
- Implementing Hexagonal/Clean Architecture and defining system boundaries
- Utilizing dependency injection and managing configuration
Modularity & Reusability
- Differentiating between library design and application architecture
- Defining stable APIs, interfaces, and semantic versioning
- Managing configuration, secrets, and environment-specific settings
Day 3 — Concurrency, Asynchronous I/O, & Performance Tuning
Concurrency & Parallel Execution
- Threading fundamentals and the impact of the GIL
- Employing multiprocessing and process pools for CPU-intensive tasks
- Choosing between concurrent.futures and multiprocessing
Asynchronous Programming with asyncio
- Async/await patterns, event loop mechanics, and cancellation
- Designing async libraries and ensuring interoperability with synchronous code
- I/O-bound patterns, backpressure management, and rate limiting
Profiling & Optimization
- Using profiling tools: cProfile, pyinstrument, perf, memory_profiler
- Optimizing hot paths and leveraging C-extensions/Numba where suitable
- Measuring latency, throughput, and resource efficiency
Day 4 — Testing, CI/CD, Observability, & Deployment
Testing Strategies & Automation
- Unit testing and fixture management with pytest; structuring tests
- Property-based testing with Hypothesis and contract testing
- Mocking, monkeypatching, and testing asynchronous code
CI/CD, Release Management, & Monitoring
- Integrating tests and quality gates into GitHub Actions/GitLab CI
- Creating reproducible containers using Docker and multi-stage builds
- Enhancing application observability: structured logging, Prometheus metrics, and tracing
Security, Hardening, & Best Practices
- Dependency auditing, SBOM basics, and vulnerability scanning
- Secure coding practices for input validation and secrets management
- Runtime hardening: resource limits, user permissions, and container security
Capstone Project & Assessment
- Team exercise: Design and implement a small service utilizing course patterns
- Establishing testing, type-checking, packaging, and CI pipelines for the project
- Final review, code critique, and formulation of an actionable improvement plan
Summary & Future Steps
Requirements
- Proficient intermediate-level Python programming skills
- Working knowledge of object-oriented programming and fundamental testing concepts
- Practical experience with command-line interfaces and Git version control
Target Audience
- Senior Python developers
- Software engineers accountable for code quality and system architecture
- Technical leads and MLOps/DevOps engineers managing Python-based 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.