Learning and working on this stuff almost always felt "all or nothing," (either it worked or it didn't), which was very frustrating.
This looks interesting:
> Like Ghuloum [2006], this course is different. Our development is by extending the complete, working compiler one small step at a time. At each step we end up with the working compiler, for a subset of the source language. Specifically, the methodology ([Ghuloum, 2006, §2.6]):
> 1. choose a small subset of the source language that is easy to directly compile to assembly;
> 2. Write the extensive test cases;