A. Malapert

Programming challenge

This course will introduce an interesting variety of subjects in programming, algorithms, and discrete mathematics though puzzles and problems which have appeared in the International ACM Programming Contest and similar venues.

This is a lecture-lab course in which topics are presented by the instructor, practice problems are explained, and assigned problems are completed by students both during lab periods and outside of class.


Arnaud Malapert, Marie Pelleau.



  • The source code of the lectures is available in this repository.
  • You can practice the problems on the platforms Sphere Engine and Spoj.
  • First, you must masterize the tutorial.
# Lecture Problem 1 Problem 2 Problem 3
0 Getting Started      
1 Input/Output TEST (spoj) HELLOKIT (spoj) LC-DISPLAY
3 Array MKBOOK (spoj) DCEP206 (spoj) LONGEST
4 Sort CADYDIST (spoj) INVCNT (spoj) YODANESS (spoj)
5 Tree PT07Y (spoj) TREEORD (spoj)  
6 Dynamic Programming      
7 String Processing PLAQ REBOND  
8 Graph ANARC08G (spoj) PARADOX (spoj) BUGLIFE (spoj)


The moodle course is used for group selection, drop boxes, and the grading book. You could self register by clicking on the link if you are not already registered.

Coding Battle (10%)
A grade is assigned depending on your ranking at the Coding Battle. Pair work is allowed.
Coding Battle Oral (40%)
Each student presents a solution to one of the problems given at the Coding Battle. Pair work is allowed for problem solving, but the oral is into individual.
Final Exam with Sphere Engine (50%)
There are between two and four problems to solve in the labs within 3 hours. Pair work is not allowed.

Coding Battle Oral

You must present your solution to one of the three most difficult problems of the coding battle.

  • On the next day after the coding battle, we will announce which problem you will be asked about.
  • On the next course after the coding battle, you will submit your final solution in moodle before 8:00 AM.
  • Then, the oral of 20 minutes (in English or French) will be organized in three parts as follows:
    • Algorithmic (7 min): it must include an example of the algorithm execution without any reference to the code.
    • Code (3 min): it describes the implementation choices of your final submission and evaluates its performance.
    • Questions (10 min) about the algorithmic and the code: you can use a whiteboard for answering.


Public online judges