Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Recommend an introductory course on compilers
66 points by rochak on Dec 25, 2016 | hide | past | favorite | 22 comments
I am doing Bachelors in Information Technology and to my bad luck, my curriculum does not have a course on compilers. I looked online and found one on Coursera only to realize that it has now been removed. Could you guys recommend a good compilers course or book which gives a good introduction to the topic along with a guided practical implementation? I would be much obliged.

This is not a course, but a practical tutorial that will teach you the "nuts and bolts" and get something pretty cool (a JIT compiled REPL) working easily:


These are examples in C++ and OCaml.

There's a similar tutorial in Python as well, which should be easier to get running:


Not a full course (apologies in advance) but I have heard a lot of people get a good introduction from:


It was written with Turbo Pascal in mind but many have read the text and transcribed the instructions to a language of their choosing. Should be at least a good introduction to compilers.

No need for any apologies. I am looking for anything that can introduce me to the topic along with practical knowledge

Here's an HN comment from last week that included links to a compilers course (a course from HN user jpolitz, who posted the comment).


Here are the links:




James Kyle (who created Babel) wrote a 'Super Tiny Compiler' that's a really great (low barrier to entry) place to start.

The inline docs are super well written, clear and extensive. It's also implemented in JabaScript.

It's an amazing learning tool and I really loved reading it!


I thought it was that young aussie guy, Sabastian that created babel? It was initially named 6to5 to my best memory, and later renamed Babel.

You are correct.

I enjoyed this book by Niklaus Wirth - father of Pascal, Modula-2 and Oberon. https://www.amazon.com/Compiler-Construction-International-C...


A tour through a clean subset of a C compiler, full C source code included. It's not exactly a course, but will introduce all basic parts of compiler construction on the theoretical and practical level: lexing, parsing, code generation, optimization, and runtime support. The complete code from the book is in the public domain: http://t3x.org/subc

For the record: I'm the author.

Allen Holub's book "Compiler Design in C" is excellent. The book is out of print, but you can get it as a free PDF from Holub's site: http://www.holub.com/software/compiler.design.in.c.html

Over the course of the book you implement compiler construction tools (a LEX clone and two YACC clones) and then use those to build a C compiler.

Great question. In addition to all the "serious" answers here, I'd recommend the nice "How I start" article for nim:


As well as playing a bit with ometa:


MIT has a course called 6.035 which might be of use. Unfortunately the ocw page doesn't have lecture videos, but there seem to be some on YouTube if you search for it and the notes on ocw could help. Good luck!


Edit: here's some videos https://ocw.mit.edu/courses/electrical-engineering-and-compu...

Also maybe check out the recommended text: Modern Compiler Implementation in Java (Tiger Book)

And a few more resources here: http://cons.mit.edu/sp14/references.html

You should split your study into three parts.

1) Theory of computation (can't recommend a book for this one)

2) Programming language theory (Book: Programming Language Pragmatics)

3) Compiler construction (Book: Engineering a compiler or the Dragon Book)

1) The classic is Introduction to Automata Theory, Languages, and Computation by Hopcroft and Ullman.

Ullman used to have a course on Automata via Coursera but the platform changes have sent it down the memory hole.

I recently began with https://lagunita.stanford.edu/courses/Engineering/Compilers/...

Until now I think it is good (I'm in the second week of the course).

The Coursera course can be found on Stanford's site: https://lagunita.stanford.edu/courses/Engineering/Compilers/...

It's self-paced now.

Here's a list of courses that should help - https://github.com/prakhar1989/awesome-courses#programming-l...

There are few courses on compilers listed in this list: https://github.com/Developer-Y/cs-video-courses

Very good question. I am interested in reading the suggestions as well. Also, a specific book question: is Engineering a Compiler by Cooper & Torczon any good?

The compiler course I took was taught by Keith and Linda. Keith is certainly one of the best educators in the department, and, in my opinion, their book is also of high pedagogical value.

For me, its shining moments are the explanations of abstruse algorithms. The text takes the time to work through interesting example runs of the algorithms that illustrate all the facets of the computation. This was critical to my understanding of how the algorithms work, why they need to work that way, and how competing algorithms differ.

It's also not the kind of book that needs to be read cover to cover. We went through the chapters out of order. If you can find matching lecture slides, that can be a great guide or survey of the material.

This was the official text when I took the class in 2004 with one of their disciples (Dr. Liebrock) at New Mexico Tech. But the exercises were actually taken from the book Modern Compiler Design by Andrew Appel. Officially, the C version of the book.

I got almost nothing out of the book Engineering a Compiler.

Aside from that the class was amazing. Maybe the next edition has become excellent? I knew people who took the class using the Dragon book and found that book unhelpful too.

I'm currently reading Wirth's book and really enjoying it though.

Applications are open for YC Winter 2024

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact