Organization

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 HS002 E1 3 (Mon 14-16, Thu 10-12). Office hours will be held in building E 1.1, seminar room 3.06 (two dates TBD). Demos will be held in HS002 E1 3. 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.
 

Exercise Sheets

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.

Programming Projects

There will be five programming projects, including 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.

Grading

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 may use additional secret tests that also assess the performance of your models on a chosen set of secret tasks. If used, 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.

Hacking Clause: Any intentional attempt to undisclose the content of non-public tests through programmatic means is considered an attack on our testing infrastructure and will be met with immediate expulsion from the course and potential legal consequences. Additionally, trying to prevent the normal test execution by e.g. installing a signal handler is considered cheating and will result in zero points for the offending project, or expulsion from the course for repeated offenders.
 
Plagiarism Clause: We will regularly run plagiarism tests to detect any intentional attempt to copy code for the implementation of a project task from other participants or internet sources. This will result in zero points for the entire project in which the attempt was noticed, which holds for the students that shared their implementation with others as well as those students making use of this information. Importantly, self-written test cases are excluded from this rule, unless they contain code relevant for the implementation of a project task. Repeated or severe offenders will be expelled from the course.
 
LLM Clause: You are permitted to make use of whichever programming tools you wish, including LLMs. However: Be aware of plagiarism issues due to similar LLM-produced code. You must be able to explain your code, and exactly how you obtained it, including logs/demonstrations for use of LLMs.
 

Examination Regulations

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.

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators.