You can check out this course: http://ecee.colorado.edu/~siek/ecen4553/fall09/
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.