Introduction to the Assignments

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


Framework

The assignments need to be solved by extending the skeleton files given as part of the framework. If you have not yet created your own (private) GitHub repository from the given framework template, follow the GitHub Repository Guide to do so. Furthermore, make sure you are familiar with the README.md file given as part of the framework and have followed all setup steps.


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!

Most assignments ask you to implement a certain function or set of functions. The tests do not only test your program as a standalone (i.e., by using your main routine) but also test the individual parts on their own. You must thereby carefully follow both the requirements from the assignment description and the calling conventions to pass those tests.

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 - have a look at the Running Example to get an intuition about the style we expect.

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