Materials Courses Software Engineering Contact 🇩🇪 🇬🇧

Advanced Python

How do I develop a large program? This course takes you past the language syntax towards the deeper questions in programming. While writing an object-oriented software in Python, you will make many decisions regarding the project setup, structure and composition of classes. I would like to show you time-tested patterns to make these decisions in a robust way.

Goals

During the course, you will develop a Python program from scratch. You start by setting up a clean project structure. When the code becomes larger, you will decompose it into functions and modules. When it becomes even larger, you will also need classes. To neep the code working as you are making changes, you will also need an automated test suite and a few static code checkers. The course discusses typical challenges in a software project and strategies to overcome them.

The main goal of the course is to enable you to write well-structured Python software.

Topics

Part 1: Setting up a Python project

Create a virtual environment
What is a Python package?
Managing dependencies with uv
How to write a pyproject.toml file?

Part 2: Functional patterns in Python

Mechanics of Python functions
Metafunctions in Python
Type annotated functions
Generators
Decorators
Refactoring into functions

Part 3: Automated tests

Writing tests with pytest
Fixtures and test configuration
Test parametrization
Static code checkers
Checking type hints

Part 4: Object-Oriented Programming

Structuring data with classes
How to design classes?
Writing methods
Magic methods
Refactoring into classes

How the course works

The course consists of a smaller theoretical part and plenty of exerrcises. During the exercises, you will implement a Python application step by step, incorporating key concepts from the theoretical parts. There will be some extra problems that come your way that you need to solve as a team.

The course material contains background reading and code examples that you can use to deepen your knowledge after the course. During classes, you get support with technical questions. We will also conduct some code reviews together. The course materials are permanently available on under a Creative Commons 4.0 License.

Prerequisites

To participate in the course, you should be be familiar with basic Python data structures and commands. You should be able to execute standalone Python programs and communicate with a git repository. This course is also suited for people who have mostly worked in Jupyter notebooks.

Pre-Register

Please use the form to signal interest in a course. I will get in touch with you to figure out dates and pricing.