The goal of this lecture is to teach the basic theory behind a compiler (lexer, parser, intermediate languages, abstract syntax trees, code optimization and code generation). During this course the students are writing a full-blown compiler for a small language which produces JVM bytecode.


  1. Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. 2nd edition. Addison-Wesley, 2007.
  2. Andrew W. Appel, Modern Compiler Implementation in Java. Cambridge University Press, 1998.
  3. Andrew W. Appel, Modern Compiler Implementation in C. Cambridge University Press, 1998.
  4. Steven S. Muchnick, Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997.
  5. Allen I. Hollub, Compiler Design in C, Prentice Hall, 1990.


Lecture slides are available in Greek.

  1. Introduction el
  2. Lexical Analysis el
  3. Syntax Analysis (Intro and Top-Down) el
  4. Syntax Analysis (Bottom-Up) el
  5. Syntax Directed Translation el
  6. Semantic Analysis el
  7. Intermediate Code Generation el
  8. Running Time Environment el
  9. JVM Internals el

Check out the following playlist


All announcements and material can also be found at