I attended the compilers course from David Beazley in the May 24-28 batch. Since I don’t have a CS background and compilers is one of the main courses suggested in a CS curriculum, I was really looking forward to learning a lot from this course. The prerequisite wasn’t as hard as I expected it to be. Basic-intermediate level of programming and knowledge of data structures were expected along with python.
The course was split into 5 days with each day into 2 sessions. The main part of the course was doing the projects according to the specifications. This is where the learning happened.
We learnt how to model our compiler, writing an interpreter, lexer and parser, type checking and much more. In the end we ended up with a compiler written in python which compiled source code of an imaginary language into machine code via LLVM and run it. This was pretty exciting. David has structured the course in such a way that each component of the compiler is almost independent of the other one and it’s on us to design the program appropriately. This teaches us many different patterns and approaches to problem solving from David as well as the other participants. Apart from this Dave has also put up potential directions in which the project can be taken up and suggested a few directions to dig deeper into the concepts as well.
It has also been a great learning experience to look at other people’s code and understand their approach as well. Some of the participants translated the python code into scala and rust too. Overall I feel this is a wonderful course to take. Dave’s exposition and teaching made it easy to grasp the concepts.
On the non technical front, this was my first course that I have taken in a live setting. I would say it is amazing. It definitely taught me that a lot can be done if you focus tenaciously for 40 hours a week to do something useful for myself.
This course has motivated me to look at more compiler stuff like the following.
- Crafting Interpreters
- Writing an interpreter
- Writing a compiler
- Compilers (Dragon book)
- and many more…
If anyone gets the chance to take any of Dave’s course, please consider taking this one if you have an interest towards systems. It’s really good.