About this Course
3.5
11 ratings
3 reviews
100% online

100% online

Start instantly and learn at your own schedule.
Flexible deadlines

Flexible deadlines

Reset deadlines in accordance to your schedule.
Intermediate Level

Intermediate Level

Hours to complete

Approx. 23 hours to complete

Suggested: 5-8 hours/week...
Available languages

English

Subtitles: English
100% online

100% online

Start instantly and learn at your own schedule.
Flexible deadlines

Flexible deadlines

Reset deadlines in accordance to your schedule.
Intermediate Level

Intermediate Level

Hours to complete

Approx. 23 hours to complete

Suggested: 5-8 hours/week...
Available languages

English

Subtitles: English

Syllabus - What you will learn from this course

Week
1
Hours to complete
5 hours to complete

Programming Competitions

We'll begin with introduction to the world of competitive programming — the rules, specialties and helpful tips on taking part in competitions in general. In a separate lesson, we'll learn how to test programs: what kinds of test cases there are, how to organize the search for a bugtest, and particularly a method of automating testing called stress-testing....
Reading
9 videos (Total 74 min), 2 readings, 2 quizzes
Video9 videos
Specifics of Programming Competitions11m
Problem Example8m
Steps in Solving a Problem6m
Soft Skills4m
Competitions Review8m
Testing, Sample Tests, Min/Max Tests11m
Custom Cases and Testing Workflow7m
Stress-testing10m
Reading2 readings
Welcome!4m
Solution to Problem 1-4: Straight Flush10m
Quiz1 practice exercise
Inventing Tests8m
Week
2
Hours to complete
4 hours to complete

CORRECTNESS FIRST

In this module, we'll start with the most basic things you need to actually solve algorithmic problems. First, we'll talk about structuring your code and intuition behind it — why it's very important, how to manage dependencies between parts of different purpose, how intuitive rules are enforced through formal invariants and conditions. We'll also identify a special class of solutions — brute force solutions — which are always correct, but often very slow. And we'll learn how to estimate running time of our solutions by using a powerful concept of big-O notation....
Reading
9 videos (Total 66 min), 1 reading, 2 quizzes
Video9 videos
What is Readability?5m
Intuitive "Proofs" are wrong5m
Defining solution set7m
Recursive backtracking7m
Worst cases6m
Big-O notation10m
From theory to practice7m
How to make a solution faster9m
Reading1 reading
Solution to Problem 2-4: Expression Evaluation10m
Quiz1 practice exercise
Time complexity6m
Week
3
Hours to complete
5 hours to complete

COMMON STRUGGLES

In competitive programming, there are a lot of things to stumble upon — if you don't know them first! We'll delve into how numbers are represented in computers, identify the most common issues with integer and floating point arithmetic, and learn to overcome them. We'll also discuss how to get stuck less in general, especially when debugging solutions....
Reading
11 videos (Total 78 min), 1 reading, 3 quizzes
Video11 videos
Dealing with Overflow5m
Non-integers8m
Fixed Point Numbers and Errors7m
Floating Point Numbers6m
Where and How to Use Doubles10m
More on Floating Point8m
Debugging Small Programs5m
Simplifying Code7m
Double-checking5m
Upsolving7m
Reading1 reading
Solution to Problem 3-4: Binary Knapsack10m
Quiz2 practice exercises
Numbers10m
Upsolving2m
Week
4
Hours to complete
5 hours to complete

COMMON STRUGGLES 2

We continue considering common struggles arising in competitive programming. We start by learning how to prove that a natural greedy algorithm is correct. We also discuss programming languages: what features are most helpful on competitions, and what are the advantages and pitfalls of several frequently used languages. Finally, we study an essential and easy-to-implement data structure: the segment tree....
Reading
14 videos (Total 97 min), 1 reading, 2 quizzes
Video14 videos
Proving Correctness7m
Activity Selection9m
Maximum Scalar Product6m
Greedy Ordering6m
Segment Tree Structure4m
Summing a Segment7m
Modifying an Element4m
Basic Data Structures5m
Advanced Data Structures and I/O7m
C++11m
Java5m
Python8m
Comparing Languages4m
Reading1 reading
Solution to Problem 4-4: Maximal Sum Suba10m
Quiz1 practice exercise
Segment Tree6m

Instructors

Avatar

Alexander S. Kulikov

Visiting Professor
Department of Computer Science and Engineering

Alexander Logunov

Competitive Programming Co-coach at SPbSU

About Saint Petersburg State University

The Saint-Petersburg University (SPbU) is a state university, located in Saint-Petersburg, Russia. Founded in 1724, SPbU is the oldest institution of higher education in Russia. At present, there are more than 30 000 students in SPbU studying 398 programmes...

Frequently Asked Questions

  • Once you enroll for a Certificate, you’ll have access to all videos, quizzes, and programming assignments (if applicable). Peer review assignments can only be submitted and reviewed once your session has begun. If you choose to explore the course without purchasing, you may not be able to access certain assignments.

  • When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.

More questions? Visit the Learner Help Center.