Columbia University · Fall 2026

Competitive Programming

Interview-ready algorithms, regional contest skills, and a clear path toward the ICPC North America Championship.

Mondays, 7:00–9:30 PM · 451 Computer Science Building

Start here

Course
essentials

01SyllabusRequirements and policies02Schedule13 Monday meetings03CourseWorksCOMS W4995-00704PermissionEmail the instructor05CalendarAdd all class meetings

Fall 2026 · First meeting

Monday, September 14

7:00–9:30 PM

The first topic is contest workflow, complexity, and reliable implementation.

Where

451 Computer Science Building

Use CourseWorks for any room or schedule update.

Bring

A programming-ready laptop

Come prepared to write, test, and discuss solutions with a small group.

Before class

Check CourseWorks

Look for the opening announcement and first problem set after signing in.

The course

From interviews to ICPC regionals

W4995 builds the core toolkit used in technical interviews and the first half of ICPC contests, then develops the breadth, speed, and teamwork needed at the regional level.

Meeting
Mondays · 7:00–9:30 PM
Location
451 Computer Science Building
Level
Undergraduate · 3 points · in person
Enrollment
Instructor permission required
Office hours
By appointment · email Christian

Weekly rhythm

Learn a technique, then use it

Each meeting combines a focused lecture with collaborative problem solving and timed practice. The course uses a simple point system, so students can build credit through several kinds of work rather than a long checklist of separate requirements.

  • Roughly four homework problems are assigned each week.
  • Live contests reward participation and reflection; no rating is required.
  • Every student gives at least one in-class presentation and may give more.
  • Interview practice and ICPC team practice both count toward the semester total.
  • There is no conventional midterm or final exam.

Points and participation

Build your semester total

Earn points through presentations, contests, homework, interview practice, independent problem solving, and chapter reviews. The targets are 40 points for a Pass, 60 points for a B, and 80 points for an A. An A+ requires more than 80 points and is awarded at the instructor’s discretion.

Presentation5 points + up to 5 bonus

For each in-class solution presentation. At least one presentation is required, and students may give more.

Interview practice3 points

For a complete mock interview or designated interview set, including a brief explanation and complexity analysis.

Rated contest5 points

For participating in a designated Codeforces or AtCoder contest and completing a short upsolve or reflection.

ICPC contest10 points + 1 per solve

For the CULC or GNY Regional, plus one additional point for each problem solved. Equivalent team contests may be announced.

Homework1 point per question

Roughly four assigned problems each week, with partial credit for substantial progress that can be explained.

Other problems0.1 point per question

Codeforces, Kattis, LeetCode, and similar practice, capped at 10 points over the semester.

Chapter review2 points + up to 8 bonus

For a review of an approved textbook chapter or topic, submitted after the corresponding lecture.

ProblemsettingAs announced

Credit may be offered for writing, testing, or improving practice and contest problems.

AttendanceExpected

Students are expected to attend most lectures; attendance is not a separate point requirement.

See the full syllabus for assessment and academic-honesty policies.

Academic honesty

Claim only work you understand

Follow Columbia’s Standards and Discipline policy and the collaboration rules announced for each assignment.

  • Do not copy or share solution code, falsely claim a solve, or present another person’s work as your own.
  • Acknowledge collaborators and cite permitted editorials, code, AI tools, and other outside sources.
  • Be prepared to explain every solution, review, and presentation for which you claim credit.
  • When in doubt, ask the instructor before submitting.
Read the complete policy →

Before enrolling

Prerequisites

You should be comfortable writing small programs with standard collections and explaining basic time complexity. Prior contest experience or a contest rating is not required.

  • COMS W3134 or W3136 and discrete mathematics are recommended preparation.
  • C++, Java, and Python are supported; C++ is recommended for students pursuing ICPC.
  • The course starts with interview-relevant patterns before moving into regional contest material.
  • If your preparation is less conventional, email the instructor with a short account of your programming and algorithms background.
Request instructor permission

Opening month

W01

Contest foundations and complexity

Judge workflow, reliable I/O, testing, debugging, and reading constraints.

W02

Arrays, strings, and scanning patterns

Sorting, prefix sums, two pointers, sliding windows, and binary search.

W03

Core data structures and greedy methods

Hashing, stacks, queues, heaps, intervals, and exchange arguments.

W04

Trees and graph traversal

BFS, DFS, connected components, topological ordering, and state graphs.

Topics may move as the semester develops; CourseWorks will carry the current weekly assignment.

References

Useful starting points

Questions

Contact the instructor

Office hours are by appointment. Email Christian to arrange a time.

Email the instructor