Competitive Programming for Beginners
Offered By: Moscow Institute of Physics and Technology via Coursera
Course Description
Overview
This online course will help you to join the world of competitive programming and even become worldwide competitions participant! The course includes theoretical and practical aspects that are necessary to solve problems of any difficulties.
After this course, you will learn what types of problems you will have to solve at the competitions, what is the effective program, how to estimate the algorithms efficiency, how to use basic algorithms and ideas during the problems solution. You will also learn how to submit your solution to the testing system.
There are four modules in the course — each for one week of education.
Program Modules:
Module 1: Basic Algorithms
Module 2: Number Theory
Module 3: Dynamic Programming
Module 4: Graph Theory
After this course, you will learn what types of problems you will have to solve at the competitions, what is the effective program, how to estimate the algorithms efficiency, how to use basic algorithms and ideas during the problems solution. You will also learn how to submit your solution to the testing system.
There are four modules in the course — each for one week of education.
Program Modules:
Module 1: Basic Algorithms
Module 2: Number Theory
Module 3: Dynamic Programming
Module 4: Graph Theory
Syllabus
- Basic Algorithms
- In this first module of our course we will: talk about how to measure efficiency of the developed algorithm; learn what is asymptotics; learn how to implement some simplest algorithms.
- Number Theory
- In this module of our course we will: talk about integer data types in existing programming languages, limitations of these types and ways to pass those limitations in competitive programming tasks; look at some applications of the modulo calculations related to the calculation of the greatest common divisor; learn what the regular and extended Euclid's algorithm is and how they are used in math (to prove important theorems) and in programming.
- Dynamic Programming
- In this module we will talk about the dynamic programming. You surely have been faced with it when you implemented prefix sums or the sieve of Erathosphenes. Also it turns out to be a part of a large number of algorithms, so it’s extremely important to learn the topic in small details.
- Graph Theory
- In this closing part of our course we shall get acquainted with the basic definitions and algorithms of graph theory in regard to competitive programming in general
Taught by
Filipp Rukhovich, Ilia Stepanov, Oleg Hristenko and Vladislav Nevstruev
Tags
Related Courses
Algorithms: Design and Analysis, Part 2Stanford University via Coursera Discrete Optimization
University of Melbourne via Coursera Conception et mise en œuvre d'algorithmes.
École Polytechnique via Coursera Computability, Complexity & Algorithms
Georgia Institute of Technology via Udacity Discrete Inference and Learning in Artificial Vision
École Centrale Paris via Coursera