Fall 2026 · First meeting
Wednesday, September 9
The first topic is probability and randomized algorithms.
451 Computer Science Building
Use CourseWorks for any room or schedule update.
A contest-ready laptop
Come prepared to write, test, and discuss C++ solutions with a small group.
Check CourseWorks
Look for the opening announcement and first problem set after signing in.
The course
Advanced work, from first principles
E6998 picks up where W4995 leaves off: the more demanding techniques behind later ICPC problems and Codeforces Division 1 contests.
- Instructors
- Josh Alman and Christian Yongwhan Lim
- Meeting
- Wednesdays · 8:10–10:00 PM
- Location
- 451 Computer Science Building
- Level
- Graduate · 3 points · in person
- Enrollment
- Instructor permission required
- Office hours
- By appointment · email Josh and Christian
Weekly rhythm
Many ways to earn course credit
Each meeting combines a focused lecture with collaborative, timed practice—but there is no single way to build your semester total. After the two required presentations, you can earn points through additional presentations, live contests, weekly homework, independent problem solving, chapter reviews, and announced problemsetting contributions.
- Roughly five homework problems are assigned each week.
- Live contests reward participation and at least one correct solve, not a particular rating.
- Every student gives at least two in-class presentations during the semester and may give more.
- Textbook chapter reviews are completed only after the corresponding lecture has been given.
- CourseWorks is the operational home for assignments, submissions, and announcements.
Points and participation
Build your semester total
Earn points through presentations, contests, problem solving, and chapter reviews. The targets are 50 points for a Pass and 100 points for an A. An A+ requires more than 100 points and is awarded at the instructors’ discretion.
For each in-class presentation; the bonus recognizes a great presentation. At least two presentations are required, and students may give more.
For a Codeforces or AtCoder rated contest when you solve at least one problem.
For the CULC or GNY Regional, plus one additional point for each problem solved. Other designated live contests may be added.
Roughly five homework problems will be assigned each week.
Generic Codeforces, Kattis, and similar problems, capped at 10 points over the semester.
Each textbook chapter review earns two points and may receive up to eight bonus points for exceptional insight. Reviews may be submitted only after the relevant lecture.
Credit for problemsetting work—including testing and related contributions—will be announced.
Students are expected to attend most lectures.
See the full syllabus for the complete 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 instructors before submitting.
Before enrolling
Prerequisites
You should arrive comfortable with dynamic programming, graphs, standard data structures, and basic number theory and combinatorics—and able to turn those ideas into working code quickly.
- COMS W4995 or equivalent competitive-programming experience is strongly recommended.
- COMS W3134 or W3136, W3203, and CSOR W4231 are recommended.
- C++ proficiency is strongly recommended; Java or Python may be used when appropriate.
- If your preparation is less conventional, email both instructors with a short account of your algorithms and contest background.
Opening month
First four meetings
View the complete schedule →Probability and randomized algorithms
Linearity of expectation, concentration, hashing, and randomized choices.
Advanced dynamic programming
State compression, optimization, and patterns beyond the standard toolkit.
Advanced graph algorithms
Structural graph ideas and the modeling decisions that make them useful.
Network flows and matchings
Recognizing reductions, choosing the right formulation, and implementing it reliably.
Topics may move as the semester develops; CourseWorks will carry the current weekly assignment.
References
Useful starting points
Questions
Contact the instructors
Office hours are by appointment. Email Josh and Christian to arrange a time.
Josh Alman
Co-instructor · Office hours by appointment
josh@cs.columbia.eduChristian Yongwhan Lim
Co-instructor · Office hours by appointment
yongwhan.lim@columbia.edu