COMP 288: Competitive Programming, Spring 2020

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.

Logistics

Content

Description

This course will prepare students for programming contests, such as CCSC’s (Consortium for Computing Sciences in Colleges) student programming contest or the ACM (Associating for Computing Machinery) ICPC (International Collegiate Programming Contest) contest. By preparing for these contests students also gain valuable programming practice and review important computer science concepts learned in other classes. Most class meetings will be spent working on programming problems, either individually or in teams of 3.

Sources

There is no required course textbook, but any of the following are highly recommended:

It is highly recommended that you have a physical copy of one of these during any contest. Internet access is not allowed during competitions, nor are electronic devices.

During some class periods we may solve problems together using either REPL.it or binarysearch.io.

Topics

The exact topics covered will depend on the background of the students and how quickly they move through the material. Potential topics include:

• How Contests Work • Arithmetic and Algebra
• Contest Software • Combinatorics
• Solution Skeletons and I/O • Backtracking
• Data Structures • Graph Traversal
• Strings • Graph Algorithms
• Sorting • Dynamic Programming
• Grids • Computational Geometry

Assessment

The class will be graded on a credit/no credit basis. For credit, you must complete all but one of the assigned problems (usually 1 per week), complete any assigned readings (which will be distributed to you), attend class regularly, and participate in class. All submitted code for assigned problems must run without crashing or generating an error (though it may not successfully solve the problem), and at least one submission must fully solve the problem. There is no final exam.

The weekly workload for this course will vary by student and by week, and will especially vary due to the nature of participation courses. On average, students should expect 4-5 hours per week on this course, including class meeting time.

Category Time/Week (Hours)
Class Meetings 2
Assigned Problems 2
Total 4

Schedule

This schedule is provided only as a guideline. The actual topics and scheduling depends on the background of students and how quickly the material is covered.

Date Topic Assignments and Readings
Wed 01/22 Contests and Contest Software Online Judge, Specifications
Fri 01/24   Problem
Wed 01/29 Solution Skeletons Skeletons
Fri 01/31   Problem (pick one; no judge)
Wed 02/05 Precise Input/Output  
Fri 02/07    
Wed 02/12 Key Data Structures A or B
Fri 02/14    
Wed 02/19 Debugging, Strings Problem OR Debugging Tutorial
Fri 02/21    
Wed 02/26 Backtracking Problem
Fri 02/28    
Wed 03/04 Backtracking  
(Fri 03/06) (Exam Day for half-semester classes)  
(Wed 03/11) (Spring Break)  
Wed 03/18 Cancelled – COVID-19  
Fri 03/20    
Wed 03/25 Backtracking  
Fri 03/27    
Wed 04/01 Graph Traversal Problem
Fri 04/03    
Wed 04/08 Graph Algorithms Problem
Fri 04/10    
Sat 04/11 CCSC Central Plains Competition (Cancelled – COVID-19)  
Wed 04/15 Dynamic Programming I Problem
Fri 04/17    
Wed 04/22 Dynamic Programming II Problem
Fri 04/24    
Wed 04/29 Interview Questions Problem
Fri 05/01    
Wed 05/26    

Note that there is no final exam.

Monmouth College Services