CodeJam Laboratory (FS 2023)
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 D96-1
Lab language: German or English
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://www.polybox.ethz.ch/index.php/s/FhkMONritRT2LiP. Please use the format <kürzel|name>_<labnumber>_<exercise-name>.jpg for your submissions. Online submissions should be made before the end of the lab (18:00 on the day of 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! 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.
- 06.01.2023: Starting this year, it is possible to participate in the lab in two consecutive years.
- 23.02.2023: Google has announced that it will stop organizing programming competitions, and there will only be a single "farewell" CodeJam round this year. The lab schedule has been adjusted accordingly: We will have three practice labs (using qualification rounds from previous years), and one lab for the "farewell" round.
- 27.02.2023: There will be a short introduction (slides) to the course and the type of programming problems used in CodeJam during the first lab.
- 29.03.2023: To replace the cancelled CodeJam rounds, we will have two labs with a live internal competitions this year (on 27.04.2023 and 04.05.2023). The problems will be similar to CodeJam. For these two labs, participating is possible in person only!
|Lab||Competition Date||Lab Date||Passing Requirement|
|Training 1||no competition*||02.03.2023||40 points|
|Training 2||no competition*||16.03.2023||40 points|
|Training 3||no competition*||30.03.2023||40 points|
|Farewell Round A||15.04.2023 16:00-20:00||20.04.2023||60 points|
|Competition 1||during lab||27.04.2023||in person participation|
|Competition 2||during lab||04.05.2023||in person participation|
*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.