German: Lehrveranstaltungskonzept. Please read it carefully at the beginning of the class, and return to it as often as necessary.


It is the first time I’m giving this class. The syllabus is likely change in the course of the semester, but each change will be communicated in class.

Learning outcomes#

After successful completion of the course, you will:

  • be able to read and write programs in the Python programming language.

  • understand how to use basic programming control flows (branches and loops) and data structures (numbers and collections).

  • know how to write and structure programs of several dozens of lines of code, including scripts and functions.

  • be able to read commonly used data formats in atmospheric sciences (csv, NetCDF), process the data for simple analyses (averages, quality filter), and plot the results of your analyses.

  • have a basic knowledge of formal code testing (pytest, asserts).

  • know how to install a programming environment with appropriate additional packages on your own computer, and use it to solve common programming tasks of the atmospheric sciences.

Most importantly: you will be able to expand and deepen your programming skills independently!


The targeted audience for this lecture are students at the bachelor level without previous experience in programming. I assume a background in atmospheric sciences (introduction lecture), with some knowledge of math and physics, and some interest for scientific analysis and number crunching!

Organisation of the class#

The class is taught in English. It is okay to ask questions in German!

This class follows the flipped classroom model. You will acquire new knowledge at home by reading online materials (and watching videos when appropriate). We will then use the time together in class to discuss the materials and write code.

The semester is 15 weeks long. Each week will always be organised as such:

  • On Wednesdays (after the assignments presentation class), you will receive instructions for the week to come (which materials to read/watch, and one homework assignment). You study them at home during the week.

  • On Tuesdays (08h15-10h00), we meet for a discussion class. We will start the hour with a short, individual online assessment, for you to check if you understood the materials correctly. Based on your own assessment, you pick the topics and questions you would like to discuss in class. We work on the assignments together.

  • On Wednesdays (08h15-09h00), we meet to discuss the assignment solutions (assignments are mandatory but not graded, see “Grading” below)

  • New week: start again!


The class grants you 5 ECTS if successfully passed: in theory, this represents 8 to 10 hours work per week (not including holidays). For this course, it means that you will spend at least twice as much time doing homework than sitting in class.

I strongly recommend to work regularly for the class. Programming is quite different to other disciplines, and “doing nothing for a few months” cannot be replaced by a “no-sleep-48-hours-push” at the end of semester. Programming is a bit like learning how to ski or climb: it is best learned by doing, and you will notice that regular practice will make you better each week.


The lecture will be graded based on four elements:

  1. participation to the weekly assignments (mandatory but not graded)

  2. mid-term exam: 10% (Tue 2023-05-02)

  3. a programming project at the end of the semester: 30% (in group)

  4. final exam at the end of the semester: 60% (Tue 2023-06-27)

A positive evaluation of each of these elements is mandatory to pass the class!

Weekly assignments

Each Wednesday, we will discuss the weekly assignment solutions together. Before the class, each student will have to upload their solution to OLAT (deadline 08h00). I will then select one or two solutions (at random) as a basis for the class discussion. This assignment is not graded, and it’s okay (or even expected!) to make mistakes. However, it is mandatory to upload your solution each week (you have two “jokers” that you may use at your wish during the semester). You can also decide to stay anonymous if you prefer your name not to be attached to your solution during discussion. The mandatory exercises start at week 02.

Programming project

At the end of the semester, you will be given a programming project to realize over several weeks. Ideally, it will be a project that raises your interest: plotting climate or (live) weather data, etc. The grading will be explained once the project starts.

Mid-term exam

The mid-term exam (~45’, OLAT-exam with presence in class) will take place on Tue 2023-05-02 at 08:15.


The final exam (~90’, OLAT-exam with presence in class) will take place on Tue 2023-06-27 at 08:15.

Bonus points

There will be bonus points for anyone pointing me to typos / mistakes / broken links / incomprehensible or difficult passages in the lecture notes. Send me an email or open an issue on GitHub!

Weekly lesson plan#

The first half of the class will be heavily based on the “Python for Everybody (PY4E)” online textbook, which will teach us most of the fundamentals. Towards the second half of the semester, we will shift our focus towards scientific python, which can be seen as a special “branch” of the language.

Mid-term exam: 02.05.2023

Start projects: 24.05.2023. Submission deadline: 11.06.2023.

Final exam: 27.06.2023

You will notice that there are 10 weekly units for a 15 weeks long semester: this is expected since some weeks contain holidays or I am traveling. Furthermore, some weeks will be kept free to work on your projects or learn for the exams.