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 |
Core Patterns I
|
||
| Feb 13 |
Core Patterns II
|
||
| Feb 20 |
Core Patterns III
|
||
| Feb 27 |
Midterm Week
|
- |
|
| Mar 06 |
Graph Theory I - Online
|
CSES Ch. 11, 12 | |
| Mar 13 | Spring Break (No Class) | - | - |
| Mar 20 |
Number Theory - Online
|
CSES Ch. 9 | |
| 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) |
|---|---|---|---|
| 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.