Compilers
CIS*4650
(Winter 2014)
Instructor: Fei Song (Reynolds 215, ext.
58067)
Email:
fsong@uoguelph.ca
Office
Hours: Monday and Friday between 3 and 4 pm
Course
website: http://moodle.socs.uoguelph.ca/
Overview
This course provides an overview of
different programming paradigms followed by a detailed study of the compilation
process for a procedural programming language.
Students will gain an in-depth understanding of compiler design by
considering fundamental issues such as parsing, building and manipulating
intermediate representations of a program, and code generation. These principles will be put into practice
through the construction of a fully functioning compiler for a simple
procedural language using the widely available tools such as LEX and YACC and a
general purpose programming language (C/C++ or Java). The assignment and the project are designed
to reinforce various concepts that are typically abstracted by tools during
compiler construction in order to provide the students with a complete picture
of the compiler design and implementation process.
Students are expected to have a
solid background in modular programming, assembly language, and basic computer architecture
(e.g., registers, memory organization, etc.).
Experience with the development of a large software project such as that
provided by CIS*2750 or CIS*3760 will be beneficial.
Evaluation
·
One assignment: 10%
·
One project with three checkpoints: 45%
·
One midterm: 20%
·
One final exam: 25%
Lecture attendance is important. The textbook and lecture notes will not
necessarily provide adequate coverage for the course materials, especially the
discussions and question answering we conduct during the classes. Late
submissions for the implementation are not encouraged, and there will be a
reduction of marks by 10% for one day late, 25% for two days late, and 50% for
three days late. After that, no marks
will be given for late submissions.
Textbooks
Alfred V. Aho,
Monica S. Lam, Ravi Sethi, and Jeffrey D.
Ullman. “Compilers: Principles,
Techniques, and Tools”. Second
Edition. Pearson
Education, 2007. (Required)
John R. Levine, Tony Mason, and
Doug Brown. “Lex & Yacc” 2nd
Edition. O’Reily & Associates,
1992. (Recommended)