Fundamentals
What does this language do?
Understand the pieces.
Learn the rules behind values, calls, types, and errors. Follow the shared questions through each language’s own behavior.
Work in progress. 111 of 111 lessons are drafted and open to read; they're still being reviewed.
Start here. No earlier module is required; choose a language and follow the suggested order.
Still being written 111 of 111 lessons are drafted and open to read while they're reviewed. Planned topics show where the catalog is going.
Reading a program
Start hereStart with the vocabulary: what code says, what it does, and how to follow a small example.
Values, names, and variables
Start hereFollow declarations and assignments closely before treating a variable as a box in memory.
Bits, numbers, and text
Start hereLook beneath familiar values without assuming every language stores them in the same way.
Decisions and repetition
Build understandingUse the values you understand to choose a path, repeat work, and reason about termination.
Functions, calls, and closures
Build understandingFollow a call from argument evaluation to return, then explore the state a function can carry.
Collections and structured values
Build understandingBuild larger values and learn what indexing, resizing, copying, and iteration really involve.
References and pointers
Build understandingName the thing a value refers to, then follow how each language lets you reach and change it.
Types and abstraction
Build understandingDescribe the values an operation accepts and see how each language expresses a reusable contract.
Functional evaluation and effects
Build understandingUse Haskell to question familiar assumptions about mutation, function arguments, and the timing of work.
Modules, names, and visibility
Build understandingOrganize definitions and make the boundary between public and private names explicit.
Errors and failure
Build understandingFollow what happens when a normal result is unavailable, and keep failure behavior explicit.
Lifetimes, ownership, and cleanup
Go underneathNow ask who can use a value, how long it remains valid, and who is responsible for releasing resources.