The course covers most of the translation from C (and C++) into native
computer code. This complicated process cannot be understand without theory,
so you have to be good at theory. You also must be good at programming,
because there will be programming exercises. The course is intended for people
who actually like all aspects of computer science. We will be using an
intermediate representation called LLVM. It has the advantage that it is well-
documented, well-designed, and there is good tool support.