Skip to main content

Welcome to "How to Win Coding Competitions: Secrets of Champions"!

Do you want your programming skills to be challenged and taken to a new level? Are you ready to prove your excellence to thousands of fellow programmers around the globe? If so, this course is just for you!

Competitive programming is an exciting and rewarding activity. Besides improving your knowledge of algorithms and programming languages, it gives you unique experience of problem solving, thinking out of the box and working to tough deadlines – all essential for boosting your value as a programmer or computer scientist.

This course is an introduction to competitive programming developed by ITMO University, the leading expert in IT and the only 6-time world champion of ACM ICPC, the world's most prestigious programming contest.

You will learn all you need to know about the variety of programming competitions that exist, as well as basic algorithms and data structures necessary to succeed in the most popular of them.

Course Authors

Maxim Buzdalov

Maxim is Associate Professor at the Chair of Computer Technologies of ITMO University. He received his master’s degree and PhD from ITMO University in 2011 and 2014. In 2009, in a team of three, he won the International Collegiate Programming Competition held by the Association of Computing Machinery (ACM ICPC), as well as numerous local programming competitions.

Pavel Krotkov

Pavel is currently at Facebook. He received his master’s degree from ITMO University in 2016. He has many years of experience of participating and organising Russian and international programming competitions (including NEERC, the north-eastern semifinal of ACM ICPC). He is also an organiser and coach of several training camps for students in Russia and abroad.

Daria Yakovleva

Daria is assistant at Computer Technology Department of ITMO University. She placed 9th at the International programming competition Google Code Jam for Women. Daria organizes competitive programming courses for secondary school students at ITMO University. She has been teaching competitive programming at ITMO University and at Summer Informatics School (Russia) for three years.

Video Contents

Videos are grouped by weeks, each week represents one particular topic.

Week 1: Welcome to competitive programming

Explore different kinds of programming competitions and benefits of participating, as well as typical rules and challenges. An overview of algorithmic programming competitions. This is an introduction to community resources and online contests.

Week 2: Computational complexity. Linear data structures

An overview of computational complexity (Big O notation). Introduction to linear data structures (array, list, stack, queue): operations, complexity, implementation and examples.

Week 3: Sorting and search algorithms

Binary search (implementation and examples). An overview of sorting algorithms (insertion sort, quicksort, merge sort), including theoretical analysis and examples of use. Linear sorting algorithms for integers.

Week 4: Graph theory

Definition of graphs and examples of graph problems. Various ways of storing graphs in memory. Bitmask optimization. Depth First Search and related topics: connected components, detecting cycles, detecting bipartite graphs. Shortest paths: Breadth First Search, Dijkstra, Bellman-Ford, Floyd-Warshall.

Quizzes and Programming Tasks

For every video lecture, you will have quizzes, which will help you to revise the new material and to think over it from a new perspective.

However, the most important part of the course, for which you will actually earn grades, is solving programming tasks. Every solution – a program in one of the supported languages – will be tested exactly like on a programming competition: it will be run on multiple tests by a testing system, which controls the running time of the program, its memory usage, and the correctness of answers.

Grading

Weeks 1 to 4 have eight problems each, and every solved problem brings you 2%, which adds up to 64% for all these weeks.

Week 5 is the final exam week. On the final exam, you will have 5 hours to solve 8 problems – just like on the ACM ICPC World Finals! Every solved problem brings you 4% or 5%, for a total 36% on the exam.

If you login to "How to Win Coding Competitions: Secrets of Champions", and click "Progress," you can see how well you're doing throughout the course. To earn a certificate for this course, you need an overall score of at least 65%. This means you have to solve at least one problem on the exam, so get prepared!