Course Outline
Day 1 — Solid Python Foundations & Developer Tooling
Modern Python Features and Type Systems
- Essentials of typing, generics, Protocols, and TypeGuard utilities.
- Overview of Dataclasses, frozen dataclasses, and the attrs library.
- Application of pattern matching (PEP 634+) and idiomatic coding styles.
Code Quality and Developer Tooling
- Implementation of code formatters and linters: black, isort, flake8, and ruff.
- Performing static type checking using MyPy and pyright.
- Configuring pre-commit hooks to streamline developer workflows.
Project Management and Packaging
- Managing dependencies with Poetry and utilizing virtual environments.
- Best practices for package layout, entry points, and versioning.
- Processes for building and publishing packages to PyPI and private registries.
Day 2 — Design Patterns & Architectural Strategies
Applying Design Patterns in Python
- Creational patterns: Factory, Builder, and Singleton (including Pythonic adaptations).
- Structural patterns: Adapter, Facade, Decorator, and Proxy.
- Behavioral patterns: Strategy, Observer, and Command.
Core Architectural Principles
- Applying SOLID principles to complex Python codebases.
- Understanding Hexagonal/Clean Architecture and defining system boundaries.
- Implementing dependency injection patterns and managing configuration.
Modularity and Code Reusability
- Differentiating design approaches for library code versus application code.
- Defining stable APIs, interfaces, and adhering to semantic versioning.
- Managing configuration, secrets, and environment-specific settings effectively.
Day 3 — Concurrency, Asynchronous IO, and Performance Tuning
Concurrency and Parallel Processing
- Threading fundamentals and understanding the implications of the GIL.
- Utilizing multiprocessing and process pools for CPU-bound tasks.
- Deciding between concurrent.futures and multiprocessing for optimal performance.
Asynchronous Programming with asyncio
- Mastery of Async/await patterns, event loops, and task cancellation.
- Designing asynchronous libraries and ensuring interoperability with synchronous code.
- Handling IO-bound operations, backpressure, and implementing rate limiting.
Profiling and Performance Optimization
- Utilizing profiling tools: cProfile, pyinstrument, perf, and memory_profiler.
- Optimizing critical code paths and integrating C-extensions or Numba where beneficial.
- Monitoring latency, throughput, and resource utilization metrics.
Day 4 — Testing, CI/CD, Observability, and Deployment
Testing Strategies and Automation
- Unit testing and fixture management with pytest; organizing test suites.
- Implementing property-based testing with Hypothesis and contract testing.
- Techniques for mocking, monkeypatching, and testing asynchronous code.
CI/CD, Release Management, and Monitoring
- Integrating tests and quality gates into GitHub Actions or GitLab CI pipelines.
- Creating reproducible container images with Docker using multi-stage builds.
- Enhancing application observability through structured logging, Prometheus metrics, and distributed 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.
- Runtime hardening techniques: resource limits, user privilege management, and container security.
Capstone Project & Evaluation
- Collaborative lab: Design and implement a small service applying patterns learned in the course.
- Establishing testing, type-checking, packaging, and CI pipelines for the project.
- Final review, code critique, and formulation of an actionable improvement plan.
Summary and Future Directions
Requirements
- Solid intermediate proficiency in Python programming.
- Working knowledge of object-oriented programming concepts and fundamental testing practices.
- Practical experience with command-line interfaces and Git version control.
Target Audience
- Senior Python developers.
- Software engineers accountable for Python code quality and system architecture.
- Technical leads and MLOps/DevOps engineers who manage 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.