This post was motivated by the following picture (taken from Pearson’s website) of the Red Dragon book‘s cover.
Some of my students recently used this image as their profile picture during the time of this midterm test. It turns out that there were 11 students (ferdi, budi, denvil, hari, gilang mentari, ken, nurul, raufan, glenn, agung wibowo and erwin) attending the compiler course taught by Prof. Heru Suhartanto this semester. I found that was funny since they called themselves the knights and lady of compiler .. :-D. And yeah, by the way, ‘the lady’ here is singular because there is only one girl attending the course… 🙂
You may guess that the course was not very popular which is true. Since my time as an undergraduate, this course was already viewed as one of the most difficult besides Prof. Chan’s linear numerical algebra. It might be caused by the highly technical content of the course, making it challenging to most students who usually tends to prefer “easier” courses. Of course, there is no such easier course, but they always consider those courses where they can just sit and sleepily listen to the lecturer without pushing their brain with mathematical and technical details.
What makes it funny is that the textbook’s cover fits the impression that the course is difficult. Picturing a knight facing a dragon whose head comes out of the computer’s monitor really emphasize the metaphor of conquering complexity (at least this is what the Wikipedia entry of this book says). In fact, this famous textbook on compiler design and technique by Aho, Sethi and Ullman has been actually published three times, all of which depicting a battle between a knight and a dragon. The original edition was actually titled Principles of Compiler Design (published in 1977) and called the Green Dragon book. This was then followed in 1986 with the first edition of Compilers: Principles, Techniques and Tools which is called the Red Dragon book, and its second edition called the Purple Dragon book, published in 2006 (see the book’s website here). The newest edition covers many modern issues in compiler technology, including just-in-time (JIT) compilation, and garbage collection.
Such is the book’s reputation, it is now considered the classic reference for compiler technology. Like Cormen’s or Knuth’s books in algorithm, this book is absolutely mandatory for those whom are interested with the technology. I also view this course as a must for CS students because it underlies many advances in software technology. Don’t be afraid with the dragon, it is not too frightening once you jump in the course yourself… 🙂