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)