Department of Computer Science

  • Increase font size
  • Default font size
  • Decrease font size

Competitive Programming

Variable Credits

As the world transitions to a truly global economy, competition for the best programming jobs at the highest salaries is increasing shifiting to a world-wide market place. Programmers around the world can now "show their stuff" in international competitions held on the internet. The top global software companies such as Microsoft, Google, and Electronic Arts among others are sponsoring contests and offering large cash prizes in order to find and hire the talent that will build the next generation of advanced software systems. The purpose of this course is to ensure that Montana Tech computer science and software engineering students are not left behind, and to provide them with the experience and techniques they need to compete with the best around the world.

This is actually three classes offered by the same instructor at the same time; one for sophomores, one for juniors, and one for seniors. The weekly lecture is the same for all levels, but the individual weekly assignments are different for each level. The first part of the course is focused on the ACM International College Programming Contest which is held in a nearby city sometime before Thanksgiving. In the first part of the course will be focused on TopCoder ( TopCoder assignments will also vary by level. The purpose of the course is to improve each students ability to quickly and successfully (as judged by robot judge acceptance) solve single module (or class) programming problems drawn from ALL of computer science. For those wishing to compete in the ACM contest, the course provides invaluable strategies for successfully attacking these problems, especially if a team of three practices together. All of the generic programming techniques for single module or class problems are covered, and all students receive a contest problem play book of attack strategies. Prerequisites: CSCI 136 for sophomores; CSCI 232, CSCI 246, CSCI 255 and CSCI 340 for juniors; CSCI 305, CSCI 332 and CSCI 347 for seniors.


E1. Besides the listed prerequisites students should genuinely enjoy creating working solutions to sophisticated programming problems.

E2. Besides the listed prerequisites students should be able to assiduously and correctly carry out detailed instructions for problem submission, both to robot judges and to the instructor.

E3. Besides the listed prerequisites students should have the time to (1) regularly attend the weekly class and practice session and (2) to successfully complete one programming problem a week.

Course Outcomes:

R1. Students will have a basic understanding of the nature of both individual and team contest computer programming, and how to achieve a high score when competing in these contests. (CS/SE 2, CS/SE 3, CS 6, CS/SE 7, CS/SE 11, CS 14)

R2. Given an ACM or TopCoder contest problem, students can recognize which of the handful of generic techniques are appropriate for a time and space constrained solution to the problem. (CS/SE 3, CS/SE 11, SE 14)

R3. Using the course contest problem play book,and a program development environment of their choice, students can quickly design, code, test, and debug a solution that would be accepted by a contest robot judge. (CS/SE 3, CS 6, CS/SE 11, SE 14)