Distributed Computing
ETH Zurich

CodeJam Laboratory (FS 2021)

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.

This year, the CodeJam lab will be fully online. You can solve the problems anytime before or on the lab date (and don't necessarily need to be present during the official lab time). Please join the Moodle course where you can ask and answer questions.

Lab language: German or English.

Lab organization: Robin Fritsch, Thursday 14:00-18:00 online

Lab registration: Link If you have missed the deadline or want to unregister, please contact Susann Arreghini (sarreghini@ethz.ch).

Submission: For each lab you must submit proof of your work in order to get the credits. Upload a screenshot (example) for every problem you solve to the polybox folder listed in the table below (please name it FirstName_LastName_ProblemNumber). The submission deadline is midnight on the lab date.

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.



Lab Competition Date Lab Date Passing Requirement Submission Link
Training 1 no competition* 11.03.2021 40 points polybox
Training 2 no competition* 25.03.2021 40 points polybox
Qualification 26.03.2021 14:00 (30h) 01.04.2021 30 points polybox
Round 1A 10.04.2021 03:00-05:30 22.04.2021 30 points polybox
Round 1B 25.04.2021 18:00-20:30 29.04.2021 20 points polybox
Round 1C 01.05.2021 11:00-13:30 06.05.2021 30 points polybox

*These are the qualification rounds from previous years.