01 · Overview
Course overview
An advanced sequel to COMS W4995 covering techniques that appear in the harder half of ICPC contests and Codeforces Division 1. The emphasis is on algorithm design, proof, speed, and reliable implementation.
- Instructors
- Josh Alman and Christian Yongwhan Lim
- Meeting
- Wednesdays, 8:10–10:00 PM · September 9–December 9
- Location
- 451 Computer Science Building
- Credits
- 3 points · graduate · in person
- Office hours
- By appointment · email Josh and Christian
- Course site
- CourseWorks for materials, submissions, and announcements
02 · Course format
How the class works
Each Wednesday has two connected parts. The first is a lecture on an advanced technique, built around representative problems and the reasoning that leads to a correct solution. The second is timed group practice and student presentations.
- Roughly five homework problems are assigned each week.
- Students track accepted submissions and live-contest participation through CourseWorks.
- Each student must give at least two in-class presentations during the semester and may give more.
- Textbook chapter reviews may be submitted only after the corresponding lecture has been given.
- There is no midterm or final exam.
03 · Assessment
Point-based assessment
The course rewards sustained problem solving, contest participation, and clear communication. Your grade is determined by the points you earn during the semester.
Each presentation earns five points. A great presentation may earn up to five additional bonus points. Every student must give at least two presentations; students may give more.
Earned when you solve at least one problem in the rated contest.
Earned when you solve at least one problem in the rated contest.
Ten points for participation, plus one point for each problem solved.
Ten points for participation, plus one point for each problem solved.
Additional qualifying live contests may be added during the semester.
There will be roughly five assigned problems each week.
Generic Codeforces, Kattis, and similar questions, up to a maximum of 10 points over the semester.
Each 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 has been given.
Credit for problemsetting work—including testing and related contributions—will be announced.
Students are expected to attend most lectures.
CourseWorks contains submission instructions and the current progress record.
04 · Expectations
Preparation and participation
- Arrive comfortable with dynamic programming, graphs, standard data structures, and basic number theory and combinatorics.
- COMS W4995 or equivalent experience is strongly recommended. COMS W3134 or W3136, W3203, and CSOR W4231 are useful preparation.
- C++ proficiency is strongly recommended; Java or Python may be used when appropriate.
- Come prepared to reason aloud, test ideas, and learn from approaches that do not work.
- Attend most lectures and complete only work that you can explain.
05 · Course commitments
What students can expect
- Published rulesThe grading rubric and course requirements are available from the start of the semester.
- Timely recordsProgress and grades will be updated on CourseWorks within one week.
- Problems from scratchLectures will include the false starts and failed approaches that polished editorials often omit.
- Rigor with supportThe material will remain demanding, and being stuck will be treated as a normal part of learning it.
06 · Policies
Policies
Academic honesty
Students must follow Columbia’s Standards and Discipline policy. Submit only work that represents your own understanding; do not copy or share solution code, falsely claim a solve, or present another person’s work as your own. Clearly acknowledge collaborators and cite editorials, code, AI tools, and other outside sources whenever they are permitted. You must be able to explain every solution, review, and presentation for which you claim credit. Assignment-specific collaboration rules announced on CourseWorks also apply.
Suspected violations may be referred through Columbia’s academic-integrity process. If you are unsure whether a form of collaboration or outside help is permitted, ask the instructors before submitting.
Accessibility and course changes
Documented accommodations and excused circumstances supersede default timing or attendance expectations. The schedule and TBA point opportunities may change as the semester develops; CourseWorks is the operational source for enrolled students.
Office hours are by appointment. Email Josh and Christian to arrange a meeting. Students requesting enrollment permission should include a concise summary of algorithms coursework, programming background, and competitive-programming experience.
Email Josh and Christian ↗