The table below lists the programming labs and associated dates.
Lab | Topic | Class Date | Due | Collaboration Policy |
---|---|---|---|---|
Lab 1 | Compiling and running a C++ program | Jan. 17 | Jan. 20 by 11:59pm | Individual |
Lab 2 | Copier | Jan. 24 | Jan. 27 by 11:59pm | Individual |
Lab 3 | Speed | Jan. 31 | Feb. 3 by 11:59pm | Individual |
Lab 4 | Salon | Feb. 7 | Feb. 10 by 11:59pm | Can work with a partner (but each should submit on Zybook) |
Lab 5 | Order | Feb. 14 | Feb. 17 by 11:59pm | Individual |
Lab 6 | Order (again) | Feb. 21 | Feb. 24 by 11:59pm | Individual |
Lab 7 | Phone | March 7 | March 10 by 11:59pm | Individual |
This year, each of our lab assignments will be based on a problem taken from a past offering of the ACM International Collegiate Programming Contest (ICPC). Students work in teams of three to solve as many problems as possible in a five-hour time period.
Hundreds of regional contests are held each Fall, involving thousands of teams across the world. The top 100 teams from the regionals qualify for the World Finals held in the Spring. More information can be found on the official ICPC site. Also, if you have any interest in participating on SLU's teams, please let me know next Fall.
Each problem is computational in nature, with the goal being to compute a specific output based on some input parameters. Each problem defines a clear and unambigous form for the expected input and desired output. Relevant bounds on the size of the input are clearly specified. To be successful, the program must complete within 60 seconds on the given machine (thus, efficiency can be important for certain problems).
Each problem description offers a handful of sample inputs and the expected output for those trials as a demonstration. Behind the scene, the judges often have hundreds of additional tests. Submitted programs are "graded" by literally running them on all of the judges' tests, capturing the output, and comparing whether the output is identical (character-for-character) to the expected output.
If the test is successful, the team gets credit for completing the problem. If the test fails, the team is informed of the failure and allowed to resubmit (with a slight penalty applied). However, the team receives very little feedback from the judges. In essence, they are told that it failed but given no explanation as to the cause of the problem, or even the data set that leads to the problem.