The Tutorials Shelf
These tutorials are the course’s self-serve depth: worked paths, toolchain guides, and companions to the assignments and the Team Language Project. Most are invitations rather than requirements; a few (marked anchors required work) are the reference behind a required assignment step or reading, and the assignment itself always contains the full instructions. Interactive tutorials open in the LiaScript viewer; guide pages open on this site.
Companions to the Assignments
- Parser Combinators — Parsers as First-Class Values (interactive) — companion to Recursive Descent Parsing
- Your Course Development Environment — Docker, Git, and GitHub — anchors required work — the recommended setup route in the Overview assignment: the course container, a GitHub-backed workspace, and the commit/push workflow
- Build an Interpreter (interactive) — start-to-finish companion for the Tree-Walking Interpreter assignment
- Type Inference — Implementing Hindley-Milner (interactive) — companion to the Interpreter assignment’s type-checking direction
- Property-Based Testing Your Language with Hypothesis — anchors required work — companion to the Parser (Step 3e) and Interpreter (Step 2e) property-based-testing requirements
- Typing Disciplines — Strong vs. Weak, Static vs. Dynamic, and Gradual Typing — anchors required work — required reading for the Type Systems unit
- Prolog in the Browser with SWISH — companion to the Functional assignment’s Logic Programming direction (Direction F)
- Haskell Essentials (interactive) — companion to the Functional Programming unit
- Build a Lambda Calculus Reducer (interactive) — companion to the Lambda Calculus unit
- Flex and Bison, Complete (interactive) — companion to the generator-toolchain directions of the Lexer and Parser assignments
Companions to the Team Language Project
- The Project Language Guide (interactive) — a complete worked path for the team project
- A Syntax Highlighter for Your Language with tree-sitter — an editor-support extension (tree-sitter grammar + VS Code highlighting, optional diagnostic) with big Demo-Day payoff
- CI and TDD for Interpreters — test suites, GitHub Actions, and coverage for your language
- Shell Skills for Language Development — run, test, and debug confidently from the command line
- Publishing Your Language — pip, npm, and Docker — release hardening and distribution
- ShipIt: Repo Hygiene, README, Packaging, and Your Portfolio — anchors required work — the self-check scored within the project’s Documentation and Reproducibility dimension
- Demo Day Guide: External Guests and Technical Interview Practice — presenting to guests, and the final-sprint-studio mock-interview rehearsal
- Build a Bytecode VM (interactive) — a compilation-target extension for ambitious teams
- From AST to Code: Visitors and Transpilers (interactive) — expression-oriented design, the Visitor pattern, and transpiling your AST to Python, JavaScript, and Haskell (with source maps)
- Coroutines and Generators — Pausable Computation (interactive) —
yield,send, andasync/awaitfrom first principles, ending with generator objects in your interpreter - Error Handling — From Return Codes to Algebraic Effects (interactive) — design your language’s error story: return codes, exceptions, Option/Maybe, and Result/Either
- Garbage Collection — Implementing Memory Management (interactive) — a runtime extension for the project
- Compiling and Linking — From Source to Executable (interactive) — what happens below your interpreter
- Advanced C++ for Language Implementers (interactive) — for teams implementing in C++