Events & Dates
The lecture will be organized in lectures, tutorials, office hours and demonstrations. The lectures present the content. We offer office hours, where you can ask questions about the lecture content or seek assistance with programming projects. To this end, the Forum serves a similar purpose (please keep questions in English). There will be weekly tutorials in which you discuss the exercise sheets of the course and in which you can also talk to your tutor if you have trouble with the lecture content. At the beginning of the course we will hold demonstrations to assist you in getting started with programming projects. This includes an introduction to C++ and an overview of the project structure. It is not mandatory to make use of any of these services, it is your responsibility to decide how much help you require.
All dates and events can be looked up in the CMS Timetable. In general, all events will be held in person, without recordings. However, course material like lecture slides will of course be uploaded to the CMS Materials section. Lectures take place in the Günter-Hotz lecture hall (Tue 10-12, Fr 14-16). Office hours will be held in building E 1.1, seminar room 3.06 (Tue 12-14, second date TBD). Demos will be held in the Günter-Hotz lecture hall. For the tutorials, please refer to your personal status page in the CMS to find out when and where they are held once you have been assigned to one.
Every week, we will give out exercise sheets with which you can test your understanding of the lecture topics. These exercise sheets are not mandatory, i.e., it is not required to complete them in order to achieve the exam admission and do not influence your final grade for the lecture. However, we strongly recommend you to examine them.
We do not hand out digital solutions. The solutions of each exercise sheet will be covered in the tutorial two weeks after the sheet is released.
There will be four programming projects, plus an introductory project. The general topics of these projects are:
- Implementation of heuristics for heuristic search algorithms
- Learning a strategy (policy) for a sequential decision making problem using supervised learning
- Implementation of basic machine learning algorithms
The programming projects are written in C++ and Python. For students not familiar with these lanugages, we will offer additional lecture-like demonstration sessions to help you get accustomed to the language. Nevertheless, you should at least have basic familiarity with C in order to profit from these demonstrations.
The programming projects are mandatory and must be worked on alone. All programming projects amount to 100 points in total. You must at least achieve 30 out of 100 points in the programming projects in order to be allowed to write the exam. Furthermore, the programming projects have an influence on the final grade, see Examination Regulations below.
Programming projects will mostly be graded based on correctness of your implementation only. To this end, we provide both public tests which you can inspect and test your implementation with at any time, as well as daily tests which are anonymous and executed once a day on our test servers. Passing the public tests for a specific project task is required to be eligible for any points in this task. The daily tests are used to grade the task. There are no secret tests for tasks graded based on correctness. In particular, if you manage to pass all daily tests for a project task, you are done with this task and are guaranteed to receive full points for it.
In some projects, you may be asked to learn and submit machine learning models, which we will grade by comparing their performance in specific tasks against a baseline model. For these projects, there are no public tests, but there are daily tests which will report to you the relative performance of your model against the baseline on a chosen set of daily tasks. For these projects only, we will use additional secret tests that also assess the performance of your models on a chosen set of secret tasks. The secret tests will not be run until after the project deadline. The final score is a weighted average of daily test and secret test performance.
For exact information on how specific project tasks are graded, please refer to the corresponding project description.
To qualify for the exam, students must achieve at least 30 out of 100 points in the programming projects. There are no additional admission requirements. The final grade is calculated from the projects score and the score of the exam or re-exam (better exam score counts). In more detail, we calculate the grade as follows:
examRatio = max(pointsExam1, pointsExam2) / maxPointsExam; projRatio = min(pointsProjects, 100) / 100 gradeRatio = max(0.25 * projRatio + 0.75 * examRatio 0.5 * projRatio + 0.5 * examRatio) passed = examRatio >= 0.5 and gradeRatio >= 0.5
The final grade will be interpolated linearly from gradeRatio∈[0.5, 1.0], if the course is passed. By the above calculation, by default projects have an influence of 25% on the grade and exams have an influence of 75%. However, if this would improve your grade, we will instead weigh projects and exams equally. This rewards you with a better grade if you have good programming projects, even if your exam score is average. You must have at least 50% of the points in the exam to pass. The resulting weighted ratio of points must be at least 50%, i.e. if your project score is below 50 points (of 100), you have to achieve 1% more points than 50% in the exam for every 3 points you are below 50 points in the projects.
The exam will be open-book, meaning you can bring any supplementary materials on paper that you'd like.