There are two types of assessments: Peer assessment in the lab and assessment of (runtime) performance, via Canvas. I will assess the runtime performance of your solutions to Assignments 2 and beyond. For these your program's performance is the key and only objective. You handle Assignments 0 and 1 yourself as peer assessments.

Peer assessment in the lab

The focus of peer assessed assignments is to enforce learning of basic techniques that you will need for the remaining assignments. First solve the assignments independently. Then get together in groups of three or four to check and possibly improve your solutions in group work. You can then come forward to me or one of the assistants during the computer lab sessions. After possibly asking some questions for cross-check, we will register your passing the assignment. You do not have to submit anything to Canvas for these assignments.

Performance assessment via Canvas

You submit your code in the format described below via Canvas. Make sure before submitting that the file that you submit passes the check scripts that I provide on gantenbein (as opposed to your own or any other computer). In particular, your code must compile and run on gantenbein.

Submission groups

For Assignments 2 and beyond you are allowed and encouraged to work on and submit assignments in groups of two to four students. You have to sign up for a group tag via Canvas. For example, hpcgp001 would be such a tag.

If you do not have a group and do not want to find one yourself, you can come and talk to me and I will try and help you. Also if you plan to work alone, come and talk to me in order to see whether this is really the best idea. Students working alone in the overwhelming majority of cases have suffered from excessively high work loads, and lower achievement and learning rates.

Programming language

Do not diverge from the choice of programming language. You have to use C for the program code and GNU Make for the makefiles. Based on past years' experience, C++ is not an option.


You have to include a makefile, whose standard target builds all required executables. For example, if you have to provide executables main1 and main2, then the following must work


The makefile must also provide a clean target that shall remove all files resulting from compilation, but no more. For example, if you provide two files, main.c and makefile, and running the executable main yields another file called outputfile, then

make clean

should preserve main.c, makefile, and outputfile, but delete main.o (if present) and main.

Submission archive

Your solution to Assignments 2 and beyond should be packaged as a tar.gz-archive and uploaded to Canvas. One submission per group is suffices Make sure to check the directory structure in the tar-file and adhere to the requirements of the check script. For example, the following commands produce different tar-files:

tar czf submit.tar.gz code/main.c code/makefile
tar czf submit.tar.gz main.c makefile