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
  • Maps, Sets, Iterators
Feb 06 Core Patterns I
  • Two Pointers
  • Prefix sum
  • Sorting (Custom Comparators)
Feb 13 Core Patterns II
  • Binary Search (Search on Answer)
Feb 20 Core Patterns III
  • Greedy Strategies
  • Complete Search
Feb 27 Midterm Week
  • Written Exam (45 minutes)
  • Solo Speed Contest (2 Hours)
-
  • Upsolving Contest Problems
Mar 06 Graph Theory I - Online
  • BFS & DFS
  • Flood Fill
CSES Ch. 11, 12
Mar 13 Spring Break (No Class) - -
Mar 20 Number Theory - Online
  • Modulo Arithmetic
  • Primes & GCD
CSES Ch. 9
Mar 27 Graph Theory II
  • Dijkstra's Algorithm
  • Union-Find (DSU)
CSES Ch. 13, 15
Apr 03 Dynamic Programming I
  • Memoization & Recursion
  • 1D DP (Coin Change)
CSES Ch. 7
Apr 10 Dynamic Programming II
  • Grid Paths
  • Longest Common Subsequence
CSES Ch. 7
Apr 17 Advanced Structures
  • Segment Trees
  • Range Queries
CSES Ch. 9
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)
1. The High-Level Idea (50 pts)
How did you solve it?
Explains the algorithm conceptually without reading the code. Clearly justifies the approach (e.g., "I used Dijkstra's because we needed the shortest path"). Explains the general idea but needs prompting or relies heavily on looking at the screen to remember the strategy. Cannot explain the algorithm conceptually. Clearly does not understand the underlying strategy used.
2. The Code Walkthrough (50 pts)
Can you read your code?
Accurately explains what specific variables do and exactly how the lines of code execute the high-level idea. Struggles with syntax or minor variable roles but successfully traces the main logic of the algorithm. Cannot explain lines of code. Says "I don't know why that's there" or "I just copied the template."
3. The "What If?" (50 pts)
Do you understand the boundaries?
Successfully explains the impact of a constraint change or code modification (e.g., "What if the array was already sorted?" or removing a break). Makes a correct logical attempt to answer the "What If" but struggles with the exact C++ syntax or misses edge cases. Cannot identify the impact of the change. Indicates they did not write or understand the original logic.

Zero-Tolerance Policy: If a student scores "Unacceptable" in Part 1 (The "The High-Level Idea"), they receive a 0 on the exam and are flagged for an Academic Integrity review regarding the rest of their coursework.


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.