CS 5810 Syllabus- Compiler
Design and Implementation
Class Information
- Instructor: Zijiang Yang, zijiang.yang@wmich.edu
- Class Schedule: Monday 600-830PM @C-136.
- Office Hours: M 400-500PM and by appointments
- Web Page:
http://www.cs.wmich.edu/~zijiang/cs5810/index.html
- Text Book: Compilers:
Principles, Techniques, and Tools (2nd Edition) , by A. Aho
etc., Addison Wesley.
Prerequisite
The course will assume that you know some programming languages like
C++, JAVA etc and use them to write a program.
Overview
In this course, we will introduce how to develop a compiler for a
programming language. Compiler, as a basic course in computer science,
plays an important role in software development. Besides implementing a
compiler for a language, you will learn some techniques used in
compiler design. These techinques include NFA, DFA, syntax analysis,
syntax-directed translation, type checking and code generation etc..
Also some design patterns used in compiler construction wil be
discussed.
Objective
The objective of this course is to provide students with some basic
concepts, techniques and tools for compiler construction so that
students will beable to design their compilers for the future
languages. Specific objectives include:
- Understand the basic concepts in lexical analysis
- Understand the basic parsing techniques such as LL, LR.
- Understand Semantic analysis and type checking
- Understand Run-time environment management
- Understand Intermediate Language and Optimization
- Fully grasp some supporting tools for writing a compiler
Learning Outcome
Once finishing this course, students should be able to:
- Explain the basic concepts used in the compiler construction
- Apply supporting compiler generation tools Lex and
Yacc to write a compiler for a C-like programming language
- Show the run-time environment for an output generated from
a source program
- Understand how to use BNF to define the syntax for a
programming language.
Usefule Links
Lex, Yacc
Programming Assignment and Final Exam
There will be four programming assignments. All the
programming assignments will implement a compiler for a programming
language. This course is a project-based course and you will be given
many chances to show your programming telent. There is only final exam
for this course.
Grading
The final grade has the following composition:
Project:
70%
Exam:
20%
Class Participation: 10%
Late Programming Assisgnment Policy
In the whole semester you are given a total of 4 late days for all the
homework assignments. This is used in case of emergencies, e.g.,
short-term illness, conflict of schedule and some family reasons.
Please use it at your own desecration and no other forms of extension
will be granted after you have used up the 4 late days. After using up
the 4 late days, any LATE homework will NOT be graded and you will
receive ZERO.
Academic Integrity and Dishonesty
You are responsible for making yourself aware of and understanding the
policies and procedures in the Undergraduate (pp.271-272) [Graduate
(pp. 24-26)] Catalog that pertain to Academic Integrity. These policies
include cheating, fabrication, falsification and forgery, multiple
submission, plagiarism, dishonesty, you will be referred to the Office
of Student Judicial Affairs. You will be given the opportunity to
review the charge(s). If you believe you are not responsible, you will
have the opportunity for a hearing. You should consult with the course
coordinator if you are uncertain about an issue of academic honesty
prior to the submission of an assignment, report or test. Students
found responsible in academic dishonesty charges may automatically
receive an "E" grade in the course in addition to other punishments
allowed by the university rules, procedures and policies.