image credit --- modified binary search ---Grokking the Coding Interview: Patterns for Coding Questions
Algorithms and Data Structure are two of the most fundamentals and important topics from Computer Science which is used everywhere in software development.
I strongly believe that a good knowledge of these two topics is also key to become a better programmer because a person who has a good understanding of algorithms and data structures can make thoughtful choices and write programs which can handle changes better and perform well.
They are also important to crack coding interviews at top tech companies like Google, Microsoft, Amazon, Facebook, and Apple, which puts a lot of emphasis on candidate's ability to use existing data structure and algorithms to solve complex problems they have never seen before.
Another thing which I have noticed a lot in programmers is shallow/partial knowledge of data structures. Many programmers think that just knowing the array or linked list is enough, but that's true because everybody knows that.
In order to distinguish yourself from the crowd, you also need to explore advanced data structures like a binary tree, binary search tree, balanced tree, heaps, graphs, hash tables, doubly linked list, circular list, stack, queue, a tree with more than two nodes, etc.
If you are determined to take your data structure and algorithm skill to the next level and looking for some awesome free resources then you have come to the right place.
In the past, I have shared some books, tutorials, and interview questions on algorithms and data structure and today, I'll share some of the best courses on data structure and algorithms which are also FREE.
These are online courses so you can use them to learn data structure and algorithms at the comfort of your office or home. You can also go at your pace and spend time on topics you find hard to understand.
This is one of the best course you can get for free to learn data structure and algorithms. The course contains over 8 hours of content and as the name suggests covers both easy and advanced data structures.
You will learn about the array, linked list, dynamic array, stack, queue, doubly linked list, priority queues, hash tables, binary search trees, Fenwick tree/binary indexed tree, AVL tree, and Indexed priority queue.
You will also learn about union find/disjoint set, Kruskal's Algorithm and Path compression.
In short, a complete guide to learning about data structures and algorithms. Big thanks to instructor William Fiset for keeping this excellent course free.
A free, 200+ pages books to learn Data Structure and Algorithms from scratch. This book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. You can download the PDF from GoalKicker.com and documentation so good and simple. In short, one of the best resource to learn Data Structure and algorithms for FREE.
This is another fine course on algorithms from Coursera. This course takes you to a guided tour to the field of data structures, algorithms, and complexity analysis. The concepts are language independent and solutions and Big O calculation are done in Java.
It's a two-part course, in which the first part covers basic data structures, sorting, and searching algorithms, which the second part focuses on the graph and string-processing algorithms.
The course is offered as free from Princeton University and both instructors Kevin Wayne and Robert Sedgewick are expert author and lecturer. Robert Sedgewick has also authored Algorithms book, one of the best books to learn Data Structure and Algorithms in Java.
Talking about social proof, the course has got on average 4.9 reviews from 1000 reviewers which is amazing. Once you enroll you will have access to all course material and it's completely free but no certificate of completion will be given, unlike other Coursera courses.
Many programmers, as well as online courses, shy away from teaching Graph algorithms because it's complex and difficult to learn and implement but that's where it becomes important.
Many real-world problems can be solved using graphs like the shortest path between cities and routes airline takes. Thankfully, you have a free course which provides a complete overview of graph theory algorithms in computer science and mathematics.
In this course, you will learn about common graph traversal algorithms like depth-first traversal and level order traversal, Dijkstra's algorithm, Topological sort algorithm, Shortest/longest path on a acyclic graph, Bellman Ford's algorithm, Floyd-Warshall all pairs shortest path algorithm, Finding bridges/articulation points, and Finding strongly connected components (Tarjan's)
You will also learn how to implement and store graphs on a computer. In short, a perfect course to learn about graph data structure and algorithms.
This is a beginner's course to learn design, implementation, and analysis of basic data structures using Java language.
There is also the second part of this course but that is not free and that's why I have not included in this list, but if you like this course you may explore Data Structure --- Part II as well.
Dynamic Programming is an important technique to solve complex coding problems on interviews.
If you are preparing for job interviews then apart from knowing data structures and algorithms, you should also learn about programming techniques like recursion, iteration, and dynamic programming.
The course discusses many programming problems which can be solved using dynamic programming techniques like Longest Increasing Subsequence, Sum of the Range, Share market analysis and many more.
After solving those questions and understanding their analysis you will help you to develop a strong intuition for any kind of Dynamic programming problem when approaching to solve new problems.
This is a short course to learn basic data structure like an array, linked list, stack, queue and deque in C programming language.
You will learn to implement various linked list operations using the C programming language like finding a node, appending a node, deleting a node, add a node to a position, traversing a linked list, and prepared a node.
You will also learn to solve some common linked list based coding problems like Insert node at end of the linked list, Insert a node at beginning of the linked list, Deletion of a node from beginning and deletion of a node from the end.
This is a great course to learn fundamental data structure and algorithms in C++. The instructor, Andrei Margeloiu has a lot of experience in solving algorithmic problems and participated and win several coding competitions even organized by Google and Facebook.
In this course, you will not only learn about fundamental data structures like an array and linked list, stack and queue but you will also learn about practical techniques to solve algorithmic problems.
The instructor also shows you how to debug and analyze algorithmic complexity and Big(O) numbers. He also uses a lot of diagrams to convey his thoughts better and teach you visually, which is very important for a data structure and algorithm course.
In short, a nice free course to learn from an expert who himself has solved 1000+ algorithmic problems. Even though, I know the topic, I have learned a couple of nice tricks from this course, a big thanks to Andrei for keeping this course free.
This course is very similar to the previous course except that it teaches you in Java language and it completely focuses on a linked list, like both singly and doubly linked list.
You will learn about all the linked list operation and how to implement it using Java Programming language like adding a node, deleting a node from both beginning and end.
Overall, a short course to focus on a linked list data structure.
This is a great course to learn data structure and algorithms if you are preparing for an interview and don't have much time. The course is neither very long nor very sort and just contains 3 hours worth of content.
In that three hours, you will not only learn basics of an array, linked list, binary tree, binary search tree, stack, queue, AVL and splay trees but also solve some coding problems and learn some tricks to do well on coding interviews.
The course is absolutely free at the time of writing but it can turn to the paid course anytime, hence I suggest you join early before instructor converts it to a paid course.
This is a two-part series, comprehensive course to learn algorithms and data structure. The course is focused on core data structures and algorithms used in everyday applications.
You will learn the trade-offs involved with choosing each data structure, along with traversal, retrieval, and update algorithms.
First part of this series covers basic data structures like linked lists, stacks, queues, binary trees, and hash tables and the second part focuses on advanced data structures and algorithms like data sorting, string searching, sets, AVL trees and concurrency issues.
Btw, the last two algorithms and data structure courses from Pluralsight is not exactly free as you need Pluralsight membership to access them. If you are not a member then a Pluralsight monthly membership cost you around $29 per month and an annual membership around $299 dollar, which also provides you access to more than 5000+ latest technology courses.
I have Pluralsight membership and it's my go-to place to learn new stuff, but if you just want to access these courses then you can also try Pluralsight free trial, which provides 10-day access to all Pluralsight contents.
And if you don't mind paying money for some worth taking courses then you may check out these paid algorithms courses as well:
- Data Structures and Algorithms: Deep Dive Using Java
- Grokking the Coding Interview: Patterns for Coding Questions
- Data Structures & Algorithms --- Interview !!
That's all about some of the best free Algorithms and Data Structure courses. Good knowledge of data structures and algorithms goes a long way in making you a good programmer.
They help you to write better code and also helps you to do well in coding interviews where you will always find some questions on algorithms and data structure.
If you feel you need to improve your understanding of the algorithms these courses are great to start and you won't need to worry about money because they are free.
Also, even though most of these courses are free and once you enroll you will have lifetime access to the course material just be careful with Udemy free courses.
Most of them are made free for promotional purpose and sometimes when they achieve their target in terms of ratings and reviews to collect the social proof, their instructor converts them to a paid course.
It's always better to check the price of course before you click the enroll button.
Other Programming Resources you may like
50+ Data Structure and Algorithms Interview Questions
10 courses for Programming/Coding Job Interviews
75+ Coding Interview Questions for Programmers
30+ Array Based Questions from Interviews
30+ LinkedList Based Java Interview Questions
Grokking Algorithms --- Book Review
21 String Programming Questions from Interviews
10 Data Structure and Algorithms Courses for Interviews
How to solve scenario based Algorithms Interview Questions
Top 5 Data Structure and Algorithms Books for Programmers
Top 10 online courses to learn Python
Thanks for reading this article so far. If you like these free Algorithms and Data structure courses then please share with your friends and colleagues. If you have any questions or feedback then please drop a note.
P.S. --- If you don't mind paying $10 for a good course and value your time more than money then I suggest you check out this list of best Data Structure and Algorithms courses.
P.S.S --- If you prefer books over courses, then you should check my list of 10 Algorithms books every programmer should read.