Boston University - Summer 2025
CAS CS 392 - Competitive Programming I
Course Staff
Course structure
- Thursdays and Fridays from 9:00 AM to 12:30 PM
- 3 and a half hours of intense programming activities
- Attendance in lectures is mandatory
-
We will use Piazza for
online
discussions.
-
Do not send me e-mails.
- Feel free to ask or answer questions on Piazza, share your ideas!
- 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.
Schedule
This schedule is subject to change, and likely will, as we progress through the semester.
Lec. |
Date |
(Tentative) Topics |
Reading |
01
|
Thu, May 22 |
Warm-up
IDE, compilers, Online judges
|
Create your account on:
Vjudge
Codeforces
Kattis
|
02
|
Thu, May 29
|
Two pointers
Greedy
Complete Search
|
CSES 8.1
CSES 6
CSES 5
CP4 3, 8, 9
|
03
|
Thu, Jun 05
|
Sliding Window
Binary search
Dynamic programming
|
CSES 8.3
CSES 3.3
CSES 7
|
04
|
Fri, Jun 06 |
Prefix sum array
Graph traversal
Union-find structure
|
CSES 9.1
CSES 12
CSES 15.2
|
05
|
Thu, Jun 12 |
Sorting
Bit representation and operations
Bit optimizations: dynamic programming revisited
|
CSES 3
CSES 10.2
CSES 10.5
|
06
|
Fri, Jun 13
|
Working with numbers
Modular arithmetic
Prime numbers
|
CSES 1.3
CSES 1.4
CSES 21.2
|
07
|
Fri, Jun 20 |
Fenwick trees
Segment trees
|
CSES 9.2
CSES 9.3
|
08
|
Thu, Jun 26 |
Final contest
|
Everything so far
|
Textbooks
You can support the authors by purchasing the books.
Participation, course atmosphere, diversity, and inclusion
-
You will get the full participation points if you attend at least 85% of the possible lectures.
-
If you end up attending x% of the lectures, where x < 85, you will get x/85 of the points.
-
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
- Your grade will be based on the EMRN rubric.
- The rubric was created by Rodney
Stutzman and Kim Race, where it originated as the "EMRF" rubric in a 2004 article in
Mathematics Teacher magazine.
- Classwork will consist of:
- Weekly group coding in-person assignments with up to 2 people:
- 7 attendance quizzes - 1 per lecture
- 21 short problems - 3 per lecture
- 21 long problems - 3 per lecture
- 7 debugging tasks - 1 per lecture
- 1 individual in-class contest
- A numerical scale will be used to compute your grade based on the number of
completed assignments/category:
- One quizz – up to 1 point, based on correctness
- One lecture you attend – up to 1 point based on arrival and departure times
- One short problem = 1 point, maximum of 2 points per week (noncumulative)
- One long problem = 1 point, maximum of 2 points per week (noncumulative)
- One debug task = 1 point
- One contest – up to 6 points, one per solved problem
- You have up to one week to contact the staff members to request ONE makeup
of a missing assignment (except for the contest).
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.
- We will compare your programming assignments with JPLAG. You may share design
ideas with your fellow students. You
may not share code in any way.
- 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.
Grade distribution based on points
Your final letter grade is based on the minimum score in all categories.
Letter |
Attendance (7) |
Quizzes (7) |
Short (21) |
Long (21) |
Contest (6) |
Buggy (7) |
A
|
7
|
6
|
12
|
12
|
4
|
6
|
A-
|
7
|
6
|
11
|
11
|
3
|
6
|
B+
|
7
|
6
|
10
|
10
|
3
|
6
|
B
|
6
|
5
|
9
|
9
|
3
|
5
|
B-
|
6
|
5
|
8
|
8
|
2
|
5
|
C+
|
6
|
5
|
7
|
7
|
2
|
5
|
C
|
5
|
4
|
6
|
6
|
2
|
4
|
C-
|
5
|
4
|
5
|
5
|
1
|
4
|
D
|
5
|
4
|
4
|
4
|
1
|
4
|
F
|
4
|
3
|
3
|
3
|
0
|
3
|