9

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!

larryq
  • 15,713
  • 38
  • 121
  • 190
  • 1
    Duplicate (many times over) http://stackoverflow.com/questions/1669/learning-to-write-a-compiler and others – cletus Oct 13 '09 at 06:34
  • i've never seen a better explanation of compilation than in the Dragon book. You could do worse than persevere with it. – Andrew Matthews Oct 22 '09 at 01:38
  • 1
    I disagree. I think that Modern Compiler Implementation In {ML,Java,C} by Andrew Appel is better than the Dragon book. The dragon book is fine as a reference, but I think if you are looking for purely self-directed learning, Modern Compiler Implementation is a more complete and coherent work. – Gian Oct 26 '09 at 10:53
  • possible duplicate of [Learning Resources on Parsers, Interpreters, and Compilers](http://stackoverflow.com/questions/41785/learning-resources-on-parsers-interpreters-and-compilers) – nawfal Jul 21 '14 at 12:52

3 Answers3

10

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

Community
  • 1
  • 1
mjv
  • 73,152
  • 14
  • 113
  • 156
  • Does someone have the answers from that duplicate SO posting? It's been deleted due to moderation reasons. – TravisG Apr 04 '12 at 16:34
5

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.

Nick Dandoulakis
  • 42,588
  • 16
  • 104
  • 136
  • Thanks for the link. I'll have to see if he has more course info online than the website indicates-- looks like a lot of lecture material is either not there or hidden from public view. – larryq Oct 14 '09 at 02:16
  • 1
    @prasopes, thanks. I added a link without the year, because it might break again in the future. – Nick Dandoulakis Jun 14 '13 at 14:08
4

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.

Bubba88
  • 1,910
  • 20
  • 44