CSI 4144: Competitive Learning, Spring 2026
Overview
This course is a topics course in problem solving and algorithms. It is modeled on the collaborative and competitive environments at the International Collegiate Programming Contest (ICPC). Each week we will discuss a topic, and the assignments will be programming-based problems related to that topic.
Practical information
Our class meetings are in Cashion C202.
My office location and office hours are listed on my home page. I am glad to talk to students during and outside of office hours. If you can't come to my office hour, please make an appointment for another time, or just stop by.
Most of the coursework will be solving problems on Baylor's Kattis Judge. You may need to create an account. After doing that, choose the current semester from the link above, and register on Kattis. If you need a registration key, your professor will provide that.
Schedule
The schedule of assignments will be on Kattis.
Students who are writing problems (2nd/3rd semester) should keep these dates in mind:
- Problem ideas are due in the second week.
- Complete drafts are due in the 10th week. These should be complete, not just writeups.
- Final, polished drafts are due in the last week of class.
This semester we will have an additional activity called an "Instructional Monday". This is a to have an additional class meeting or activity on a non-class day, to make up for the fact that the university's schedule does not have enough Monday meetings. The current plan is to have a programming activity on Kattis on Saturday April 11th, but we may reschedule that if needed. I will let you know if it changes.
Textbooks & resources
The textbook for this course is "Guide to Competitive Programming: Learning and Improving Algorithms Through Contests" (3rd edition) by Antti Laaksonen, which is available through Amazon, among other places.
The author has also made a (significantly different) draft version of the text available for free, which is called the Competitive Programmer’s Handbook.
I encourage you to get the published 3rd edition, but I think you could manage with the free online draft. The books are different enough that I am providing the list of the Table of Contents for the print version (3rd edition) with permission by the author. You can use this table of contents to see the differences with the free draft of the earlier version.
Other useful textbooks for this course include:
- Competitive Programming by Steven Halim and Felix Halim and Suhendry Effendy (Editions 1 and 2 are free online, edition 3 is inexpensive; edition 4 is current).
- Principles of Algorithmic Problem Solving by Johan Sannemo.
These language references are essential:
The following books may also be useful:
- Programming Challenges by Steven Skiena
- The Algorithm Design Manual by Steven Skiena
- Introduction to Algorithms by Cormen et al.
- Programming Pearls by Jon Bentley
- Thinking in C++ (2nd edition) by Bruce Eckel
- Any other data structures, algorithms, and language reference books.
Online programming contest software:
- Open Kattis -- this is the software used to judge many ICPC contests, including the world finals.
Course handouts
- C++ STL cheatsheet 1: vectors, pairs, iterators, algorithms
- C++ STL cheatsheet 2: sets, maps, stringstreams
Grading
Grades will be assigned based on the following breakdown:
- First semester students:
- # of problems completed: 100%
- Second and third semester students:
- # of problems completed: 80%
- problem(s) developed: 20%
Final letter grades will be assigned at the discretion of the instructor, but
here is a minimum guideline for letter grades:
A: 90-100, B+: 88-89, B: 80-87, C+: 78-79, C: 70-77, D: 60-69, F: 0-59
Solving problems
You earn points by solving problems on Kattis during the time allotted for the assignment/exam/competition. The number of points should be visible on Kattis.
For weeks designated as "exams" or "contests", we will work together to find an in-class examination time that works for everyone.
Policies
- This website contains the official course information. Please check it regularly for updates.
- All work in this course is strictly individual, unless the instructor explicitly states otherwise. While discussion of course material is encouraged, collaboration on assignments is not allowed. Collaboration includes (but is not limited to) discussing with anyone (other than the professor) anything that is specific to completing an assignment. You are encouraged to discuss the course material with the professor, preferably in office hours, and also by email.
- Bring any grading correction requests to your professor's attention within 2 weeks of receiving the grade or before the end of the semester, whichever comes first.
Academic honesty
I take academic honesty very seriously. Many studies, including one by Sheilah Maramark and Mindi Barth Maline have suggested that "some students cheat because of ignorance, uncertainty, or confusion regarding what behaviors constitute dishonesty" (Maramark and Maline, Issues in Education: Academic Dishonesty Among College Students, U.S. Department of Education, Office of Research, August 1993, page 5). In an effort to reduce misunderstandings, here is a minimal list of activities that will be considered cheating in this class:
- Using a source other than the optional course textbooks, the course website, or your professor to obtain credit for any assignment.
- Copying another student's work. Simply looking over someone else's source code is copying.
- Providing your work for another student to copy.
- Collaboration on any assignment, unless the work is explicitly given as collaborative work. Any discussion of an assignment or project is considered collaboration.
- Plagiarism.
- Studying tests or using assignments from previous semesters.
- Providing someone with tests or assignments from previous semesters.
- Turning in someone else's work as your own work.
- Giving test questions to students in another class.
- Reviewing previous copies of the instructor's tests without permission from the instructor.
With regard to use of AI tools, all assignments should be your original work and should not be produced in part or in total with the assistance of artificial intelligence (for example, ChatGPT, Grammarly, Gemini, or some other resource). Use of artificial intelligence without my explicit permission constitutes a violation of the Honor Code at Baylor University.
The goal of this course is that you understand the material in it. Using shortcuts like AI may be able to help get you a solution to a particular assignment, but that violates the honor code and damages your understanding. When you have questions, ask your instructor, not AI.
Title IX Office
Baylor University does not discriminate on the basis of sex or gender in any of its education or employment programs and activities, and it does not tolerate discrimination or harassment on the basis of sex or gender. This policy prohibits sexual and gender-based harassment, sexual assault, sexual exploitation, stalking, intimate partner violence, and retaliation (collectively referred to as prohibited conduct). For more information on how to report, or to learn more about our policy and process, please visit www.baylor.edu/titleix. You may also contact the Title IX office directly by phone, (254) 710-8454, or email, TitleIX_Coordinator@baylor.edu.
Copyright © Greg Hamerly, with some content
taken from a syllabus by Jeff Donahoo.
Computer Science Department
Baylor University