The aim of this course is to familiarize students with programming skills used in programming competitions such as the International Collegiate Programming Contest (ICPC). It is assumed that students are familiar with one programming language such as Python or C.
-
Introduction to Programming Competitions (1 session)
- What is Competitive Programming?
- History and Major Programming Contests
- Benefits of Competitive Programming
- Familiarization with Types of Programming Contest Problems
- Where to Start and How to Practice?
-
Introduction to Data Structures (1 session)
- Introduction to Data Structures
- Linked List
- Stack
- Practical Use Cases of Data Structures for Problem Solving
-
String Processing (2 sessions)
- Input Reading Techniques
- Text Parsing
-
Fast Searching (2 sessions)
- Binary Search
- Interval Trees
-
Basic Graph Algorithms (2 sessions)
- Graph Implementation
- Depth-First Search (DFS) and its Applications
- Breadth-First Search (BFS) and its Applications
- Topological Sorting
-
Bit Manipulation (1 session)
- Bitwise Operations
- Using Bits for Subset Operations
- Sample Problems and Common Mistakes
-
Simulation (1 session)
- Discrete Linear Event Simulation
- Discrete Periodic Event Simulation
-
Code Optimization (2 sessions)
- Debugging Techniques
- Code Optimization
- Weekly Programming Exercises
- A. Laaksonen. Guide to Competitive Programming: Learning and Improving Algorithms Through Contests. Springer, 2020.
- S. Halim, F. Halim, and S. Effendy. Competitive Programming 4. The new lower bound of programming contests in the 2020s. Lulu, 2020.