GB21802: Programming Challenges


This course studies a variety of useful algorithms through the use of programming challenges. Topics: Sorting, Searching, Graphs, Numerical and String handling, Geometry. The goal of this course is, rather than introducing new concepts, to deepen the understanding of algorithmic techniques by solving hard programming problems.

The goal of this course is to learn how to identify the necessary algorithm to solve a given program, and how to correctly implement it. This course aims at giving a practical view of previously learned algorithms and programming techniques.

Time and Classroom

Monday and Friday, 12:15 to 13:30 at room: 3A311


  • Manaba Website: All class material (lecture notes, announcements, grades, etc) can be found in this site. please register.
  • Problem Monitor: This page keeps track of the problems you have solved.
  • UVA Online Judge: You need an account on this website to submit problems in this lecture.
  • Competitive Programming Book: The classes this year are based on this book. You do not need to buy it, but I recommend.
  • Programming Challenges Book: The classes last year were based on this book. I also recommend it.
  • Github Repository: Here I store the lecture notes for this course. The OFFICIAL lecture notes are those found in the MANABA website, but you can check the git repository to see what the course was like last year.


This class is lectured in Japanese, with materials and exercises in English.