Learn all about Data Structures in this lecture-style course from freeCodeCamp.org

You will learn what Data Structures are, how we measure a Data Structures efficiency, and then hop into talking about 12 of the most common Data Structures which will come up throughout your Computer Science journey.

Course Contents

  • (00:00) Introduction
  • (01:06) Timestamps
  • (01:23) Script and Visuals
  • (01:34) References + Research
  • (01:56) Questions
  • (02:12) Shameless Plug
  • (02:51) What are Data Structures?
  • (04:36) Series Overview
  • (06:55) Measuring Efficiency with BigO Notation
  • (09:45) Time Complexity Equations
  • (11:13) The Meaning of BigO
  • (12:42) Why BigO?
  • (13:18) Quick Recap
  • (14:27) Types of Time Complexity Equations
  • (19:42) Final Note on Time Complexity Equations
  • (20:21) The Array
  • (20:58) Array Basics
  • (22:09) Array Names
  • (22:59) Parallel Arrays
  • (23:59) Array Types
  • (24:30) Array Size
  • (25:45) Creating Arrays
  • (26:11) Populate-First Arrays
  • (28:09) Populate-Later Arrays
  • (30:22) Numerical Indexes
  • (31:57) Replacing information in an Array
  • (32:42) 2-Dimensional Arrays
  • (35:01) Arrays as a Data Structure
  • (42:21) Pros and Cons
  • (43:33) The ArrayList
  • (44:42) Structure of the ArrayList
  • (45:19) Initializing an ArrayList
  • (47:34) ArrayList Functionality
  • (49:30) ArrayList Methods
  • (50:26) Add Method
  • (53:57) Remove Method
  • (55:33) Get Method
  • (55:59) Set Method
  • (56:57) Clear Method
  • (57:30) toArray Method
  • (59:00) ArrayList as a Data Structure
  • (1:03:12) Comparing and Contrasting with Arrays
  • (1:05:02) The Stack
  • (1:05:06) The Different types of Data Structures
  • (1:05:51) Random Access Data Structures
  • (1:06:10) Sequential Access Data Structures
  • (1:07:36) Stack Basics
  • (1:09:01) Common Stack Methods
  • (1:09:45) Push Method
  • (1:10:32) Pop Method
  • (1:11:46) Peek Method
  • (1:12:27) Contains Method
  • (1:13:23) Time Complexity Equations
  • (1:15:28) Uses for Stacks
  • (1:18:01) The Queue
  • (1:18:51) Queue Basics
  • (1:20:44) Common Queue Methods
  • (1:21:13) Enqueue Method
  • (1:22:20) Dequeue Method
  • (1:23:08) Peek Method
  • (1:24:15) Contains Method
  • (1:25:05) Time Complexity Equations
  • (1:27:05) Common Queue Uses
  • (1:28:16) The Linked List
  • (1:31:37) LinkedList Visualization
  • (1:33:55) Adding and Removing Information
  • (1:41:28) Time Complexity Equations
  • (1:44:26) Uses for LinkedLists
  • (1:47:19) The Doubly-LinkedList
  • (1:48:44) Visualization
  • (1:50:56) Adding and Removing Information
  • (1:58:30) Time Complexity Equations
  • (1:59:06) Uses of a Doubly-LinkedList
  • (2:00:21) The Dictionary
  • (2:01:15) Dictionary Basics
  • (2:02:00) Indexing Dictionaries
  • (2:02:40) Dictionary Properties
  • (2:05:53) Hash Table Mini-Lesson
  • (2:13:26) Time Complexity Equations
  • (2:16:39) Trees
  • (2:16:55) Introduction to Hierarchical Data
  • (2:18:54) Formal Background on the Tree
  • (2:20:03) Tree Terminology and Visualization
  • (2:25:08) Different types of Trees
  • (2:28:07) Uses for the Tree
  • (2:29:00) Tries
  • (2:29:50) Trie Basics
  • (2:30:41) Trie Visualization
  • (2:34:33) Flagging
  • (2:35:15) Uses for Tries
  • (2:38:25) Heaps
  • (2:38:51) Heap Basics
  • (2:39:19) Min-Heaps
  • (2:40:07) Max-Heaps
  • (2:40:59) Building Heaps
  • (2:44:20) Deleting from Heaps
  • (2:46:00) Heap Implementations
  • (2:48:15) Graphs
  • (2:49:25) Graph Basics
  • (2:52:04) Directed vs. Undirected Graphs
  • (2:53:45) Cyclic vs. Acyclic Graphs
  • (2:55:04) Weighted Graphs
  • (2:55:46) Types of Graphs
  • (2:58:20) Conclusion
  • (2:58:43) Shameless Plug

