Research Publication Software Photography Miscellaneous
  ComS 440/540: Principles and Practices of Compiling
Philosophy of teaching

Genomic data processing

Principles and practices of compiling

Credit 3. Prereq: 311, 321, 331 and 342.

The theory of compiling and implementation issues of programming languages are addressed in this course. A series of well-orchestrated projects will lead the students to construct a compiler targeting the Java Virtual Machine, for an interesting cellular automata programming language Trend. Topics included in the course are lexical, syntactic and semantic analyses; syntax-directed translations; code generation and optimization; runtime environment; and support libraries. Similar projects with different difficulty levels will be assigned to 440 and 540 students.

Since programming will be an essential part of the course, having the following knowledge is essential before taking this course:

  1. Experience with the C or C++ programming languages. Java can help understanding the Java Virtual machine, but is not required as this time. Basic computer science theory ideas such as automata, languages, regular expression and complexity issues. Basic data structure experience including trees, lists, symbol tables, hashing tables, priority queue, etc. Basic algorithm experience including graph traversal, string searching and processing, parsing, sorting, etc.Machine language and computer architecture experience. This can be just on the Java Virtual Machine.Of course a programming language course.
  2. Finally, a smart brain. This is very helpful but optional. :)

The ComS 440/540 compiler course will offer students the following advantages: concrete compiler development experiences, both in theory and practice, and enhanced experience in string processing, parsing, data manipulation and machine architectures. The benefit also includes some operating system kernel concepts and programming experience. Finally, this can be the biggest single software a student writes before they graduate from the Computer Science department.

This course was offered in Fall 1999 and will be offered again in Spring 2001. For additional information please go to the class home page.