Location and Times
- Course Title: Introduction to Competitive Programming
- Rubric: CS 491 CAP
- Dates: January 22, 2025 to May 7, 2025
- Time: 14:00
- Location: 1320 Everett
- Instructor: Mattox Beckman
- Recommended Textbooks:
- Prerequisites: CS 225. We will use C++ for our content, but you are welcome to use a different language.
- Office Hours: TBA
Purpose
The purpose of this course is to prepare you to compete in ICPC-style competitive programming contests. While this will help you compete in the Illinois Programming League, Hacker Rank, Code Forces, or similar contests, learning this material has been shown to help with programming assignments in other courses, and many students learn this material to become confident and skillful in coding interviews.
Objectives and Outcomes
Upon successfully completing this course, you will have solved over 100 programming problems. You will have learned to select the correct algorithm depending on the problem constraints and available time and memory resources. You will have learned to implement your solutions quickly and accurately, being given minimal guidance if your solution is incorrect. You will have learned to work on your own and in an ICPC style team of students using one computer. And hopefully you will have a lot of fun doing so!
Four credit students will also learn to write problems and test cases.
Class Structure
In the beginning of each class period there will be a mini-lecture about the algorithm of the day. After about 20 minutes, a daily contest will be opened for you to try the algorithms we discussed. There will be one problem intended to be solved in class (or shortly after) each day; that will be open for two business days. You are supposed to use the class time to solve problems and to help your classmates (or get help from your classmates) to solve these problems.
Once in a while will also release a larger set of problems that require a variety of approaches so you have practice picking the correct algorithm to use.
Assignments and Grading
This course is a Credit/No Credit course.
There are two components to your grade: attendance and solving problems.
Attendance
Attendance is required, and will be taken. Part of the process of learning competitive programming is helping each other understand the problems and the algorithms that solve them. Some of the lecture topics involve how to compete as a team, and you will practice this during some of the class periods.
You must have attended (or have been excused from) 70% of the available lectures to pass this class. If there are no group programming exercises (and you have poor time management skills) you may leave the class after the mini-lecture. If you are more than 5 minutes late we reserve the right to not count your attendance for that day.
You may be excused from class if you let me know beforehand that you will be absent. Use email for that.
Solving Problems
We will calculate the percentage of the problems you solve from the problem sets we post on code-forces. The problems vary in difficulty from very easy to world-finals level, but each problem has the same weight. To pass the class you must solve 70% of the available problems, or 100 problems, whichever is lower.
We do not give extensions for the problems.
Improper Optimization
Every semester, somebody fails this course because they tried to do precisely the amount of work necessary and not one bit more to get the points they need to pass this class… and are off by one. Don’t be that student. You will not be given a chance to make anything up once the course is over.
“A forseeable outcome of planning to barely pass the class is to barely fail the class.” --- Lucas Anderson
Other Things
Students with Disabilities
To obtain disability-related academic adjustments and/or auxiliary aids, students with disabilities must contact the course instructor as soon as possible. To insure that disability-related concerns are properly addressed from the beginning, students with disabilities who require assistance to participate in this class should contact disability resources and educational services (DRES) and see the instructor as soon as possible. If you need accommodations for any sort of disability, please speak to me after class, or make an appointment to see me, or see me during my office hours. DRES provides students with academic accommodations, access, and support services. To contact DRES you may visit 1207 S. Oak St., Champaign, call 333-4603 (v/tdd), or e-mail a message to disability@uiuc.edu.
Emergency Response Recommendations
The university police have posted some emergency response recommendations. I encourage you to review this website and the campus building floor plans website within the first 10 days of class.
By the way, have you considered making a fire safety plan with your family or roommates?
Family Educational Rights and Privacy Act (FERPA)
Any student who has suppressed their directory information pursuant to family educational rights and privacy act (FERPA) should self-identify to the instructor to ensure protection of the privacy of their attendance in this course. see the FERPA site for more information.
Mental Health
Diminished mental health, including significant stress, mood changes, excessive worry, substance/alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional wellbeing. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do — for yourself and for those who care about you.
Counseling Center: 217-333-3704, 610 East John Street Champaign, IL 61820
McKinley Health Center:217-333-2700, 1109 South Lincoln Avenue, Urbana, Illinois 61801