01 · Overview
Course overview
A practical course in algorithmic problem solving: begin with patterns common in technical interviews, build toward regional ICPC contests, and finish with a bridge to the North America Championship.
- Instructor
- Christian Yongwhan Lim
- Meeting
- Mondays, 7:00–9:30 PM · September 14–December 14
- Location
- 451 Computer Science Building
- Credits
- 3 points · undergraduate · in person
- Office hours
- By appointment · email Christian
- Course site
- CourseWorks for materials, submissions, and announcements
02 · Course format
How the class works
Each class, with the exception of the first lecture, has two complementary halves. The first half focuses on instruction, including a lecture, guided examples, and discussion of problem-solving techniques. The second half focuses on active practice through a live contest or timed problem-solving session, followed by student solution presentations and discussion.
A typical 150-minute class consists of approximately 75 minutes of instruction, 50 minutes of timed problem solving, and 25 minutes of student presentations. The exact schedule may vary for designated contests, guest lectures, or special activities.
- The first two meetings form a foundations ramp: contest workflow, input and output, complexity, debugging, sorting, maps, prefix sums, and binary search. Timed work uses only material already taught; graph traversal is introduced before it becomes contest material.
- Weekly homework is tiered into two foundation problems, two core problems, and one optional challenge problem. Foundation and core homework, together with scheduled course activities, is sufficient for an A.
- Selected practice may be completed in rotating pairs, followed by an individual explanation of the solution.
- Every live contest has an asynchronous virtual-contest alternative. Credit is based on participation, reflection, and upsolving rather than rating or live solve count.
- Each contest is followed by structured upsolving of at least one previously missed problem.
- Each student gives at least one in-class presentation. Weeks without scheduled presentations use the final 25 minutes for contest debriefing or instructor-led solution discussion.
- There is no midterm or final exam.
03 · Assessment
Point-based assessment
The course offers exactly 100 core points, all available through course-controlled work, plus optional enrichment credit. A student can earn an A without an external contest, a high contest rating, a discretionary bonus, or a particular live solve.
| Core component | Available | One beginner-friendly path to 80 |
|---|---|---|
| Foundation and core homework | 52 | 44 |
| In-class practice and reflection | 12 | 10 |
| Solution presentation | 8 | 7 |
| Interview practice | 9 | 9 |
| Guided contests and upsolving | 19 | 10 |
| Total | 100 | 80 |
The example above is a planning aid, not a required mix. Students may combine the core components differently, and optional enrichment points may replace missed core points.
Core points
Across the semester, each weekly set contains two foundation and two core problems worth one point each. Substantial, explainable progress may earn partial credit. The optional challenge problem is enrichment.
One point is available in each class after the first for active practice and a brief reflection. An asynchronous alternative is available for an excused absence.
Scored with the published rubric below. Every student gives at least one presentation; additional presentations may earn enrichment credit when space permits.
Three designated mock interviews or interview sets are worth three points each for a complete attempt, explanation, complexity analysis, and tests.
Points come from scheduled timed sessions, reflections, and a final upsolve portfolio. Performance and rating do not determine credit, and every live session has a virtual alternative.
Presentation rubric
| Criterion | Points | Evidence |
|---|---|---|
| Correctness | 2 | The algorithm is correct and its assumptions are stated. |
| Reasoning | 2 | The explanation connects the key observation to the algorithm. |
| Complexity | 1 | Time and space complexity are analyzed accurately. |
| Examples and testing | 1 | Examples, edge cases, and implementation risks are addressed. |
| Communication and questions | 2 | The presentation is clear, organized, and responsive to questions. |
Letter-grade thresholds
| Grade | Total points | Grade | Total points |
|---|---|---|---|
| A+ | 90 or more | A | 80–89 |
| A− | 75–79 | B+ | 70–74 |
| B | 65–69 | B− | 60–64 |
| C+ | 55–59 | C | 50–54 |
| C− | 45–49 | D | 40–44 |
| F | Below 40 |
Optional enrichment
One optional challenge problem may be offered with each weekly set.
Complete a designated Codeforces or AtCoder contest plus a short upsolve or reflection. A particular rating or live solve is not required.
CULC, the GNY Regional, and announced equivalents reward participation plus solved problems.
Approved Codeforces, Kattis, LeetCode, and similar problems earn 0.1 point each.
Approved topic reviews and problem-writing work may earn credit under criteria posted before the work begins.
CourseWorks contains the submission instructions, rubrics, calendar of point opportunities, and current progress record.
04 · Expectations
Preparation and participation
- Arrive able to write small programs using arrays or lists, maps or dictionaries, stacks, queues, sorting, functions, loops, and simple recursion.
- Understand basic Big-O notation. COMS W3134 or W3136 and discrete mathematics are recommended preparation.
- Prior competitive-programming experience and a contest rating are not required.
- C++, Java, and Python are supported with tested starter templates and short course references. C++ is recommended, but not required, for students who intend to compete in ICPC.
- Come prepared to reason aloud, test ideas, debug carefully, 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, exact 100-point core, and course requirements are available from the start of the semester.
- Several paths to creditHomework-centered, contest-centered, and communication or problemsetting paths are supported. No rating, solve-count gate, external event, or single assessment determines the course grade.
- Problems from scratchLectures include guided examples, false starts, and failed approaches that polished editorials often omit.
- A deliberate progressionThe course begins with a foundations ramp and moves from interview patterns to regional contest material and an NAC bridge without making advanced enrichment a prerequisite for an A.
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 instructor before submitting.
Accessibility and course changes
Documented accommodations and excused circumstances supersede default timing or attendance expectations. The schedule and announced point opportunities may change as the semester develops; CourseWorks is the operational source for enrolled students.
Office hours are by appointment. Students requesting enrollment permission should include a concise summary of programming background and algorithms coursework; prior contest experience is optional.
Email Christian ↗