Home Page for CIS 461/561 (Introduction to Compilers)

Few of you will write full scale compilers for general purpose programming languages. Most of you, however, will write programs that process "little languages." For example, you may be writing scripts that read an input from an HTML form, parse it, check it for consistency, and generate HTML code as output. In addition to learning general principles, algorithms, and techniques that are helpful for (big and small) compilers, the course should provide you with:
  1. a concrete understanding of programming language concepts that complements the more mathematical understanding you get from a course in semantics; this should ultimately make you a better programmer,
  2. understanding the cost of programming language constructs; understanding what can be implemented reasonably and what can be expected to be optimized by a typical compiler, etc,
  3. writing a large program using an advanced programming language; managing the complexity of having multiple programmers; use modules effectively,
  4. a great case study for applying the software engineering concepts you were introduced to in other classes. This may be as close as you will get to "real" programming.


Overview of the course (Example)



Interpret a Tiger term:

Compile a Tiger term:

Page visited times since November 18, 1996.