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

Donald Knuth is one of the greatest and most impactful computer scientists and mathematicians ever. He is the recipient in 1974 of the Turing Award, considered the Nobel Prize of computing.

He is the author of the multi-volume work, the magnum opus, The Art of Computer Programming. He made several key contributions to the rigorous analysis of the computational complexity of algorithms. He popularized asymptotic notation, that we all affectionately know as the big-O notation.

He also created the TeX typesetting which most computer scientists, physicists, mathematicians, and scientists and engineers use to write technical papers and make them look beautiful.

Lex Fridman interviews him in this video.

EPISODE LINKS:
The Art of Computer Programming (book): https://amzn.to/39kxRwB

OUTLINE:
0:00 – Introduction
3:45 – IBM 650
7:51 – Geeks
12:29 – Alan Turing
14:26 – My life is a convex combination of english and mathematics
24:00 – Japanese arrow puzzle example
25:42 – Neural networks and machine learning
27:59 – The Art of Computer Programming
36:49 – Combinatorics
39:16 – Writing process
42:10 – Are some days harder than others?
48:36 – What’s the “Art” in the Art of Computer Programming
50:21 – Binary (boolean) decision diagram
55:06 – Big-O notation
58:02 – P=NP
1:10:05 – Artificial intelligence
1:13:26 – Ant colonies and human cognition
1:17:11 – God and the Bible
1:24:28 – Reflection on life
1:28:25 – Facing mortality
1:33:40 – TeX and beautiful typography
1:39:23 – How much of the world do we understand?
1:44:17 – Question for God