Keppnisforritun
This course looks at some of the most important algorithms and solution methods for competitive programming. Graph theory, string processing, computational geometry and combinatorics are among the material covered.
Instructor: Atli Fannar Franklín and Bergur Snorrason
Term: Spring
Course Overview
This course looks at some of the most important algorithms and solution methods for competitive programming. Graph theory, string processing, computational geometry and combinatorics are among the material covered.
Prerequisites
- Fundamentals of programming.
- Fundamentals of time complexities and algorithms.
Textbooks
- Primary: “Competitive Programming” by Steven Halim
Grading
Course is pass/fail. To pass one must turn in at least 10 out of 12 homework sets. One must also pass at least 8 out of 12 practice contests. Finally one must also pass the final exam.
Schedule
| Week | Topic |
|---|---|
| 1 | Introduction. |
| 2 | Time complexities, programming languages and ad hoc problems. |
| 3 | Complete search and greedy methods. |
| 4 | Reduce and conquer, divide and conquer. |
| 5 | Dynamic programming, part 1. |
| 6 | Dynamic programming, part 2. |
| 7 | Data structures. |
| 8 | Graph theory, part 1. |
| 9 | Graph theory, part 2. |
| 10 | Number theory. |
| 11 | Combinatorics. |
| 12 | Computational geometry. |
| 13 | Miscellaneous. |
| 14 | Summary and exam preparation. |