Skip to main content
CF

Crusty Interpreter

33h 53m 10s
English
Paid

Crusty Interpreter is a 11-lesson 33 hours 53 minutes self-paced course by David Beazley. Course Description: This course challenges you to implement an interpreter for an unfamiliar programming language (Lox) using a potentially new programming language (Rust), inspired by a book originally authored in a familiar language…

Course facts

Lessons
11
Duration
33 hours 53 minutes
Level
All levels
Language
English
Updated
Instructor
David Beazley
Price
Premium

Course Description: This course challenges you to implement an interpreter for an unfamiliar programming language (Lox) using a potentially new programming language (Rust), inspired by a book originally authored in a familiar language (Java).

General Overview

In university, you might have encountered assignments like "design a processor's instruction set," "build a Unix shell from scratch," or "solve the Dirac equation" on the first day. While some students shy away, others embrace the challenge. This course belongs to that challenging category.

You will dive into Robert Nystrom's "Crafting Interpreters" book and embark on implementing a lexer and a recursive descent parser. This will likely be your first experience with Rust, with challenges only intensifying thereafter.

Target Audience

This course is intended for seasoned developers eager to elevate their skills through intensive project work using a modern programming language. You might relate to one of these profiles:

  • You've written some Rust and wish to move beyond basic examples with a complex, multi-component project.
  • You have no Rust experience but are curious about it, confident in your compiler/interpreter skills, and ready for a new challenge.
  • You lack both Rust and interpreter experience, but you have a free week and the willingness to face a profound challenge.

The course is akin to a marathon: you may question your decision mid-way, but completion brings immense satisfaction.

Learning Format

This is a week-long project-intensive course. Each morning begins with discussions on programming language design and Rust implementation. Most of the day is devoted to independent coding, punctuated by brief problem-solving and experience-sharing sessions.

Prerequisites

Participants should be comfortable with fundamental programming concepts such as expressions, operators, variables, control flow, functions, and classes. Experience with interpreter implementation is advantageous but not essential. While prior Rust knowledge is unnecessary, expect a steep learning curve with initial trial and error.

Curriculum

The goal is to navigate the first ten chapters of "Crafting Interpreters," developing an AST-walking interpreter for Lox. You'll explore key programming language implementation concepts:

  • Scanning and lexical analysis
  • Recursive descent parsing
  • Program representation and AST construction
  • Program execution
  • Variables, scope, and environment
  • Control structures like if, while, and for loops
  • Functions, including higher-order functions and closures

Simultaneously, you'll delve into essential Rust development aspects:

  • Project organization in multiple modules
  • String handling
  • Error handling with Option/Result
  • Testing
  • Algebraic data types (struct, enum)
  • Recursive structures (trees, lists)
  • Pattern matching
  • Ownership and borrowing rules
  • Interior mutability

The book provides necessary code snippets in Java, challenging you to translate and implement concepts in Rust. This translation makes course discussions particularly engaging and insightful.

Who teaches Crusty Interpreter? David Beazley

David Beazley thumbnail

David Beazley is one of the most authoritative independent voices on the Python language, author of the Python Cookbook (O'Reilly), Python Distilled, and the long-running PyCon tutorial series that has shaped how serious Python engineers think about the language. He has been teaching Python continuously since the late 1990s.

His CourseFlix listing carries four David Beazley courses: Advanced Programming with Python, the Crusty Interpreter (a Rust implementation exercise), Write a Compiler, and the Rafting Trip retreat-style intensive. The teaching style is unusually rigorous about the language and the foundational CS topics underneath it — David's courses are taught at the level of someone who has implemented Python interpreters and language tooling for decades.

Material is paid and aimed at experienced Python developers ready to study the language at depth. For broader content, see CourseFlix's Python category page.

What lessons are included in Crusty Interpreter?

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 11 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: 001 Day 1 Morning
All Course Lessons (11)
#Lesson TitleDurationAccess
1
001 Day 1 Morning Demo
03:31:34
2
002 Day 1 Afternoon
03:23:52
3
003 Day 2 Morning
01:27:36
4
004 Day 2 Late-Morning
01:51:41
5
005 Day 2 Afternoon
03:21:43
6
006 Day 3 Morning
03:34:18
7
007 Day 3 Afternoon
03:25:26
8
008 Day 4 Morning
03:17:33
9
009 Day 4 Afternoon
03:34:20
10
010 Day 5 Morning
03:39:56
11
011 Day 5 Afternoon
02:45:11
Unlock unlimited learning

Get instant access to all 10 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

What courses are similar to Crusty Interpreter?

Frequently asked questions

What prior knowledge is required before taking this course?
The course is designed for seasoned developers. You should have experience in programming and be comfortable with complex project work. Prior knowledge of Rust is not mandatory, but familiarity with compiler or interpreter concepts will be beneficial. The course is ideal for those ready to embrace a challenging, marathon-like project.
What kind of project will I build during the course?
Participants will implement an interpreter for the Lox programming language, leveraging Rust. You'll work on creating a lexer and a recursive descent parser, inspired by Robert Nystrom's 'Crafting Interpreters' book. This project is a multi-component endeavor, presenting a significant challenge especially if you are new to Rust.
Who is the target audience for this course?
This course is aimed at developers eager to advance their programming skills through intensive project work. It's suitable for those with some Rust experience seeking a complex project, or individuals new to Rust but familiar with compilers or interpreters, as well as those entirely new to both but ready for a challenging experience.
How does the depth of this course compare to others?
The course belongs to a challenging category, similar to university-level projects like designing a processor's instruction set or building a Unix shell. It offers a deep dive into implementing an interpreter with Rust, testing the limits of your problem-solving skills and technical knowledge.
What specific tools and platforms are involved in the course?
The course involves using Rust as the programming language to implement an interpreter for the Lox language. The project follows the approach outlined in Robert Nystrom's 'Crafting Interpreters' book, focusing on developing a lexer and recursive descent parser.
What topics or skills are not covered in this course?
While the course focuses on implementing an interpreter using Rust, it does not cover other aspects of interpreter or compiler design, such as optimization techniques or advanced parsing strategies beyond recursive descent. It also does not delve into Rust beyond what is necessary for the project.
How much time should I expect to commit to this course?
The course consists of 11 lessons, each representing a segment of time. Given the challenging nature of the project, it is expected to be time-intensive. It is recommended to allocate a significant portion of your week to fully engage with the material and complete the project.