Syllabus
Instructor
Frank Mueller |
mueller "at" cs.ncsu.edu |
Office Hours: M 9:30-10:30 |
3266 EB2 |
Textbook:
Course prerequisites: CSC 314 and CSC 333 or
equivalent. Helpful: CSC 253 (C and C++ for Java Programmers), CSC 224 (Applied
Discrete Mathematics), CSC 234 (Computer Organization & Assembly Language),
and MA 121 (Calculus).
Course purpose: This class prepares you to understand
the basics of compilers. You will be introduced to lexing, parsing, program
analysis, code generation and code optimizations. The material will
cover programming language / automata theory and data-flow analysis as
well as programming exercises on design and implementation of
various compiler passes. If time permits, current research
will be presented by students and discussed to give a better
understanding of open issues in compilers.
Course objectives: By the end of the course, you
should be able to do the following things:
- Program Analysis and Code Generation. To design
and implement program analysis algorithms, such as scanners, parsers, semantic
analyzers and code generators; to analyze control flow and data flow of programs;
to critique different implementation choices and analysis approaches; to
comprehend the limitations of static program analysis.
- Basic Code Optimizations. To understand the fundamental
principles in code optimization for microprocessors; to design, implement and
evaluate selected optimizations, such as peephole optimization, register
allocation, instruction scheduling, code motion etc.; to comprehend the challenges
in code optimizations; to incorporate extensions to optimizations into existing
compiler back-ends.
- Research Topics. To reiterate hot topics in
research on compilers; to judge the relevance and impact of novel
approaches on the field; to present recent results in a comprehensive manner;
to identify open problems; to prototype solutions to selected hot topics
and open problems; to demonstrate the benefits of such implementations by
methodological evaluations.