This 28-part course consists of tutorials on data structures and algorithms. It alternates between tutorials and implementation, and you get to **implement every algorithm**. You can think of this course as a "Free Online Nano Book".

This course teaches algorithms and data structures from the ground-up. It starts with why you need algorithms, and then proceeds to teach you sorting algorithms, dynamic programming, and graph algorithms.

The **primary objectives** of this course are:

- Learn efficient algorithms for sorting and searching, such as merge-sort, quick-sort, and binary search.
- Learn problem solving techniques such as recursion and divide-and-conquer.
- Learn dynamic programming and solve a variety of dynamic programming problems.
- Learn data structures such as heaps and disjoint set data structure.
- Learn about graphs and graph algorithms such as graph search algorithms, shortest path algorithms, minimum spanning tree.
- Implement each of the learnt algorithms and data structures from scratch in Python, C++, Java or any other programming language of your choice.

Most of the tutorials are a combination of video, text and code! The tutorials have been edited and curated meticulously and are some of the best tutorials on each topic available online.