Course Format

The class meets on Fridays for 2.5 hours.

Weekly mini-contest (75 min)

The goal of this class is to prepare students for programming competitions. Programming competitions involve solving computational problems and implementing them quickly under time constraints. Therefore, at the beginning of each class, there will be a mini-contest on the topic presented the previous week. The goal of the weekly mini-contest is to simulate the programming competition environment.

Lecture presentation (75 min)

After the mini-contest, during the remaining class time, the instructor will present new topics. The lectures will assume knowledge of algorithms and data structures from ICS 311 and will focus on new algorithms and data structures and on quick implementations of the algorithms covered in ICS 311. The lecture slides will be posted online on the course website.

Practice problems for the upcoming week (homework)

At the end of the class, students will be assigned a list of practice problems on the topic presented in class. All problems will be taken from UVA Online Judge, so the students will be able to upload and test their solutions on that server. Therefore, the students are expected to create a UVA Online Judge account.

Decision about how many practice problems to solve is left up to the student – in fact, the instructor and the TA have no way of knowing how many problems a student solved. However, the practice problems are designed to prepare the students for the upcoming weekly mini-contest. Besides, the only way to become better at programming contests is by practicing solving as many problems as possible.

Exams

The midterm exam and the final will be programming competitions similar to the ACM Programming Contest, and will cover all the topics covered up to the week of the corresponding exam.