To get started:
For each course, the assignments are organized in exercises (e.g. CP) that consist of tasks (e.g. CP3b):
Once you have written a correct solution to one of the tasks, here are the minimal steps for getting points for it:
To solve a task, we recommend that you proceed as follows:
./grading
. It should work fine at least in typical Linux and macOS environments../grading test
. It will try to compile your code, and it will run a selection of automatic tests that try to make sure your solution is bug-free. Simply read what the tool says, and debug the code as needed if there are bugs. Please see ./grading --help
for more information on how to use the grading tool../grading benchmark
to get a better understanding of how fast it works (but please keep in mind that the hardware that you are using is likely very different from the hardware we use for grading).Please also keep in mind that you are in no way restricted to the use of the tools that we provide. You can also write your own code that tries to run your implementation with different test inputs, you can use whatever development and debugging tools you commonly use while programming, etc. As all task in one exercise are related to the same problem, you can benefit from whatever you implement for one task also in other tasks.
If you do not have suitable hardware or software on your own computer, you can often e.g. connect to Linux computers provided by your university remotely via ssh and develop and test your code there. Another option is to send your command for remote execution, as detailed below.
Adding the --remote
flag to any command on the grading tool, e.g. ./grading test --remote
, will send your code and the specified tests to this system. It is then run and the output is shown in your terminal once the whole command completes.
When first using the remote flag, you will be instructed to obtain an API token for your account and to copy it into an appropriate configuration file. It is easiest to place the file in the suggested system-specific configuration path so it will work with all tasks.
The feature is intended for testing and experimentation. Using the benchmark
command remotely can be especially useful because it is run on the same hardware as normal submissions are. However, it does not replace normal submissions. Once you are satisfied with your code, remember to still make a submission through the web interface to get points.
The zip file with the code templates also contains some test cases, you will find the definitions of the test cases in the subdirectory tests
. When you run ./grading test
, the script will use all of these files to ensure that your code works correctly at least with those inputs.
However, there are also some additional secret test cases that our automatic grading tool will use. So it is possible that you may have bugs that are not visible yet when you run the grading tool locally. But no worries, whenever any of our secret tests fails, you will get to see the test definition. You can even download the test definition, add it to your local tests
subdirectory so that ./grading test
will find them, and this way you can easily reproduce the bug locally. Note that you can also specify in the command line exactly which test case to run.
If you have already submitted something for grading, and then come up with a better solution before the deadline, please feel free to un-submit the previous version (choose “Please ignore this submission”) and submit the better version. Please do not make multiple parallel submissions unless there is a good reason for that (e.g. you would like to understand why the improved version turned out to be slower).
For each task there is a deadline by which you need to solve it in order to get points for the task. What matters is the time when you uploaded the source code for automatic grading.
For each task, there are time limits for the running time of your solution: the number of points you get depends on how fast your implementation solves the problem for the benchmark inputs.
If you follow instructions and your solution is correct, already after automatic grading you should have a fairly good understanding of how many points you will eventually get. However, our course staff can adjust the points if needed; for example, if your implementation is almost correct but has got some minor bugs in some corner cases, you may lose one or two points.
There is no penalty for resubmissions or multiple submissions. Resubmissions are always safe; you will never lose any points you have already got. However, please also note that resubmissions are graded exactly the same way as other submissions; in particular, if you resubmit after the deadline, you cannot get full points for the resubmission.