April 2021 / 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 from the neuroimaging domain. 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 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 the basic packages for scientific computing (NumPy/SciPy/Matplotlib/Pandas). 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

  • Marijn van Vliet, Science IT, 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://version.aalto.fi/gitlab/merzs1/cdwassignment.

Cost: Free of charge for FGCI consortium members including Aalto employees and students.

Registration: You can register at this link

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 1 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 with the basic scientific software stack (NumPy/SciPy/Matplotlib/Pandas, see https://www.scipy.org). We recommend an anaconda installation. 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 or marijn.vanvliet -at- aalto.fi