April 2022 / Software design for scientific computing

Part of Scientific Computing in Practice lecture series at Aalto University.

Audience: employees and students, intermediate or advanced level in Python. For this course we also warmly invite those who already know everything there is to know about Python.

About the course: Getting the desired end result is an important first step in writing your analysis script or program. But it is just the beginning of the journey to truly great software. In this course we set you on a path to thinking about the design of your code: how to make it obvious what the code does, that it is correct, efficient and elegant. As programmers, we are on this journey for our entire career. For example, we assume you know how to write a function in Python. In this course, we aim to teach you which function you should write.

We will present some design guidelines and discuss them together. Then, we will all implement a simple, but not trivial, data analysis pipeline. Next, we will review each-others code based on the design guidelines and note things that were designed well and things that could be improved. Finally, we will extend the goals of the analysis pipeline and re-work our code based on the feedback we received and things we learned from reading other people’s code. Hopefully, you will end up with a pearl of great code that can serve as inspiration for the code you’ll write from here on after.

We expect that course participants are familiar with the Python programming language, along with its basic packages. To test your knowledge of these basics (and point you to relevant documentation to fill in any gaps), we have designed the Gizmo challenge.


  • Susanne Merz, NBE, Aalto University

  • Thomas Pfau, Science IT, Aalto University

  • Marijn van Vliet, NBE, Aalto University

Place: Online, common Zoom link for all the sessions (Zoom link will be sent after registration).

Time, date (all times EET):






Theory session



First review sessions (half hour slot per person)



Second round of review sessions (half hour slots)



Recap session and closing

Course material: All course material can be found in this repository: https://github.com/susamerz/CDWAssignment.

Cost: Free of charge. Please note that we will need to limit the number of participants for this course, priority will be given to researchers from Aalto University.

Registration: You can register here https://forms.gle/GcbZpdfMPKuk5hME9

Credits: Credits are available for Aalto students and a course certificate can be provided on request for outsiders. Credits/certificate require full time participation and handling home work/assignments. Full course hours correspond roughly to 2 ECTS.

Setup instructions: To access the online course you need to have access to Zoom, either through the Zoom client or through a browser. To follow and participate in the workshop, we expect you to also have access to a Python installation. While it will be possible to complete the exercises with only the basic pythons setup, we recommend an anaconda installation for ease of use. You can refer to https://coderefinery.github.io/installation/python/ for installation instructions, ignoring the CodeRefinery specific parts. You will also need a working and configured git installation. Instructions at https://coderefinery.github.io/installation/git/.

Additional course info at: susanne.merz -at- aalto.fi, marijn.vanvliet -at- aalto.fi or thomas.pfau -at- aalto.fi