|
In this class the students will study the principles of compiler
design and implementation. We will concentrate on the organization
of a simple but complete compiler, including the initial phases
of a typical front-end. We will begin with scanners, then go on
to various parsing techniques, type checking, syntax-directed translation,
and code generation. We will also talk about symbol tables, error
recovery and runtime systems. Discussions will include compiler
compilers (scanner and parser generators), as well code generation
and optimization.
Each student is expected to design and implement a simple compiler
(the details will be discussed later). All programming should be
done in either C++ or C. Development in Java is also possible, but
using compiler-compiler tools for Java may be more challenging.
The programming project will be split into a few parts to make the
development a larger project manageable.
Each student is expected to do his/her own work. You are not allowed
to work in teams. All suspected cases of academic dishonesty will
be handled in strict accordance with department and university policy.
The grade of I (incomplete) is reserved for special cases only,
such as a serious illness, and will be decided on individual basis.
The course syllabus outlines a general plan for the course and
deviations may be necessary.
|