Languages, Compilers and Interpreters

Take historical note of textile and steel industries: do you want to build machines and tools, or do you want to operate those machines?

Ras Bodik, re “why learn about compilers”

Most programmers learn languages, whereas most computer scientists learn about languages.

This gives the computer scientist a distinct advantage over the programmer, even in the domain of programming! Their knowledge generalizes; they are able to understand the operation of a new language more deeply and expeditiously than those who have merely learnt specific languages.

The course is scoped to give software engineers a first look under the covers of popular languages and their implementations. Compared to a typical compilers course, some of the details of compiler design are treated summarily, so as to afford more time building a stronger understanding of the general design of languages and operation of compilers and interpreters.


  1. Overview
  2. Lexical Analysis and Parsing
  3. Language Semantics and Evaluation
  4. Functions, Closures, Classes and Objects
  5. Bytecode Generation and Stack-Based Virtual Machines
  6. Runtime Environments and Garbage Collection
  7. Native Code Generation
  8. Optimization

Projects and exercises

This course has a significant practical component: you will write an interpreter for a simplified version of JavaScript, in your language of choice. Additional exercises are included where helpful, for instance profiling and optimization exercises to better understand existing sophisticated optimizers.

Assumed knowledge

This course assumes confident programming ability in any language. Familiarity with computer architecture is also advantageous.

Schedule and price

Languages, Compilers and Interpreters will next run 5:00pm-6:30pm Tuesdays and Fridays, 18 Jun - 26 Jul 2019. The total price is $1800.

Apply now Still have questions? Contact us.

Designing and implementing a programming language was one of the most edifying projects I’ve taken on yet, for more than just the stronger abstract model of computation I learned. Writing such a rich system strengthened every practical intuition I have as a software engineer, and reified my understanding of software as an end-to-end product.

Felix Tripier, Software Engineer at Getaround Felix Tripier, Software Engineer at Getaround

I studied compilers at Bradfield and enjoyed it immensely, because the subject is at once very theoretical and very practical. I now understand why programming languages look and behave the way they do. Also, after implementing parts of a compiler, I am more proficient with data structures and algorithms, particularly trees and recursion. In short, studying compilers will make you a better programmer.

Henry Chen, Instructor at Hackbright Academy Henry Chen, Instructor at Hackbright Academy

After learning about languages and compilers with Bradfield, I feel like I have a massive head start in weighing and learning new languages. A language like Golang isn’t a complete black box to me any more; it’s statically typed, compiled, garbage-collected, and concurrency-enabled. Knowing how each of these aspects affect the programming experience gives me a grasp on large pieces of the language before even looking at its syntax.

Tiger Shen, Software Engineer at Braintree Tiger Shen, Software Engineer at Braintree