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
- Check our Google calendar for our 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.
- Geany - macOS/Windows/Linux
- CP Editor - macOS/Windows/Linux
- Code::Blocks - Windows/Linux
- Dev-C+++ - Windows
Recommended Reading
- (CSES) Competitive Programmer’s Handbook by Antti Laaksonen (Free PDF).
- (CP3) Competitive Programming 3 by Steven & Felix Halim.
- (C++) C++ Tutorial by Alex Allain
- (Book) Fundamentals of C++ Programming by Richard L. Halterman
- Learn C++, I'm sorry by the ads :-(
- Introduction To C And C++ by MIT OpenCourseWare
- Programming: Principles and Practice Using C++ by Bjarne Stroustrup
- C++ Core Guidelines by Bjarne Stroustrup
Schedule
| Date | Topics (Lecture) | Readings | Practice |
|---|---|---|---|
| Jan 23 |
C++ Bootcamp I
|
||
| Jan 30 |
C++ Bootcamp II
|
||
| Feb 06 |
Data Structures
|
|
|
| Feb 13 |
Core Patterns I
|
|
|
| Feb 20 |
Core Patterns II
|
|
|
| Feb 27 |
Midterm Week
|
- |
|
| Mar 06 |
Number Theory
|
CSES Ch. 9 |
|
| Mar 13 | Spring Break (No Class) | - | - |
| Mar 20 |
Graph Theory I - Online
|
CSES Ch. 11, 12 |
|
| Mar 27 |
Graph Theory II
|
CSES Ch. 13, 15 |
|
| Apr 03 |
Dynamic Programming I
|
CSES Ch. 7 |
|
| Apr 10 |
Dynamic Programming II
|
CSES Ch. 7 |
|
| Apr 17 |
Advanced Structures
|
CSES Ch. 9 |
|
| Apr 24 |
Final exam
|
- | - |
| Upon arrangement |
Oral Exam
|
- | - |
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.