Development of strategies, techniques, and skills used in competitive programming contests. Topics of the course include problem solving, advanced data structures, dynamic programming, graph algorithms, minimum spanning trees, shortest path algorithms, computational geometry, randomized algorithms, network flow problems, string algorithms, and number theory. Students will do significant amount of programming tasks.