A program that chooses the wrong data structure will be slow, complex, or both. This course covers the canonical structures — arrays, linked lists, stacks, queues, trees, hash tables, and graphs — with attention to both implementation and the trade-offs that guide selection.
Outcomes
- Implement arrays, linked lists, stacks, queues, trees, and hash tables from scratch
- Analyse time and space complexity for each structure
- Select the right data structure given a problem's access and mutation patterns
- Compare pointer-based and contiguous-memory trade-offs with measured benchmarks
Outline
Start →- 01 Arrays and Linked Lists Contiguous vs. pointer-based storage: how memory layout determines every trade-off in access speed, insertion cost, and cache behaviour.
- 02 Stacks and Queues LIFO and FIFO abstractions, their implementations, and where each fits naturally.
- 03 Trees Binary trees, BSTs, traversals, deletion, AVL self-balancing, heaps — hierarchical data and the algorithms that keep it efficiently ordered.
- 04 Graphs Vertices, edges, adjacency representations, DFS, BFS, cycle detection, topological sort, and shortest paths — the data structures behind every network problem.
- 05 Hash Tables Hash functions, collision resolution by chaining and open addressing, load factor, rehashing, and the engineering decisions behind O(1) average-case lookup.