CSE5317/4305: Design and Construction of Compilers

Class:Tuesday and Thursday 2:00pm-3:20pm
Instructor:Leonidas Fegaras
Office:ERB 653 (Engineering Research Bldg)
Phone:(817) 272-3629
Office hours:Tuesday and Thursday 3:30-5:00pm

Catalogue Description:
Review of programming language structures, translation, and storage allocation. Introduction to context-free grammars and their description. Design and construction of compilers including lexical analysis, parsing and code generation techniques. Error analysis and simple code optimizations will be introduced.

The goal of this course is to give a working knowledge of the basic techniques used in the implementation of modern programming languages. The course is centered around a substantial programming project: implementing a complete compiler for a realistic language. Students successfully completing this course will be able to apply the theory and methods learned during the course to design and implement optimizing compilers for most programming languages.

Upon successful completion of this course, students

Prerequisites: CSE3302 (Programming Languages), which requires both CSE3315 (Theoretical Concepts) and CSE3322 (Computer Architecture I), or consent of instructor.
Students must: Students without adequate preparation are at substantial risk of failing this course.

Required Textbook and Notes:

Other Texts:
You may find the following texts useful for additional background and explanation:

The final grade will be based on The course work will be the same for graduates and undergraduates. Final grades will be assigned according to the following scale:
     A: score >= 90, B: 80 <= score < 90, C: 70 <= score < 80, D: 60 <= score < 70, F: score < 60,
Sometimes, lower cutoff points are used, depending on the overall performance of the class. After the first grades are posted, students can check their grades online at the course web page.

Reading Assignments:
Completing reading assignments before the class period in which the material is discussed is essential to success in this class. Not all the assigned material will be covered in class, but you will be responsible for it on exams.

Both exams are open textbook (only the class required textbook) and open notes (all notes must be securely bound in one notebook). The final exam will cover the material from the first lecture up to and including the last lecture. Once the exam grades are posted, you will have 10 business days to dispute your grade and get your exam re-evaluated. Before you request for re-evaluation, make sure to compare your answer with the solution. No re-evaluation will be entertained after the 10 day period. No makeup exams will be given unless there is a justifiable reason (such as illness, sickness or death in the family). If you miss an exam and you can prove that your reason is justifiable, you should arrange with the instructor to take the makeup exam within a week from the regular exam time. For any other case, you will get a zero grade for the missed exam.

The course project is to construct a compiler for a small programming language and will involve: lexical analysis, parsing, semantic analysis (type-checking), and code generation for a MIPS architecture. This project will be done in Java. The project is to be completed in several stages spaced throughout the term and will be done individually. Details will be given out in class the third week of the course. All submissions must be done electronically using the class web site. Late assignments will be marked 20 points off per day (out of 100 max). So, there is no point submitting a project report more than 4 days late! This penalty cannot be waived, unless there was a case of illness or other substantial impediment beyond your control, with proof in documents from the school.

Pproject assignments must be done individually. No copying is permitted. Cheating involves giving assistance to or receiving assistance from other students or from other individuals, copying material from the web, etc. I strictly adhere to the University of Texas at Arlington rules and guidelines for handling violations of academic dishonesty. Please refer to the pamphlet "CHEATING: Definitions and Consequences" for additional information. If any one is caught for cheating, or indulge in plagiarism or collusion on a programming assignment or on a exam, the grade for the entire course will be an automatic Fail grade (F). Students are required to read the following document carefully, sign it, return the signed copy to the instructor, and keep a copy for their own records. Hardcopies of this document will be provided to the students in the first class, and also can be picked up in the instructor's office. If you print by yourself, please make it double-sided.
Statement on Ethics, Professionalism, and Conduct for Engineering Students

How to do Well in this Course:
Students who get the most out of this course will be the ones who put in the most effort. If you want to do well, attend all the lectures, read the assigned sections of the book, and start early on your project assignments. Working out the problems from book chapters will immensely help in doing well on exams. If you are having difficulty, the instructor and the GTA will be more than happy to help you. In addition to regular office hours, the best way of communication with the instructor or the GTA is through email. If you can't make it to the scheduled office hours but really need help, contact one of us for an appointment.

Special Accommodations:
If you require an accommodation based on disability, I would like to meet with you in the privacy of my office, during the first week of the semester, to make sure you are appropriately accommodated.

Course web page:
Please visit this web page often; it will contain class notes, solutions, etc.

Related web pages:

Last modified: 01/13/14 by Leonidas Fegaras