CSE 304/504 Compiler Design
Spring 2018
Course Description (Syllabus)
Learning compilers will give in-depth knowledge about programming languages,
sophisticated techniques for handling text descriptions, and the theories behind them.
In this class, we will learn how compilers are designed and implemented.
Specifically, we will discuss how to write grammars, how to parse and translate them, and the theory behind them.
We will also implement a compiler that generates an x86 assembly code.
Through the implementation, we will learn how programming language elements are implemented,
how to setup the runtime environments, and an assembly language.
Instructor
YoungMin Kwon (youngmin.kwon at sunykorea dot ac dot kr)
Office: B420
Office hours: TBD
Class hours: TBD
Class room: B204
Text books and References
- Main textbook:"Compilers Principles, Techniques, and Tools", by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey Ullman 2nd ed, ISBN: 978-0321486813
- Optional reference book:"lex & yacc", by John R. Levine, Tony Mason, and Doug Brown.
Grading
- Midterm exam: 20%
- Final exam 30%
- Programming assignments: 45%
- Attendance: 5% (missing more than 20% of the class will fail the course)
Academic integrity: you can discuss your homework with others, but write your own code.
Major Topics Covered in the Course
- Lexical analysis
- Syntax analysis
- Semantic analisys
- Code generation
Course Learning Outcomes
- An ability to use of formal attributed grammars for specifying the syntax and semantics of programming languages.
- Working knowledge of the major phases of compilation, particularly lexical analysis, parsing, semantic analysis, and code generation.
- An ability to design and implement a significant portion of a compiler for a language chosen by the instructor.
Lecture Slides