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

Except for the first lecture, each 150-minute meeting follows a predictable 75/50/25 rhythm: instruction and guided examples, timed problem solving, then student presentations and discussion.

  • 75 minutes: lecture, guided examples, and discussion of problem-solving techniques.
  • 50 minutes: a live contest or timed problem-solving session using material already taught.
  • 25 minutes: student solution presentations, questions, and debriefing.
  • The first two meetings provide a foundations ramp before contest material becomes central.
  • Every live contest has a virtual alternative, and credit rewards participation, reflection, and upsolving rather than rating.
  • Weekly work includes two foundation problems, two core problems, and one optional challenge problem.

Points and participation

A clear path to 80

The course has 100 core points available through course-controlled work. 80 points earns an A and 90 points earns an A+. A beginner can reach 80 without external contests, discretionary bonuses, a particular rating, or a live solve.

Foundation and core homework52 points

Two foundation and two core problems per weekly set. Optional challenge problems provide enrichment credit.

In-class practice and reflection12 points

One point in each class after the first, with an asynchronous alternative for an excused absence.

Solution presentation8 points

Scored on correctness, reasoning, complexity, examples, testing, communication, and questions.

Interview practice9 points

Three designated mock interviews or interview sets worth three points each.

Guided contests and upsolving19 points

Credit comes from timed participation, reflection, structured upsolving, and a final upsolve portfolio, not performance.

Optional enrichmentAdditional points

Challenge homework, external rated contests, ICPC team contests, independent practice, reviews, and problemsetting can add to the core total.

The full assessment plan publishes every letter-grade threshold, the presentation rubric, and an example beginner-friendly path to 80.

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 with tested starter templates and short references; C++ is recommended, but not required, for students pursuing ICPC.
  • The course starts with a two-meeting foundations ramp before moving into regional contest material.
  • Selected practice permits rotating pairs, followed by individual explanation and reflection.
  • 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