Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

University of California, San Diego

Algorithms and Data Structures

University of California, San Diego via edX MicroMasters


This MicroMasters program is a mix of theory and practice: you will learn algorithmic techniques for solving various computational problems through implementing over one hundred algorithmic coding problems in a programming language of your choice.

No other online course in Algorithms even comes close to offering you a wealth of programming challenges that you may face at your next job interview. To prepare you, we have invested thousands of hours designing challenges as an alternative to multiple choice questions that you usually find in MOOCs. We believe in learning through application, especially when it comes to learning algorithms.

For each algorithm you develop and implement, we have designed multiple tests to check its correctness and running time — you will have to debug your programs without even knowing what these tests are! It may sound difficult, but we believe it is the only way to truly understand how the algorithms work and to master the art of programming.


Courses under this program:
Course 1: Algorithmic Design and Techniques

Learn how to design algorithms, solve computational problems and implement solutions efficiently.

Course 2: Data Structures Fundamentals

Learn about data structures that are used in computational thinking – both basic and advanced.

Course 3: Graph Algorithms

Learn how to use algorithms to explore graphs, compute shortest distance, min spanning tree, and connected components.

Course 4: NP-Complete Problems

Learn about NP-complete problems, known as hard problems that can’t be solved efficiently, and practice solving them using algorithmic techniques.

Course 5: String Processing and Pattern Matching Algorithms

Learn about pattern matching and string processing algorithms and how they apply to interesting applications.

Course 6: Dynamic Programming: Applications In Machine Learning and Genomics

Learn how dynamic programming and Hidden Markov Models can be used to compare genetic strings and uncover evolution.

Course 7: Graph Algorithms in Genome Sequencing

Learn how graphs are used to assemble millions of pieces of DNA into a contiguous genome and use these genomes to construct a Tree of Life.

Course 8: Algorithms and Data Structures Capstone

Synthesize your knowledge of algorithms and biology to build your own software for solving a biological challenge.


Taught by

Pavel Pevzner, Daniel Kane, Alexander S. Kulikov, Michael Levin, Neil Rhodes and Phillip Compeau


Start your review of Algorithms and Data Structures

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.