Assignments overview
Last updated
Last updated
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!
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 environment, which will automatically take care of all dependencies needed to run the assignments.
Please refer to the 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:
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):
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!
The tests on CodeGrade are subject to change for the duration of the Lab (e.g., for mitigating newly discovered issues).
However, if your assignment was handed in and approved, the grade will stay even if some newly added or changed tests no longer pass.
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.
To hand in your submission, there are multiple steps required:
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)
Once your submission passes all tests, enter the submission queue during a Lab session.
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.
Make sure to prepare for the sign-off. That means being knowledgeable about all parts (even if they were written by your partner) of your solution, possibly adding further comments to help your explanation, and making sure that any leftover pieces of code from previous approaches are properly removed.
Points are only given for fully complete submissions accepted during hand-in by a TA, there is no partial grading (unless indicated otherwise).
Note that a non-compliant submission might still pass all CodeGrade tests. If a TA discovers a mistake in your algorithm or implementation, your submission may be rejected.
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.