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
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.
Two foundation and two core problems per weekly set. Optional challenge problems provide enrichment credit.
One point in each class after the first, with an asynchronous alternative for an excused absence.
Scored on correctness, reasoning, complexity, examples, testing, communication, and questions.
Three designated mock interviews or interview sets worth three points each.
Credit comes from timed participation, reflection, structured upsolving, and a final upsolve portfolio, not performance.
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.
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.
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