Implement a Persistent Immutable List for a Collaborative-Editing Startup
Overview
What this challenge is about.
Implement in Python (or TypeScript / Kotlin). Build a persistent immutable list with operations: get, set, append, pop, slice, concat. Use structural sharing (32-way vector trie / radix balanced tree) so operations are O(log32 n). Build a fuzzer that compares behavior against the language's built-in list across 10K random operation sequences. Benchmark append, get, slice against the built-in list for sizes 10^2, 10^4, 10^6. Deliver source, fuzzer + tests, benchmark notebook, and a 4-page write-up covering the data-structure design and how structural sharing makes 'immutable' affordable.
The Brief
What you'll do, and what you'll demonstrate.
Implement a persistent immutable list with structural sharing, fuzzer-validated against the built-in list, and benchmarked at 3 size points.
Earning criteria — what you'll demonstrate
- Implement a non-trivial data abstraction with persistence semantics
- Apply recursion to navigate a tree-based data structure
- Reason about O(log32 n) operations vs O(1) mutable baseline
- Communicate data-structure design clearly to teammates
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.