Computer Science · DSA Lab
Understand the pattern before you write the code.
Programming and DSA taught as concepts first — then visualised, coded and practised with real problems.
def two_sum(nums, target):
seen = {}
for i, n in enumerate(nums):
need = target - n
if need in seen:
return [seen[need], i]
seen[n] = iLearn the concepts
Guides that explain each data structure, with code in Python, JavaScript, Java and C++.
Big-O and Complexity
How to describe how fast code grows as its input grows, and why O(n log n) beats O(n²) long before your computer runs out of patience.
12 min readArrays and Dynamic Arrays
Why reading arr[i] is instant, why inserting at the front is slow, and how lists that grow (Python list, ArrayList, vector) work underneath.
14 min readPrefix Sums and Difference Arrays
Precompute cumulative information for constant-time range queries, then reverse the idea to apply many range updates efficiently.
14 min readLinked Lists
What a linked list is, how nodes and pointers fit together, and how to build one yourself in Python, JavaScript, Java and C++.
15 min readStacks
Last in, first out. How a stack works, how to build one on top of an array, and the problems it solves, from matching brackets to undo.
11 min readQueues and Deques
First in, first out. How a queue works, why a circular buffer makes both ends O(1), and where queues show up, from schedulers to breadth-first search.
13 min readLearning paths
Concept lessons, visualisation and coding problems.
Arrays & Strings
Traversal, two pointers, sliding window, prefix sums.
10 guided problemsLinked Lists
Nodes, pointers, reversal and fast/slow pointers.
10 guided problemsStacks & Queues
LIFO/FIFO, monotonic stacks and deque patterns.
10 guided problemsHashing
Hash maps, sets, frequency counting and constant-time lookup.
10 guided problemsSearching & Sorting
Binary search, partitioning, stable sorting and inversion counting.
10 guided problemsRecursion & Backtracking
Recursive state, decision trees, pruning and exhaustive search.
10 guided problemsTrees & Graphs
BFS, DFS, recursion and topological order.
10 guided problemsHeaps & Priority Queues
Top-k selection, priority scheduling and multiway merging.
10 guided problemsTries
Prefix trees, autocomplete and dictionary-guided search.
10 guided problemsGreedy & Intervals
Locally optimal choices, scheduling, merging and reachability.
10 guided problemsBit Manipulation
Masks, XOR, shifts and bitwise optimisation.
10 guided problemsDynamic Programming
Memoisation, tabulation, state transitions and optimisation.
10 guided problemsStrings
Character frequencies, pattern matching and palindromic structure.
10 guided problemsTwo Pointers & Sliding Window
Opposing pointers and fixed or variable windows over ordered data.
10 guided problemsMatrices & 2-D Arrays
Layer traversal, coordinate transforms and sorted-grid search.
10 guided problemsMath & Number Theory
GCD, prime sieves, modular arithmetic and fast exponentiation.
10 guided problemsUnion-Find
Disjoint sets, component counting and incremental connectivity.
10 guided problemsAdvanced Trees
Fenwick trees, segment trees and binary lifting for tree queries.
10 guided problems