Skip to main content

Build An Interpreter

Learn To Build A Programming Language Interpreter Through Practice

Code a tree walking interpreter from scratch. Learn scanning and tokenising, recursive descent parsing, representing program code with abstract syntax trees (ASTs) and how to execute the program by walking the AST as you build a working interpreter.

Start DatesPriceBooking Link
TBD 2025500 USDSign up for Waitlist
TBD 2025500 USDSign up for Waitlist
TBD 2025500 USDSign up for Waitlist

Become a better software engineer by building a tree walking interpreter.

Challenge yourself by implementing a tree walking interpreter. It’s not an easy course. Most university courses on interpreters and compilers last a whole semester, you’re going to do it in two weeks!

Who is this course for?

Mid-level software engineers who want to learn how to sharpen their skills, improve their unit testing and gain experience code reviewing.

Senior+ software engineers who want to learn from their peers and gain insights on how others tackle real-world problems with a hands-on project.

Engineering Managers to CTOs - who want to remain hands on and refresh their understanding of current software development methodologies.

What you’ll get out of this course.

Develop your parsing skills.

These can be applied to a variety of problems including data munging, scraping, protocol implementation and more.

Learn how to build programming languages.

This can the be applied to building either programming language interpreters and compilers or parsers for domain-specific languages.

Improved your testing skills.

Interpreters are complex pieces of software that require a good understanding of algorithms and data structure. Figuring out how to test them is a challenge. You’ll explore unit and integration testing.

An introduction to Test Driven Development.

TDD is a great way to develop core components of an interpreter, you’ll learn how it can help.

Experience pair / mob programming.

Optionally pair or mob with your peers and experience collaborative development practices.

Develop your code review skills.

Experience reviewing code written in different programming languages and styles.

Course syllabus

The course will run for two weeks from the start date. During the course there will be six live, instructor led sessions.

The instructor will also be available throughout the course for questions on a private Slack channel for the course.

Week 1

Session 1 (Monday) - Introduction To Interpreters, Programming Language And Interpreter Design.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 2 (Wednesday) - Lexical Analysis.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 3 (Friday) - Grammers And Parsing.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Week 2

Session 4 (Monday) - Parsing And Building An Abstract Syntax Tree.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 5 (Wednesday) - Walking The Abstract Syntax Tree To Execute It.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 6 (Friday) - Course Summary.

  • 17:00 - 17:45 GMT Instructor led discussion and final code-reviews.

When Is The Course Running?

Start DatesPriceBooking Link
TBD 2025500 USDSign up for Waitlist
TBD 2025500 USDSign up for Waitlist
TBD 2025500 USDSign up for Waitlist

Meet Your Instructor

John Crickett

I'm the founder of Coding Challenges, a software engineer, and sometimes a manager of software engineers. I've worked as both a senior individual contributor (Staff+) and a senior manager (VP Engineering, Head of Software Development).

I've worked across many tech stacks. I've spent most of the last six years building distributed systems with Python and Flask deployed on AWS using CloudFormation and some CDK.

I've done some TypeScript/JavaScript, React and Next.js on the frontend with Node.js and Express on the backend. All deployed on AWS using CDK.

For most of my career before that I worked in C++ as well as a number of other programming languages including C, Java, C#, PHP, Perl, Visual Basic, Pascal, Deplhi and others.

I'm currently working in Python, Go and occiasionally Rust. Coding Challenges was born out of the process of learning Rust by building real-world applications.

Frequently Asked Questions

I work full-time, what is the expected time commitment?

This is a intense immersive course, to get the most from it you need to attend during the sessions and complete the project. Most organisations provide a learning and development budget so I suggest you approach your boss and ask them if they'll cover the cost of the course and give you time to attend. If you need anything from Coding Challenges to support that, please reach out!

What programming language can I use?

You can use any programming language you like. We can't promise that we'll be familiar with it.

One of the key skills that's helped John through his career is jumping into new code bases often in new programming languages - we will use the diversity of languages used by students to explore this.

Does each participant develop their own clone or is it like a team project?

The intention is that everyone builds their own Redis clone. However the course aims to provide a collaborative experience around design decisions and code reviews - it is fine if people want to take it even further and collaborate on the coding too.

What’s the refund policy?

Things come up.

If you have to cancel and do so more than 72 hours before the start of the course we'll give you a full refund.

At any other time, you'll have the option to reschedule to a later course.