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
- Grammars in Python: Runnable Models for Grammars and Derivations (interactive): the executable companion to the Grammars, Derivations, and Syntax/BNF sessions: CFGs as dictionaries, left-recursion detection, parse trees as data, a derivation tracer, and an ambiguity detector
- 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++