Concept
A graph is nodes and edges. An adjacency list stores each node's neighbours and is the usual choice; an adjacency matrix stores every pair and suits dense graphs or constant-time edge checks.
The tutor works through these with you, in conversation and code. A session ends when you have shown them, not when a video does.
A few lines that show Graph representations doing its job.
from collections import defaultdict
edges = [("a", "b"), ("a", "c"), ("b", "d")]
graph = defaultdict(list)
for u, v in edges:
graph[u].append(v)
graph[v].append(u) # undirected: both directions
graph["a"] # ['b', 'c']
# matrix: m[i][j] = 1 if edge, O(V^2) memoryBuilding an undirected graph with one direction only. Traversal from a node then cannot reach nodes that listed it as a neighbour, and components look disconnected.
Your roadmap puts these before Graph representations, unless you already know them.
Once a session shows you understand Graph representations, it comes back for review. Each review takes a minute and tells the memory model how well you still know it.
Topics that build on Graph representations.