Boston University - Spring 2025
CAS CS 392 - Competitive Programming I
Course Staff
Name |
Office Hours |
Prof. Tiago Januario
|
Fridays, 2:00 p.m. - 3:00 p.m. at CAS 213
Thursdays, 10:00 am - 11:00 am at CDS 911
|
Teaching assistant: Champ Laksanawisit
|
Fridays, 1:00 p.m. - 4:00 p.m. at CAS 213
|
Course structure
- 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 base 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.
Communication
-
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.
- For sensitive, specific questions and solutions, use private posts.
Prerequisites
- CS131 - Combinatoric Structures, or equivalent.
- CS111 - Introduction to Programming I, or equivalent.
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, and likely, to change as we progress through the semester.
Lec. |
Date |
(Tentative) Topics |
Reading |
Assignment |
01
|
Mon, Jan 27 |
Two pointers
Slide Window
|
CSES 8.1
CSES 8.3
|
Homework 01
|
02
|
Mon, Feb 03
|
Prefix sum array
Sortings
|
CSES 9.1
CSES 3
|
Homework 02
|
03
|
Mon, Feb 10
|
Greedy
|
CSES 6
|
Homework 03
|
04
|
Tue, Feb 18 |
Complete Search
|
CSES 5
CP4 3, 8, 9
|
Homework 04
|
05
|
Mon, Feb 24 |
Contest 01 - In Class
|
|
Homework 05
|
06
|
Mon, Mar 03 |
Dynamic Programming
|
|
Homework 06
|
07
|
Mon, Mar 17 |
Network flow
|
|
Homework 07
|
08
|
Mon, Mar 24 |
Matching
|
|
Homework 08
|
09
|
Mon, Mar 31 |
Contest 02 - In Class
|
|
Homework 09
|
10
|
Mon, Apr 07 |
Mathematics
|
|
Homework 10
|
11
|
Mon, Apr 14 |
String processing
|
|
Homework 11
|
12
|
Wed, Apr 23 |
Computational geometry
|
|
Homework 12
|
13
|
Mon, Apr 28 |
Contest 03 - In Class
|
|
Homework 13
|
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
- 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 homework coding assignments with:
- 3 short problems
- 3 long problems
- Buggy code
- 3 In-class contests
- Solve a minimum number of problems in at least one Codeforces live contest according to the following scale:
- 1 problem from Division I, or
- 2 problems from Division II, or
- 3 problems from Division III, or
- 4 problems from Division IV.
- A numerical scale will be used to compute your grade based on the number of
completed assignments/category:
- One homework problem – 1 point
- One lecture you attend – 1 point
- One solved Buggy code – 1 point
- You have up to one week to contact the staff members to request a makeup
assignment.
- Can do this up to 3 times/assignment per category
Scores for each category
Category |
Score |
Make up |
Attendance
Total: 13
|
1 per lecture you attend
|
You can make up attendance
by hosting a workshop on Fridays
Only three times per semester!
|
Short description problems
3 per homework
Total: 39
|
1 per each ”short"/"long" problem you solve
|
Request a make up within
one week after the deadline
or before the end of the semester
(whatever comes first).
Only three times per semester!
|
Short long problems
3 per homework
Total: 39
|
Buggy code
Total: 13
|
1 per each code you fix
(must use the provided code)
|
Contests
Total: 3
8 problems per contest
|
1 per problem solved during the contest
|
Request a make up within
one week after the event
or before the end of the semester
(whatever comes first).
Only once times per semester!
|
Bonus points
- One bonus problem will be added so some homework assignments. Each bonus problem awards you one point. You can use each extra
point in any of the following categories:
- Short problems
- Long problems
- You can't use bonus points in any of the following categories:
- Buggy code
- In class contest
- Codeforces live contest
- Attendance
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
Your final letter grade is based on the minimum score in all categories.
Letter |
Attendance |
Short |
Long |
Contest |
Buggy |
Codeforces* |
A
|
13
|
36
|
33
|
9
|
13
|
1
|
A-
|
12
|
33
|
28
|
8
|
12
|
0
|
B+
|
11
|
29
|
23
|
7
|
11
|
0
|
B
|
10
|
25
|
18
|
6
|
10
|
0
|
B-
|
9
|
21
|
13
|
5
|
9
|
0
|
C+
|
8
|
17
|
12
|
4
|
8
|
0
|
C
|
8
|
13
|
11
|
3
|
7
|
0
|
C-
|
7
|
12
|
10
|
2
|
6
|
0
|
D
|
7
|
11
|
9
|
1
|
5
|
0
|
F
|
6
|
10
|
6
|
0
|
4
|
0
|