Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

self-taught compiler courses / good introductory compiler books?

Does anyone know of online course / university lectures that comprise a typical compiler course? I've had theory of computing but unfortunately my school didn't offer a course in compiler construction.

I know there are lectures out there; I was hoping for recommendations for particularly good offerings.

Also, are there books for newbies to the field? Something besides the dragon book, at least. Beginners level is fine, I know there are a lot of intermediate-advanced texts on the market.

Thanks!

like image 262
larryq Avatar asked Oct 13 '09 06:10

larryq


2 Answers

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...)

like image 173
mjv Avatar answered Oct 10 '22 03:10

mjv


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.

like image 27
Nick Dandoulakis Avatar answered Oct 10 '22 03:10

Nick Dandoulakis