CS 4713 Compiler Writing -- Syllabus

Chia-Tien Dan Lo, Ph.D.

Spring 2006

Course Web: http://www.cs.utsa.edu/~danlo/teaching/cs4713/syllabus.htm

Course Notes: http://www.cs.utsa.edu/~danlo/teaching/cs4713/index.htm

Department of Computer Science

University of Texas at San Antonio

TR 11:00 - 12:15 p.m., 1604 Campus

Room: BB 2.01.14

 

Instructor information:

Office: SB 3.01.10

Office Hours: TBA

Phone: x7433

Email: danlo@ieee.org URL: http://www.cs.utsa.edu/~danlo

Course Description: 3 hours credit. Prerequisites: CS 2731, CS 2733, CS 3341, and CS 3343. An introduction to implementation of translators. Topics include formal grammars, scanners, parsing techniques, syntax-directed translation, symbol table management, code generation, and code optimization. 

 

Course Objectives:
The best way to study programming languages is to study how they are processed by the compilers. This course is designed with a compiler project helping understand the process of a program execution in computer systems. The project is divided into 6 parts (Scanner, Syntax Analysis, Abstract Syntax Trees, Semantic Analyzer, Assembly Trees, and Code Generation) along with the lectures.

Understanding Programming Languages through Writing a Real Compiler

The compiler project requires not only writing a real compiler, but also writing test programs for a designated programming language. The target machine is a simple stack based computing engine which is provided with the source code. Programming language features such as variable scope, function parameter handling (call by reference or call by value), recursion, and storage management will be studied.

Improving Large Scale Software Development Techniques

The project requires some Java and JavaCC programming techniques and the Debugging tools for large scale software developments. However, with only one semester, this course is not designed to turn you into a professional compiler writer. Instead students can be better programmers by building a real compiler starting from the scratch. Total lines of code may be more than 2500.

Grading:

The project (a single project): 50%
Midterm: 15%
Final exam: 25%
Quizzes (Attendance): 10%

Each part of the project is due at the start of class on the due date. No make-up exams will be given except for university-sanctioned absences. Late work will receive penalty based on the formula, penalty = (number of days late)3. The student is expected to attend all class.

Points to grade ratio

A: 90 – 100

B: 70 – 89

C: 60 – 69

D: 40 – 59

F: 0 – 39

Textbook:

"Modern Compiler Design" by David Galles, Scott/Jones Inc., Publishers, 2005. (required)  

“Compilers: Principles, Techniques, and Tools” by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, 1986. (optional)

Scholastic Dishonesty:

From Chapter 3 General Academic Regulations of the UTSA Graduate Catalog (http://www.utsa.edu/gcat/chapter3/honesty.cfm): Academic or scholastic dishonesty includes, but is not limited to, cheating, plagiarism, collusion, the submission for credit of any work or materials that are attributable in whole or in part to another person, taking an examination for another person, any act designed to give unfair advantage to a student or the attempt to commit such acts. Academic dishonesty is a violation of the Student Code of Conduct.

Students, however, can discuss assignments without sharing detailed algorithms and program code. Students are encouraged to help each other debug programs but are not allowed to put someone’s code as a quick fix. Submission of a copy of someone’s code or a copy with some extensive modifications, is considered as plagiarism. Making available someone’s work is unacceptable.

No Team Programming:

The project is designed for a single student not a group. There are 6 parts of the project.
Each part is tightly connected to another. Students should submit the best effort for partial credit and may modify the code later.

The official class web page is:

http://www.cs.utsa.edu/~danlo/teaching/cs4713.htm.
Class information will be posted on that page. 
Students bear the responsibility for reading the web page.

Machines Accounts:

You have an account created for Linux machines. Please check your user ID at http://www-cslan.cs.utsa.edu/fallusers.htm.