This full 6 hour+ course provides a complete introduction to Graph Theory algorithms in computer science.

Code: https://github.com/williamfiset/algorithms
Slides: https://github.com/williamfiset/Algorithms/tree/master/slides/graphtheory

Course created by William Fiset. Check out his YouTube channel: https://www.youtube.com/channel/UCD8yeTczadqdARzQUp29PJw

⭐️ Course Contents ⭐️
⌨️ (0:00:00) Graph Theory Introduction
⌨️ (0:13:53) Problems in Graph Theory
⌨️ (0:23:15) Depth First Search Algorithm
⌨️ (0:33:18) Breadth First Search Algorithm
⌨️ (0:40:27) Breadth First Search grid shortest path
⌨️ (0:56:23) Topological Sort Algorithm
⌨️ (1:09:52) Shortest/Longest path on a Directed Acyclic Graph (DAG)
⌨️ (1:19:34) Dijkstra’s Shortest Path Algorithm
⌨️ (1:43:17) Dijkstra’s Shortest Path Algorithm | Source Code
⌨️ (1:50:47) Bellman Ford Algorithm
⌨️ (2:05:34) Floyd Warshall All Pairs Shortest Path Algorithm
⌨️ (2:20:54) Floyd Warshall All Pairs Shortest Path Algorithm | Source Code
⌨️ (2:29:19) Bridges and Articulation points Algorithm
⌨️ (2:49:01) Bridges and Articulation points source code
⌨️ (2:57:32) Tarjans Strongly Connected Components algorithm
⌨️ (3:13:56) Tarjans Strongly Connected Components algorithm source code
⌨️ (3:20:12) Travelling Salesman Problem | Dynamic Programming
⌨️ (3:39:59) Travelling Salesman Problem source code | Dynamic Programming
⌨️ (3:52:27) Existence of Eulerian Paths and Circuits
⌨️ (4:01:19) Eulerian Path Algorithm
⌨️ (4:15:47) Eulerian Path Algorithm | Source Code
⌨️ (4:23:00) Prim’s Minimum Spanning Tree Algorithm
⌨️ (4:37:05) Eager Prim’s Minimum Spanning Tree Algorithm
⌨️ (4:50:38) Eager Prim’s Minimum Spanning Tree Algorithm | Source Code
⌨️ (4:58:30) Max Flow Ford Fulkerson | Network Flow
⌨️ (5:11:01) Max Flow Ford Fulkerson | Source Code
⌨️ (5:27:25) Unweighted Bipartite Matching | Network Flow
⌨️ (5:38:11) Mice and Owls problem | Network Flow
⌨️ (5:46:11) Elementary Math problem | Network Flow
⌨️ (5:56:19) Edmonds Karp Algorithm | Network Flow
⌨️ (6:05:18) Edmonds Karp Algorithm | Source Code
⌨️ (6:10:08) Capacity Scaling | Network Flow
⌨️ (6:19:34) Capacity Scaling | Network Flow | Source Code
⌨️ (6:25:04) Dinic’s Algorithm | Network Flow
⌨️ (6:36:09) Dinic’s Algorithm | Network Flow | Source Code