Data Structures
Coursera
A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. In this online course, we consider the common data structures that are used in various computational problems. You will learn how these data structures are implemented in different programming languages and will practice implementing them in our programming assignments. This will help you to understand what is going on inside a particular built-in implementation of a data structure and what to expect from it. You will also learn typical use cases for these data structures. A few examples of questions that we are going to cover in this class are the following: 1. What is a good strategy of resizing a dynamic array? 2. How priority queues are implemented in C++, Java, and Python? 3. How to implement a hash table so that the amortized running time of all operations is O(1) on average? 4. What are good strategies to keep a binary tree balanced? You will also learn how services like Dropbox manage to upload some large files instantly and to save a lot of storage space!
More resources on Data Structures
JavaScript Algorithms and Data Structures
Master JavaScript algorithms and data structures with this free course! Build a strong foundation for web development.
Algorithms, Part I
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms. All the features of this course are available for free. People who are interested in digging deeper into the content may wish to obtain the textbook Algorithms, Fourth Edition (upon which the course is based) or visit the website algs4.cs.princeton.edu for a wealth of additional material. This course does not offer a certificate upon completion.
LeetCode
Online judge with thousands of algorithm and data-structure problems sorted by difficulty, topic and company, plus timed contests, discussion threads and study plans. Regular practice builds fluency with common interview problem patterns and writing correct, efficient code under time pressure.
USFCA Data Structures
Interactive animations from David Galles at the University of San Francisco that step through stacks, hash tables, AVL and red-black trees, heaps, sorting and graph algorithms, letting you watch each operation restructure the data.
LeetCode
A practice archive of several thousand programming problems filterable by data structure, with a judge that runs your solution against hidden tests. Working the array, hash-table, tree and graph tags builds implementation speed under time pressure.
freeCodeCamp Data Structures Full Course
Eight-hour freeCodeCamp course by William Fiset covering dynamic arrays, linked lists, stacks, queues, priority queues, union-find, binary search trees, hash tables, Fenwick trees and AVL trees, each explained with animations then implemented in Java.