Friends, this article lists some the of best courses available online on Data Structures and Algorithms. We recommend going through them to have strong basics.
1. Data Structures and Algorithms by Dr. Naveen Garg
Lecture Series on Data Structures and Algorithms by Dr. Naveen Garg, Department of Computer Science and Engineering, IIT Delhi.
Playlist Details:
- Lecture – 1 Introduction to Data Structures and Algorithms
- Lecture – 2 Stacks
- Lecture – 3 Queues and Linked Lists
- Lecture – 4 Dictionaries
- Lecture – 5 Hashing
- Lecture – 6 Trees
- Lecture – 7 Tree Walks / Traversals
- Lecture – 8 Ordered Dictionaries
- Lecture – 9 Deletion
- Lecture – 10 Quick Sort
- Lecture – 11 AVL Trees
- Lecture – 12 AVL Trees
- Lecture – 13 Trees
- Lecture – 14 Red Black Trees
- Lecture – 15 Insertion in Red Black Trees
- Lecture – 16 Disk-Based Data Structures
- Lecture – 17 Case Study: Searching for Patterns
- Lecture – 18 Tries
- Lecture – 19 Data Compression
- Lecture – 20 Priority Queues
- Lecture – 21 Binary Heaps
- Lecture – 22 Why Sorting
- Lecture – 23 More Sorting
- Lecture – 24 Graphs
- Lecture – 25 Data Structures for Graphs
- Lecture – 26 Two Applications of Breadth First Search
- Lecture – 27 Depth First Search
- Lecture – 28 Applications of DFS
- Lecture – 29 DFS in Directed Graphs
- Lecture – 30 Applications of DFS in Directed Graphs
- Lecture – 31 Minimum Spanning Trees
- Lecture – 32 The Union
- Lecture – 33 Prim’s Algorithm for Minimum Spanning Trees
- Lecture – 34 Single Source Shortest Paths
- Lecture – 35 Correctness of Dijkstra’s Algorithm
- Lecture – 36 Single Source Shortest Paths
Click here to download all PDFs to his lecture documentation.
2. MyCodeSchool
1. Pointers in C/C++
Pointers are one concept that does not go well with beginners. This series of videos will try to demystify pointers.
Playlist Details:
- Introduction to pointers in C/C++
- Working with pointers
- Pointer types, pointer arithmetic, void pointers
- Pointers to Pointers in C/C++
- Pointers as function arguments – call by reference
- Pointers and arrays
- Arrays as function arguments
- Character arrays and pointers – part 1
- Character arrays and pointers – part 2
- Pointers and 2-D arrays
- Pointers and multidimensional arrays
- Pointers and dynamic memory – stack vs heap
- Dynamic memory allocation in C – malloc, calloc, realloc, free
- Pointers as function returns in C/C++
- Function Pointers in C / C++
- Function pointers and callbacks
- Memory leaks in C/C++
2. Data structures
This series of lessons covers Data Structures. Data structures are implemented in C or C++. Prerequisite for this lesson is good understanding of pointers in C. Watch above series on pointers before starting on this series.
Playlist Details:
- Introduction to data structures
- Data Structures: List as abstract data type
- Introduction to linked list
- Data Structures: Arrays vs Linked Lists
- Linked List – Implementation in C/C++
- Linked List in C/C++ – Inserting a node at beginning
- Linked List in C/C++ – Insert a node at nth position
- Linked List in C/C++ – Delete a node at nth position
- Reverse a linked list – Iterative method
- Print elements of a linked list in forward and reverse order using recursion
- Reverse a linked list using recursion
- Data structures: Introduction to Doubly Linked List
- Doubly Linked List – Implementation in C/C++
- Data structures: Introduction to stack
- Data structures: Array implementation of stacks
- Data Structures: Linked List implementation of stacks
- Reverse a string or linked list using stack.
- Check for balanced parentheses using stack
- Infix, Prefix and Postfix
- Evaluation of Prefix and Postfix expressions using stack
- Infix to Postfix using stack
- Data structures: Introduction to Queues
- Data structures: Array implementation of Queue
- Data structures: Linked List implementation of Queue
- Data structures: Introduction to Trees
- Data structures: Binary Tree
- Data structures: Binary Search Tree
- Binary search tree – Implementation in C/C++
- BST implementation – memory allocation in stack and heap
- Find min and max element in a binary search tree
- Find height of a binary tree
- Binary tree traversal – breadth-first and depth-first strategies
- Binary tree: Level Order Traversal
- Binary tree traversal: Preorder, Inorder, Postorder
- Check if a binary tree is binary search tree or not
- Delete a node from Binary Search Tree
- Inorder Successor in a binary search tree
- Data structures: Introduction to graphs
- Data structures: Properties of Graphs
- Graph Representation part 01 – Edge List
- Graph Representation part 02 – Adjacency Matrix
3. Sorting Algorithms
This series of lessons covers and analyze various sorting algorithms.
Playlist Details:
- Introduction to sorting algorithms
- Selection sort algorithm
- Bubble sort algorithm
- Insertion sort algorithm
- Merge sort algorithm
- Analysis of Merge sort algorithm
- Quicksort algorithm
- Analysis of quicksort
4. Binary Search
In this series of lessons, we will learn binary search and solve problems using binary search.
Playlist Details:
- What is binary search
- Binary Search – Iterative Implementation and common errors
- Binary Search – Recursive implementation
- Binary search – finding first or last occurrence of a number
- Count occurrences of a number in a sorted array with duplicates using Binary Search
- How many times is a sorted array rotated?
- Search element in a circular sorted array
3. MIT 6.046J / 18.410J Introduction to Algorithms (SMA 5503)
This course strictly follows CLRS book and one of the instructors is Prof. Charles Leiserson, co-author of CLRS book himself. This course teaches techniques for the design and analysis of efficient algorithms, emphasizing methods useful traditionally. Topics covered include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; caching; and parallel computing.
Playlist Details:
- Lecture 1: Administrivia; Introduction; Analysis of Algorithms, Insertion Sort, Mergesort
- Lecture 2: Asymptotic Notation; Recurrences; Substitution, Master Method
- Lecture 3: Divide-and-Conquer: Strassen, Fibonacci, Polynomial Multiplication
- Lecture 4: Quicksort, Randomized Algorithms
- Lecture 5: Linear-time Sorting: Lower Bounds, Counting Sort, Radix Sort
- Lecture 6: Order Statistics, Median
- Lecture 7: Hashing, Hash Functions
- Lecture 8: Universal Hashing, Perfect Hashing
- Lecture 9: Relation of BSTs to Quicksort – Analysis of Random BST
- Lecture 10: Red-black Trees, Rotations, Insertions, Deletions
- Lecture 11: Augmenting Data Structures, Dynamic Order Statistics, Interval Trees
- Lecture 12: Skip Lists
- Lecture 13: Amortized Algorithms, Table Doubling, Potential Method
- Lecture 14: Competitive Analysis: Self-organizing Lists
- Lecture 15: Dynamic Programming, Longest Common Subsequence
- Lecture 16: Greedy Algorithms, Minimum Spanning Trees
- Lecture 17: Shortest Paths I: Properties, Dijkstra’s Algorithm, Breadth-first Search
- Lecture 18: Shortest Paths II: Bellman-Ford, Linear Programming, DifferenceConstraints
- Lecture 19: Shortest Paths III: All-pairs Shortest Paths, Matrix Multiplication, FloydWarshall, Johnson
- Audio/video for lectures 20 and 21 are not available
- Lecture 22: Advanced Topics
- Lecture 23: Advanced Topics (cont.)
- Lecture 24: Advanced Topics (cont.)
- Lecture 25: Advanced Topics (cont.) – Discussion of Follow-on Classes
The Course problems sets are available here. Below are the links to download slides/transcripts of above lectures –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 22 23 24 25
All the very best 🙂