CodeJam Laboratory (FS 2024)
In this lab, you will practice writing computer programs in a fun competitive environment. The problem statements tell a short story, describe a puzzle, and clearly define input and output. Your short program must compute the solution in a few seconds. Besides being fun, competitive programming is a great way to improve your programming and problem solving skills. Competitive programming problems are also used frequently in interviews for software developer positions.
At the beginning of each lab, the supervisors will introduce you to a specific kind of programming problems. Subsequently, you will solve a series of problems of this particular type. The problems will be hosted on the Codeforces platform. Please register an account on the Codeforces platform to attend the lab (and choose your username or profile name such that we can map it to your real name). You may use any programming language supported by Codeforces, but we recommend C++ or Python that you may know from ITET lectures.
Lab time: Tuesday 14:00-18:00 (see dates below), ETZ D96-1
Lab language: German or English
Lab organization: Robin Fritsch, Andrei Constantinescu, Lab supervision: Noah Pfenniger, Mihail Lavric
Lab registration: Link If you have missed the deadline or want to unregister, please contact the lab supervisors (Noah Pfenniger, Mihail Lavric).
Passing requirements: For each lab, you need to solve a certain number of the problems to pass the lab. Alternatively, you also pass for staying the whole duration of the lab.
At the begining of each lab, the assistants will introduce the topic of the lab. They will also give you hints and be available for questions during the lab.
And there will be chocolates for solving problems first during the lab!
It is also possible to partipate remotely. To do so, you must solve suffiently many problems in the Codeforces contest by 5pm on the Friday of the week of the lab.
If you have a good reason (e.g., illness) preventing you from attending in person, email us before the start of the lab.
Rules: You may use any resources you find online and work together with your colleagues. However, everyone must write their own programs. Do not copy other people's code, regardless of whether you found it online, a colleague/friend wrote it, or you asked an LLM to write the code for you! Submitting slightly modified code that you copied still counts as copying, and "accidentally" copying because two of you asked the same LLM is also copying. Breaking the rules will not be tolerated, even when attendance is enough to pass.
News
- 03.05.2024: Rules have been clarified and updated to mention the usage of LLMs.
- 13.03.2024: For labs 3-6 in-person participation will be required!
- 26.02.2024: In the first lab on 05.03.2024, there will be a short introduction to the course and the type of programming problems solved in the course.
Schedule
Lab | Topic | Lab Date | Passing Requirement |
---|---|---|---|
Lab 1 | Introduction | 05.03.2024 | 4 out of 6, or stay the whole lab |
Lab 2 | Greedy | 12.03.2024 | 4 out of 6, or stay the whole lab |
Lab 3 | Graphs | 26.03.2024 | 4 out of 6 during the lab, or stay the whole lab |
Lab 4 | Dynamic Programming | 09.04.2024 | 4 out of 6 during the lab, or stay the whole lab |
Lab 5 | Binary Search | 23.04.2024 | 4 out of 6 during the lab, or stay the whole lab |
Lab 6 | Contest! Combined and Ad Hoc |
07.05.2024 | 5 out of 8-9 during the lab, or stay the whole lab |
Further Resources: If this lab has sparked your interest in competitive programming, you may also want to take a look at ACM VIS and the Google Developer Student Club at ETH. Additionally, you can find regular competitions and lots of practice problems on Codeforces.