CS 5810 Syllabus- Compiler Design and Implementation

Class Information

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:
  1. Understand the basic concepts in lexical analysis
  2. Understand the basic parsing techniques such as LL, LR.
  3. Understand Semantic analysis and type checking
  4. Understand Run-time environment management
  5. Understand Intermediate Language and Optimization
  6. Fully grasp some supporting tools for writing a compiler

Learning Outcome

Once finishing this course, students should be able to:

  1. Explain the basic concepts used in the compiler construction
  2. Apply supporting compiler generation tools Lex and Yacc to write a compiler for a C-like programming language
  3. Show the run-time environment for an output generated from a source program
  4. 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.