Boston University - Fall 2025
CAS CS 392 D2 - Competitive Programming II
Course Staff
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.