Resources
Textbooks
We don’t have a textbook for the course. Here are some references:
- Introduction to Data Structures and Algorithms in Java from a previous incarnation of this course.
- Open Data Structures by Pat Morin — mathematically precise, freely available online.
- Data Structures and Algorithm Analysis by Clifford A. Shaffer — free PDF, good complement to CLRS.
For more advanced material, refer to the following texts:
- algorithms.wtf - Jeff Erikson: Algorithms — a free, very readable introduction to algorithms & data structures.
- CLRS — Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (4th ed.) — the gold standard reference for rigorous algorithm analysis.
- Sedgewick & Wayne — Algorithms (4th ed.) — accessible coverage with strong emphasis on implementation.
Kotlin Reference
You already know Kotlin; these are lookup references for the parts that come up most in DSA work.
- Collections overview —
List,Set,Map,ArrayDeque, mutability, and collection operations. - Sequences — lazy evaluation; useful when chaining transformations over large datasets.
- Kotlin standard library API — full API reference; search for
sortedWith,groupBy,fold, etc.
DSA in Kotlin
- Data Structures & Algorithms in Kotlin (Kodeco / Ray Wenderlich) — works through the canonical structures and algorithms with Kotlin implementations.
- Hands-On Data Structures and Algorithms with Kotlin (Packt) — production-oriented; good for seeing idiomatic Kotlin applied to classical problems.
Algorithm Visualization
These tools are language-agnostic and useful for building intuition:
- VisuAlgo — step-through animations for 24+ structures and algorithms; supports custom input.
- Algorithm Visualizer — open-source, community-driven; lets you trace execution with annotated pseudocode.
Complexity Reference
- Big-O Cheat Sheet — time and space complexities for common structures and sorting algorithms at a glance.
Practice
Both platforms support Kotlin submission:
- LeetCode — graded problems across all difficulty levels; good for targeted practice by topic.
- Codeforces — competitive programming with an active Kotlin community; useful for timed practice.
Typesetting (LaTeX)
Technical documents in this course may require mathematical notation. LaTeX is the standard tool.
Good starting points:
- Getting to Grips with LaTeX — practical tutorial for newcomers.
- Overleaf — browser-based LaTeX editor; no local installation needed.
- Detexify — draw a symbol and get the LaTeX command for it.
- The Wikibook on LaTeX — comprehensive reference organized by topic.
For local editing, any text editor works. Recommended options:
- Visual Studio Code with the LaTeX Workshop extension
- TeXStudio — dedicated LaTeX IDE