A compiler translates a program written in a high level language into a program written in a lower level language. For students of computer science, building a compiler from scratch is a rite of a challenging and fun project that offers insight into many different aspects of computer science, some deeply theoretical, and others highly practical. This book offers a one semester introduction into compiler construction, enabling the reader to build a simple compiler that accepts a C-like language and translates it into working X86 or ARM assembly language. It is most suitable for undergraduate students who have some experience programming in C, and have taken courses in data structures and computer architecture.
I learned a lot from this book which is why I rated it so high. The writing is very easy to follow. My one complaint is that there are not a lot of details for the B-Minus compiler that is gone over. This lack of details might be because the author uses this book for their class and most likely the compiler is a project for the class, which makes the text hard to use for self study.