«Sports programming and Algorithms» elective course
Goals:
Preparing KhAI entrants and students for various competitions and Olympics on programming, algorithmic improvement of practical training of young programmers, and the fundamental teaching of theoretical training in the algorithms to the best American and European universities level.
The list of potential competitions:
- International Student Olympiad «ACM ICPC», http://icpc.baylor.edu
- International open student programming contest named after S.A. Lebedev and V.M. Glushkov «KPI-Open», http://kpi-open.org
- Open Cup on programming named after E.V. Pankratiev, http://www.opencup.ru
- Winter School on programming at KNURE, http://wschool.kharkov.ua
- Marathons and other competitions at TopCoder, http://topcoder.com/tc
- Individual tournaments as the "Google Code Jam", http://code.google.com/codejam/
- Sports programming open championship of Kharkov, http://khcup.qbit.org.ua
Event format:
- Weekly lecture meeting that includes thematic homework analysis. Lectures may be alternated with seminars, where students present their solutions and the results.
- Weekly lecture meeting that includes thematic homework analysis. Lectures may be alternated with seminars, where students present their solutions and the results «online judge» resources such as http://acm.timus.ru, http://uva.onlinejudge.org and others.
- Practical competition is being held every two weeks. Students are organized in groups of up to 3 people and compete on the basis of archives such as http://codeforces.com, https://icpcarchive.ecs.baylor.edu and others.
- Monthly individual project as a task to find interesting assignments from olympiad archives and solution collections and its presentation to the class, which includes the analysis and comparison of solution options.
Supervisors:
- Starov, Aleksey Aleksandrovich – online supervisor (lectures and training materials preparation, decision analysis, monthly remote presentations).
- Rusin, Dmitriy Olegovich – on-sight supervisor (meetings on the KhAI basis, educational process organization, assistance with lectures and solutions).
The plan of the topics:
- Introduction to sports programming, examples of various Olympiad problems, communication algorithms with practical programming
- Classification of Olympiad problems with examples, necessary sections of mathematics for repetition - 2 sessions
- The concept of algorithms complexity, O-notation and others.
- Algebra and Number Theory (from the Sieve of Eratosthenes to Length arithmetic) - at least 3 lectures
- The paradigm of "divide-and-rule", practical application - at least 3 lectures
- Simple graph algorithms - at least 2 lectures
- Use of algorithms on graphs - at least 2 classes
- Flows in graph theory and in olympiad problems
- Examples of complex algorithms on graphs (RMQ, Hungarian algorithm and others)
- Search tasks in terms of artificial intelligence and game theory - at least 2 lectures
- “Greedy” algorithms
- "Dynamic programming" paradigm - at least 3 classes
- Introduction to combinatorics
- Computing geometry basics- at least 2 classes
- More complex algorithmic problems
- Numerical methods
- Strings and sequences - at least 2 classes
- Smart data structures - at least 3 classes
- NP-completeness and how to fight it
- Review of programming tricks
These topics will be dealt with at the intersection, and the full cycle - repeated iteratively being bound by theory, and complexity. It is important that the novice contestant's knowledge and experience developed in parallel in each direction. This list isn't final (some of the topics will be given up during a year, while others may be added, some of the topics hours may be cut and vice versa).
Literature:
- Algorithms. Design and Analysis - T. Kormen., Charles Leiserson, R. Rivest
- Algorithms on C ++ / Algorithms to Java - R. Sedgewick
- Olympiad programming tasks / Algorithms. Guide to development - S. Skiena
- Algorithms and programs. Olympiad problems solution - I.N. Porublev, A.B. Stavrovskiy
- KNURE Winter programming School materials.
- KhAI Algorithms http://ostarov.github.io/Algorithms_KhAI/
This list is only the basic list of books and it will will be majorly expanded during the course.