self-taught compiler courses / good introductory compiler books?

You can check out this course: http://ecee.colorado.edu/ecen4553

Course Information

High-level programming languages like Python make programming a breeze, but how do they work? There's a big gap between Python and machine instructions for modern computers. Learn how to translate Python programs all the way to Intel x86 assembly language.

Most compiler courses teach one phase of the compiler at a time, such as parsing, semantic analysis, and register allocation. The problem with that approach is it is difficult to understand how the whole compiler fits together and why each phase is designed the way it is. Instead, each week we implement a successively larger subset of the Python language. The very first subset is a tiny language of arithmetic statements, and by the time we are done the language includes objects, inheritance, and first-class functions.

Prerequisites: Fluency in at least one programming language (Java, C, C++, Python, etc.). Students will do a lot of programming in Python, but prior knowledge of Python is not required. The course will start with a crash course on Python and Python is one of the easiest languages to learn. Prior knowledge of an assembly language helps, but is not required.


Edit: in case this SO questions doesn't get closed, do check this duplicate SO posting which answers the question in a much more exhaustive fashion.

A couple of ressources on MIT's OpenCourseWare site:

6.035 Computer Language Engineering
6.827 Multithreaded Parallelism: Languages and Compilers

The former probably along the lines of what you had in mind. It also includes some of the lectures' videos.
The latter... positively a graduate level course. Also focus is more on multi-threading than the traditional compiling chain. (But then again to to chunk code threads efficiently one must have a decent grasp of the semantics expressed in the original program...)


Take a look at this http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf ;)

That is a very basic introduction, you know that modern compilers are somewhat really complicated.