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 and history
  2. Lexical analysis and FSAs
  3. Parsing algorithms
  4. Semantic analysis and type checking
  5. Stack-based virtual machines
  6. Code generation, just in time compilation
  7. Optimization and tradeoffs
  8. Runtime environments, stack management and garbage collection
  9. Language design considerations and applications

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

This course is next scheduled to run Tuesdays and Fridays 6pm-9pm and Sundays 2pm-5pm for three weeks starting Tuesday, 2 May 2017. The total price is $1,800.

Apply now Still have questions? Contact us.
1141 Howard St
San Francisco, California
© 2016 Bradfield School of Computer Science