CodeJam Laboratory (FS 2022)
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. Many programming contests such as the International Olympiad in Informatics, the International Collegiate Programming Contest or Facebook Hacker Cup exist, but in this lab we focus on the Google CodeJam series. Besides being fun, CodeJam is a great way to improve your programming and problem solving skills. CodeJam-like problems are also used frequently in interviews for software developer positions.
We will use current and past problems from Google CodeJam. Please register with CodeJam before attending the lab. You may use any of the 30+ programming language supported by CodeJam, but we recommend C++ or Python that you may know from ITET lectures.
In the first two afternoon sessions we will look at two prior qualifying rounds, and discuss some valuable techniques and tricks. Then you will try to qualify in the actual CodeJam qualification round! The qualification round is relatively easy, and we hope that everybody who tries should make it. After you qualify, we continue with up to 3 more Round 1 competitions. You can participate in the actual competition, and we have a lab session after each competition to help you with the problems you did not solve. In order to get the lab credits, you either need to achieve enough points during the competition or show suffient effort during the lab. Qualifying for Round 2 is quite difficult. If you manage to qualify, you get a chocolate.
Lab time: Thursday 14:00-18:00 (see dates below), ETZ K 91
Lab language: German or English
Lab organization: Robin Fritsch, Lab supervision: Clemens Walter, Richard Danis
Lab registration: Link If you have missed the deadline or want to unregister, please contact Robin Fritsch (firstname.lastname@example.org).
Passing requirements: For each lab, you need to reach a certain number of points. You can solve the problems during lab time with help of the supervisors. If you have solved the problems before the lab (e.g. during the competition), you can simply show the supervisors your solutions.
Online submission: If you cannot attend a lab, you can submit online by uploading a screenshot of the codejam submission portal showing the points archived as well as part of your code (example) to the following polybox: https://polybox.ethz.ch/index.php/s/U9VgcFnozWTUmwA. Please use the format <kürzel|name>_<labnumber>_<exercise-name>.jpg for your submissions.
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! For problems from past rounds, CodeJam provides an "Analysis" that describes how the problem can be solved. We strongly recommend that you first try to come up with your own solution before using this.
- 14.03.2022: Please bring a laptop to the lab.
- 14.03.2022: There will be a short introduction (slides) to the course and the type of programming problems used in CodeJam during the first lab.
- 31.03.2022: Remember to take part in this year's Qualification Round on Saturday (02.04.2022)!
- 03.05.2022: Congratulations to Maurus Item for advancing to the second round!
|Lab||Competition Date||Lab Date||Passing Requirement|
|Training 1||no competition*||24.03.2022||40 points|
|Training 2||no competition*||31.03.2022||30 points|
|Qualification||02.04.2022 01:00 (27h)||07.04.2022||30 points|
|Round 1A||09.04.2022 03:00-05:30||14.04.2022||25 points|
|Round 1B||24.04.2022 18:00-20:30||28.04.2022||30 points|
|Round 1C||30.04.2022 11:00-13:30||05.05.2022||30 points|
*These are the qualification rounds from previous years.
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.