Compilers

Welcome!

Why compilers?

  • Know your tools
  • Insight into programming and computer workings
  • Great software engineering practice
  • Occasional real-world use
  • Fun!

Course philosophy

  • Learning by doing
  • Less theory, more practice
  • End-to-end understanding

Project

  • Course project: make a compiler
  • The project fully determines your grade
  • The course website guides you in completing the project
  • Scoring by automated end-to-end tests
  • Complete base language (chapters 2-7) ⇒ up to grade 4
  • Add features break & continue and functions ⇒ grade 5

AI policy 🤖

  • Don't use AI for coding or debugging.
  • OK to use for theory questions, but don't take code examples from it.
  • Why?
    • Learning by doing is very powerful.
    • Having AI do it for you teaches nothing.
    • Without learning strong fundamentals,
      • you won't be able to guide AI wisely,
      • you won't be able to solve problems that AI can't handle.
  • I don't know how fast things will change or what the future will be like,
    but it's probably good for humans to still understand how things work.

Resources

Teacher

  • Enjoying coding for > 20 years
  • Worked as a webdev, Google SRE, gamedev, now at Oura
  • Compilers at work: an optimizer, a linter, a config language
  • Compilers as a hobby: doodling, prototyping, teaching

Getting started

  • Visit the course page
  • Join Discord
  • Project deadline is March 16. Start early!

Any questions?