Boston University - Fall 2025
CAS CS 392 D2 - Competitive Programming II


Course Staff

Name Office Hours
Prof. Tiago Januario Google Calendar
Coaches: Champ Laksanawisit, Ian Ding, Manny Wang

Course Introduction

  • 3 hours of intense programming activities
  • Attendance in lectures is mandatory
  • We will use Piazza for online discussions.
  • Do not send e-mails to the course staff.
  • Feel free to ask or answer questions on Piazza, share your ideas, but not your code.
  • You are not allowed to post solutions online.
  • For sensitive, specific questions and solutions, use private posts.
The structure of this course is based on CS 104c: Competitive Programming offered by Etienne Vouga and Glenn P. Downing at University of Texas - Austin.

Student Learning Outcomes

A competitive programming course enhances participants' algorithmic problem-solving and data structure skills. It emphasizes efficient code writing, improving proficiency in a specific language, and developing a competitive mindset with effective time management.

Course Objectives

The course emphasizes debugging techniques, mathematical and logical thinking, and fosters a competitive mindset. Additionally, it covers problem-solving patterns, and encourages consistent practice to excel in coding competitions and real-world software development scenarios.

Syllabus

This course covers essential algorithms for competing in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics. Prerequisites: CS131 - Combinatoric Structures and CS112 - Introduction to Programming I, or instructor's permission.

Schedule

This schedule is subject, and likely, to change as we progress through the semester.
Lec. Date (Tentative) Topics Reading Assignment
1 Fri, Sep 5 Prefix Sums
Sorting
Greedy
CSES 3
CSES 6
CSES 9.1
Assignment 01
2 Fri, Sep 12 Two pointers
Sliding window
CSES 8.1
CSES 8.3
Assignment 02
3 Fri, Sep 19 Graph algorithms CSES 12 Assignment 03
4 Fri, Sep 26 Binary search CSES 3.3 Assignment 04
5 Fri, Oct 3 Union-find structure CSES 15.2 Assignment 05
6 Fri, Oct 10 Segment Tree CSES 9.3 Assignment 06
7 Fri, Oct 17 Written exam + solo contest Assignment 07
8 Fri, Oct 24 Dynamic Programming I CSES 7 Assignment 08
9 Fri, Oct 31 Dynamic Programming II CSES 10.5 Assignment 09
10 Fri, Nov 7 KMP (Knuth-Morris-Pratt) CP 6.4.2 Assignment 10
11 Fri, Nov 14 Aho-Corasick algorithm (Tries) CP-Algorithms Assignment 11
12 Fri, Nov 21 Written exam + team contest - -
- Fri, Nov 28 Thanksgiving break - -
13 Fri, Dec 5 Oral exam - -

Textbooks

You can support the authors by purchasing the books.

Attendance, atmosphere, course atmosphere, diversity and inclusion

  • Attendance will be tracked with Piazza polls.
  • We intend to provide a positive and inclusive atmosphere in classes and on the associated virtual platforms.
  • If you require special accommodations for exams or coursework, please send a private message to an instructor and forward any relevant documentation from Disability and Access Services.
  • If you are facing unusual circumstances during the semester, please reach out to us early on so that we can find a good arrangement.
Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students.

Grading Rubric

Component Max Points Details / How to Earn Points
Coding 11 1 coding assignment per week with at least 6 coding problems.
Earn 1 point each week by solving at least 3 problems.
Contest 2 Solo contest (1 person): solve ≥2 problems to earn 1 point.
Team contest (up to 3 people): solve ≥3 problems to earn 1 point.
Buggy 11 Earn 1 point for each solved problem per week.
Written Report 11 Submit on Gradescope before the deadline to earn 1 point per week.
Feedback will be provided upon request.
Written Exam 6 2 exams per semester - no colaboration allowed
Earn at most 3 points per written exam.
Oral Exam 3 Points awarded based on performance in reports, contests, and coding.
Attendance 13 Attend class; 1 point per week for 13 weeks.

Grade distribution

Your final letter grade is based on the minimum score in all components.
Letter Percentages Coding Contest Buggy Report Written Exam Oral Exam Attendance
A 89% 10 2 10 10 4 3 11
A- 82% 9 2 9 9 4 3 10
B+ 75% 8 2 8 8 4 3 9
B 68% 8 2 7 7 3 2 9
B- 64% 7 2 7 6 3 2 9
C+ 57% 6 1 6 6 3 2 8
C 52% 5 1 5 6 3 1 8
C- 45% 4 1 5 5 2 1 7
D 39% 3 1 4 4 2 1 7
F 32% 2 1 4 4 1 0 6

Course Policies

  • In this class, we permit discussing problem solutions with other students, asking others for conceptual help with a problem, looking online for tutorials explaining how to solve a problem, or getting help from a classmate debugging code you wrote. However, all code you turn in must be your own. The penalty for copying code (either from another student or the Internet) is an F in the course.
  • No makeups or deadline extensions will be provided. All assignments, contests, exams, and reports must be completed on time. Exceptions will only be considered in documented cases of medical or personal emergencies.
  • You may use AI as a learning aid to solve the weekly assignments, but never during the midterms nor as a substitute for your own coding.
    • Permitted: Asking AI for explanations of concepts, hints for debugging, clarifications of error messages, or suggestions for improving code readability and efficiency.
    • Permitted: Using AI to explore why your solution works (or fails) and to compare alternative problem-solving strategies.
    • Permitted: Consulting reputable algorithm and programming resources such as CP-Algorithms, GeeksforGeeks, or similar sites to study standard algorithms, data structures, or language syntax, and to review well-known template implementations — provided you write and adapt all submitted code yourself.
    • Not permitted: Using AI to generate full or partial solutions, complete programs, or code snippets that you directly submit as your own work.
    • Not permitted: Copying or pasting your code, test cases, or the problem description into any large language model (LLM) tool or search engine.
    • Not permitted: Uploading or sharing course problems, starter code, or solutions to public platforms, including GitHub, Stack Overflow, Reddit, or Discord.
    • Not permitted: Using AI or automated tools to test, optimize, or refactor code beyond the intent of the assignment or competition rules.
    • Not permitted: Collaborating with others on individual assignments or contests, unless explicitly authorized by the instructor.
    • Not permitted: Submitting code or explanations that you cannot fully explain during a oral exam.
  • Title IX is a federal law that protects against sex and gender-based discrimination, sexual harassment, sexual assault, sexual misconduct, dating/domestic violence, and stalking at federally funded educational institutions. Boston University is committed to fostering a learning and working environment free from discrimination in all its forms.