Assignments overview

The practical assignments are split into Mandatory Assignments (1 - 2) and Extra Assignments. Passing the mandatory assignments is a requirement for passing the course but also rewarded with 350 points. The extra assignments are fully optional, but add up to maximum of 3700 points!


Python version & Conda

For the lab environment we will use Python version 3.11.11. Running any other Python version will almost guarantee the lab framework to not behave as expected. In order to provide every different machine with the same Python version, we provide a conda environment, which will automatically take care of all dependencies needed to run the assignments.

Please refer to the Technical setup in order to activate the conda environment. Before starting working on any assignment, make sure the computer-networks-lab environment is activated, by checking whether it appears as a prefix to your current prompt:

(computer-networks-lab) [daniel@archlinux ~]$ python3 --version
# Should output: Python 3.11.11

If this is not the case, run the following command to activate the conda environment. You might need to do this for every new shell instance you open (every new terminal):

source ~/miniconda3/bin/activate && conda activate computer-networks-lab

Assignment Setup

The description for each assignment can be found on the corresponding page of this Lab Manual. That description explains what has to be done and in what manner. If that description leaves out any information that you feel you need, make sure to ask a TA for clarification before you start implementing.

For most assignments, the functionality of your solution is tested through an extensive testing framework on CodeGrade. Make sure to have a look at the expected behavior of your program!

You have unlimited attempts to submit on CodeGrade. While it may not be the approach recommended by us (partly due to the large time overhead with submitting on CodeGrade), you are free to follow an iterative, error-driven approach to solving the assignments.


Handing In

To hand in your submission, there are multiple steps required:

  1. Upload your submission to CodeGrade and check for the completion of the automated tests. (This step can be done at any time, so not necessarily during a Lab session)

  2. Once your submission passes all tests, enter the submission queue during a Lab session.

  3. Have your work checked (and hopefully approved) by a TA.

As the functionality of your program is mostly automatically tested through CodeGrade, the sign-off with a TA will not focus on that aspect (but may include some additional checks for some assignments). The in-person sign-off will test your understanding of the program you submitted. It may include questions about the technical details, design decisions, or general program flow, to name a few. The TA may ask you to illustrate your development process and check the commit history of your Git repository.


Grading

The grading does not only encompass functionality (i.e., passing all the tests) but also your ability to explain your solution and the style of your code. Code style includes (but is not limited to) the structure of your program as well as the presence of explanatory comments.

If any of these parts are insufficient, the grading TA will reject your submission and you will have to resubmit after eliminating the named issues.

Last updated