This is a course about constructing language processors (compilers and interpreters). This is a topic that far transcends its practical and systematic use for programming language compiling only; any computation can be recast as a language processing problem. So, understanding this process reveals more about computing in general than just compiling.
Although Ceng280 is officially not a prerequisite, we very strongly suggest that you don't take this course before Ceng280. A good understanding of formal languages proves to be very helpful. If you are not convinced, read the quote below.
Formal Language theory is often a stumbling block for computer science undergraduates because of its heavy dependence upon notation. The subject cannot be avoided, however, because any self-respecting computer scientist must have a good understanding of compiling and this in turn, relies heavily on the theory of formal languages
V.J. Rayward-Smith (1995). Formal Language Theory. McGraw-Hill. (from the preface).
Course conduct There is one midterm exam and one final. All are in-class exams.
There is one project, done in two phases. It involves design and implementation of a compiler from scratch.
Exams and project are equal weight. Project's phases are equal weight. Exams are equal weight as well.
Textbook Compilers: Principles, Techniques and Tools. By Aho, Sethi and Ullman, Prentice-Hall, 1986. This is a CS classic, called the 'Dragon book'. Red dragon is the original, and still the most popular. 2nd edition is the purple Dragon (2006). Either version is fine for the course.
See here for differences, which aren't critical for an introductory course like ours.
Your TA is Can Hosgor, who is very experienced in providing help with the main tool we use, antLR.
enjoy.
-cemB