Fall 2026 · First meeting
Monday, September 14
The first topic is contest workflow, complexity, and reliable implementation.
451 Computer Science Building
Use CourseWorks for any room or schedule update.
A programming-ready laptop
Come prepared to write, test, and discuss solutions with a small group.
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.
- Instructor
- Christian Yongwhan Lim
- 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.
For each in-class solution presentation. At least one presentation is required, and students may give more.
For a complete mock interview or designated interview set, including a brief explanation and complexity analysis.
For participating in a designated Codeforces or AtCoder contest and completing a short upsolve or reflection.
For the CULC or GNY Regional, plus one additional point for each problem solved. Equivalent team contests may be announced.
Roughly four assigned problems each week, with partial credit for substantial progress that can be explained.
Codeforces, Kattis, LeetCode, and similar practice, capped at 10 points over the semester.
For a review of an approved textbook chapter or topic, submitted after the corresponding lecture.
Credit may be offered for writing, testing, or improving practice and contest problems.
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.
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.
Opening month
First four meetings
View the complete schedule →Contest foundations and complexity
Judge workflow, reliable I/O, testing, debugging, and reading constraints.
Arrays, strings, and scanning patterns
Sorting, prefix sums, two pointers, sliding windows, and binary search.
Core data structures and greedy methods
Hashing, stacks, queues, heaps, intervals, and exchange arguments.
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.
Christian Yongwhan Lim
Instructor · Office hours by appointment
yongwhan.lim@columbia.eduOffering archive
Public records for every offering since Spring 2022
Browse past offerings