Competitive Programming

CS 392 - Spring 2026


Course Staff

Coach Tiago Januario
Course Assistants Champ Laksanawisit
Ian Ding
Jay Patel
Manny Wang

Course Format

  • This course was designed to prepare you for technical job interviews and the ICPC.
  • Format: 3-hour per week workshops with intense coding.
  • Attendance: Mandatory for all lectures.
  • Communication: Use Piazza for all questions.
  • Email Policy: Do not email the staff. Use Piazza.
  • Discussion Rules: Share ideas on Piazza, but never share your code publicly.

Office hours


Learning Goals

By the end of this course, you will:

  • Translate programming logic into efficient C++ code.
  • Master the Standard Template Library (STL).
  • Identify common patterns in Technical Interviews.
  • Manage time effectively during high-pressure contests.

We focus on:

  • Debugging: Finding errors without help.
  • Math & Logic: Thinking strictly and formally.
  • Speed: Writing accurate code quickly.
  • Consistency: Solving problems every single week.

Tools & Textbooks

Required Software (No AI Allowed)

We recommend these AI-Free editors.


Schedule

Date Topics (Lecture) Readings Practice
Jan 23 C++ Bootcamp I
  • cin, cout, variables
  • Basic Simulation
Jan 30 C++ Bootcamp II
  • std::vector, std::string
  • References vs Values
Feb 06 Data Structures
  • Maps, Sets, Frequency Arrays
  • Iterators
  • Codeforces: Registration System
  • AtCoder: ABC118B
Feb 13 Core Patterns I
  • Sorting (Custom Comparators)
  • Two Pointers
  • Codeforces: Sereja and Dima
  • AtCoder: ABC088B
Feb 20 Core Patterns II
  • Binary Search (Search on Answer)
  • Greedy Strategies
  • CSES: Factory Machines
  • AtCoder: ABC146C
Feb 27 Midterm Week
  • Written Exam (45 minutes)
  • Solo Speed Contest (2 Hours)
-
  • Upsolving Contest Problems
Mar 06 Number Theory
  • Modulo Arithmetic
  • Primes & GCD
CSES Ch. 9
  • CSES: Subarray Sums II
  • AtCoder: ABC060B
Mar 13 Spring Break (No Class) - -
Mar 20 Graph Theory I - Online
  • BFS & DFS
  • Flood Fill
CSES Ch. 11, 12
  • CSES: Counting Rooms
  • AtCoder: ABC007C
Mar 27 Graph Theory II
  • Dijkstra's Algorithm
  • Union-Find (DSU)
CSES Ch. 13, 15
  • CSES: Shortest Routes I
  • AtCoder: ABC097D
Apr 03 Dynamic Programming I
  • Memoization & Recursion
  • 1D DP (Coin Change)
CSES Ch. 7
  • CSES: Minimizing Coins
  • AtCoder: DP Contest A
Apr 10 Dynamic Programming II
  • Grid Paths
  • Longest Common Subsequence
CSES Ch. 7
  • CSES: Grid Paths
  • AtCoder: DP Contest H
Apr 17 Advanced Structures
  • Segment Trees
  • Range Queries
CSES Ch. 9
  • CSES: Dynamic Range Sum
  • AtCoder: ABC185F
Apr 24 Final exam
  • Written Exam (45 minutes)
  • Group contest (ICPC Style)
- -
Upon
arrangement
Oral Exam
  • A booking link will be provided soon
- -

Grading Rubric

We use a Points Accumulation System. You do not need to be perfect to get an A, but you must be consistent.

Total Points Available: 1000

Component Points Description
Weekly Coding 400 12 assignments. Solve 5 out of 7 problems each week.

Checkpoint:
You must submit at least 3 problems by Wednesday (11:59 PM). The remaining problems are due Friday. Missing the Wednesday checkpoint results in a -10% penalty for that week.
Written Exams 200 2 Exams (100 pts each). Pen-and-paper, focusing on logic and complexity.
Contests 150 2 Contests (Solo & Team). Points awarded for problems solved during the contest.
Upsolving: If you fail to solve a problem during the contest, you can solve it by Monday for 50% credit.
Buggy Report 100 10 short reports. Find and fix the bug in the provided report and answer some questions.
Oral Exam 150 Required to Pass. You must explain one of your own past submissions to the instructor.
Attendance 50 Required to Pass. You must attend at least 75% of the classes.

Oral Exam Rubric

Total Points: 150 (15% of Course Grade)

Component Proficient (High Pass) Developing (Low Pass) Unacceptable (Fail)
A. The Walkthrough (40%)
Can you read code?
Explains the logic fluently. Correctly identifies what specific variables (e.g., vector<int> adj) store and why they were chosen. Struggles with syntax but explains the algorithm's general idea correctly. Cannot explain lines of code. Says "I don't know why that's there" or "I just copied the template."
B. The "What If" (30%)
Can you write code?
Successfully modifies the code live to handle a constraint change (e.g., "Change this Max Heap to a Min Heap" or "What if nodes were 1-indexed?"). Makes the correct logical attempt but struggles with exact C++ syntax for the modification. Cannot identify where to apply the change. Indicates they did not write the original logic.
C. Complexity (30%)
Do you understand code?
Correctly identifies Time (\(O(N)\)) and Space complexity. Explains why (e.g., "The loop runs N times and the map is log N"). Guesses the complexity correctly but gives a vague or slightly incorrect justification. Wildly incorrect guess (e.g., says \(O(1)\) for a loop).

Zero-Tolerance Policy: If a student scores "Unacceptable" in Part B (The "What If"), they receive a 0 on the exam and are flagged for an Academic Integrity.


Grade Scale

  • A: 930+ points
  • A-: 900-929 points
  • B+: 870-899 points
  • B: 830-869 points
  • C: 700-829 points
  • F: < 700 points or Failure of Oral Exam.

Course Policies

1. This is a strict C++ course. The use of AI to generate code is prohibited.

  • BANNED: GitHub Copilot, ChatGPT (for code generation), Tabnine, Cursor.
  • ALLOWED: Using LLM as a tutor (e.g., "Explain what a segmentation fault is").
  • Consequence: If you use AI to write your code, you will fail the Oral Exam, which results in an automatic F in the course.

2. We monitor submission timestamps.

  • Submitting multiple complex solutions within a short period of time is considered a suspicious behavior.
  • If requested, you will be required to show your local IDE history and file modification timestamps to prove you solved the problems sequentially over time.
  • Submit problems as you solve them. Do not accumulate solutions to submit at the last minute.

3. Every student starts with 3 Tokens. You can use a token to:

  • Extend a Weekly Assignment deadline by 48 hours.
  • Get full credit for a missed "Buggy" report.
  • Get attendance for a missed lecture.

Complete this form and send a private Piazza post to the instructors before the deadline to use a token.

Restrictions:

  • Tokens cannot be used for Contests or Exams.
  • Tokens cannot be used retroactively (you must complete the form above and send a private Piazza post to the instructors before the deadline).
  • Tokens have no grade value. Unused tokens do not convert to bonus points. They are strictly insurance for illness or emergencies.

Diversity and Inclusion

We are committed to a positive and inclusive atmosphere. If you require accommodations for exams, please send a private message on Piazza with your documentation from Disability and Access Services.