What will you learn?
Essential algorithmic techniques - greedy algorithms, divide and conquer, binary search, sorting, dynamic programming
Best practices of implementing algorithms efficiently
Ways of testing and debugging programs
About the course
In this course, part of the Algorithms and Data Structures MicroMasters program, you will learn basic algorithmic techniques and ideas for computational problems, which arise in practical applications such as sorting and searching, divide and conquer, greedy algorithms and dynamic programming.
This course will cover theories, including:
- how to sort data and how it helps for searching;
- how to break a large problem into pieces and solve them recursively;
- when it makes sense to proceed greedily;
- how dynamic programming is used in genomic studies.
You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second).
Program
Algorithmic Design and Techniques
Learn how to design algorithms, solve computational problems and implement solutions efficiently.
Lecturers

Pavel Pevzner
Ronald R. Taylor Professor of Computer Science The University of California, San Diego

Daniel Kane
Assistant Professor, Computer Science and Engineering & Dept. of Mathematics UC San Diego

Alexander S. Kulikov
Visiting Professor UC San Diego

Michael Levin
Chief Data Scientist Yandex.Market

Neil Rhodes
Lecturer UC San Diego
Platform
All the courses on this platform are free of charge. The authors are top universities and corporations that seek to maintain high quality standards. If you do not meet a deadline for assignments, you lose points. Like on other platforms, the videos in which the theory is explained are followed by practical assignments. Courses are available in English, Chinese, Spanish, French and Hindi.