Course                 CSC 436 Compiler Design

Description          A compiler is a program that takes a source program in one language and translates it into a target language.  This is an introductory course to the theory, design and implementation of compilers.  A typical compiler development includes programming languages, machine architecture, language theory and algorithm and software engineering.
We will cover the following compiler topics, including lexical analysis, Syntax Analysis, Syntax-Directed Translation, Semantic Analysis, Code Generation, and Code optimization techniques. Compiler Generation tools and XML parsers and tools may be covered as time permits.

Prerequisites     CSC 310 and CSC 330

Time & Room     T-Th 4:00pm-5:50pm, Nethken 243

Course URL

Instructor          Dr. Chokchai (Box) Leangsuksun

Office                Nethken 237

Office Hours        M-W-F 8am-10:00am. T-Th 2:00pm-4:00pm or by an appointment

Phone                   257-3291


.NET passport  (IM, VOIP SIP phone)

Grader               Sonal Dekhan,

Texts                 Compilers: Principles, Techniques, and Tools,

 by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman

 Publisher: Addison-Wesley Pub Co; ISBN: 0201100886; (January 1986).

 In addition to materials from the above main textbook, Ill provide more references (URL or some   books) when we discuss on some particular topics in the programming projects..

Grading Policy     3-4 Programming Projects      40%    

                          3-4 Homework assignments    10%

                          Midterm Examination              20%     Tuesday, January 21

                          Final Examination (comp.)       25%     Thursday, February  27

                          Class Participation                    5%

                          Term Paper (Grad student)       5% (Grad student grading scale is 105/100)

Programming        There will be three programming projects and objective. I will explain

Projects                  more detail for each project and my expectation. Additional references will be provided in the   class.


Class Materials

Date Topics
12/5/2002 Class syllabus and Introduction to Complier design. Ant XML build tool and sample configuration
12/10/2002 chapter 2 one pass compiler
12/12/2002 chapter 2 one pass compiler & Java StreamTokenizer example
12/17/2002 chapter 3 Lexical Analysis & project 1 Tokenizer in Java
12/19/2002 JLex and JLex library jar file & Class presentation (originally from wisc u)
1/7/2003 Chapter 4 Syntax analysis and ant build sample file & directory structure
1/9/2003 Chapter  4 Syntax analysis (top-down parsing) and Homework 1
1/14/2003 Chapter 4 Syntax analysis (Bottom-up), java based Constructor for Useful Parsers, minimal guide how to run and javacup.jar
1/16/2003 Midterm Review
1/21/2003 Midterm Exam
1/23/2003 Exam solutions & Chapter 4 Syntax analysis
1/28/2003 Chapter 5 Syntax Directed Translation
1/30/2003 Chapter 5 Syntax Directed Translation
2/4/2003 Chapter 6 Type Checking
2/6/2003 Chapter 6 Type Checking & Chapter 7 Runtime Environments
2/11/2003 Chapter 7 Runtime Environments and Chapter 8 Intermediate Code Gen
2/13/2003 Chapter 8 Intermediate Code Gen, XML parser with DOM (Krithi's presentation and samples)
2/18/2003 XML with SAX (Cliff's Sax presentation and examples)  and Pull parser. Project No.3 Code gen using XML
2/20/2003 XSL tutorial 1 and 2. Here is XALAN zip file with my sample files (i.e. proj3.xml, p1,p2,p3.xsl  in samples/SimpleTransForm. Make sure to include xlan.jar and xml-apis.jar in your classpath. They can be found in xlan/bin directory.

Sample test files from Brandon

2/25/2003 code optimization, final review and class evaluation
2/27/2003 Final Exam