JFQjx2FQZ3JeKeS3NTsoTg==fall 2025
This was my first OMSCS class. I have a bachelors in CS and have been working as a software engineer for ~5 years. I decided to take this first because compilers was the one systems topic I didn't really get to explore in undergrad.
This class is extremely difficult. There is a lot of work to do and all of it is very time-consuming. You build a compiler over the course of the semester, broken down into 4 phases. Phase 2 and 4 are brutal. Always start as early as possible. You can write it in Java or C++. ANTLR documentation for C++ is pretty lacking which means you will spend a lot of time reading header files, so Java is definitely the easier route. I recommend using the instructor-provided grammar after phase 1 to avoid any mistakes you made biting you later on.
There are also 4 written homeworks, which I found challenging but quite interesting. The homework problems focus on the theory and are directly related to the lectures. They were good practice for the final exam and helped reinforce the concepts from the lectures. The final exam is quite tough, but the questions felt fair given the homework problems and the practice exam problems.
The exam is 35% of your grade, which is brutal. I wish it counted for less of the grade or that it were split over two exams, but having to do a midterm exam while also being extremely busy with the homeworks and project would not really help the situation either.
I also did not like the textbook. It attempts to be mathematically formal, while also hand-waving away many technicalities, which ultimately results in it just being confusing.
Overall, despite the difficulty, I found this course extremely rewarding. I learned so much about how programming languages and compilers work. The problems you have to solve while writing a compiler are so fascinating, it's the type of stuff you imagined you would be doing when you first decided to get into programming! 5/5 I would definitely take it again.
Rating: 5 / 5Difficulty: 5 / 5Workload: 30 hours / week