Syllabus
Instructor
Frank Mueller |
mueller "at" cs.ncsu.edu |
Office Hours: M 9:30-10:30 |
3266 EB2 |
Assistants
Abhik Sarkar
|
|
asarkar "at" ncsu.edu |
|
Office Hours: TBA |
TBA |
Textbook:
Course prerequisites: CSC 451 or CSC 501 (Operating
Systems). Helpful: CSC 253 (C and C++ for Java Programmers), CSC 224 (Applied
Discrete Mathematics), CSC 234 (Computer Organization & Assembly Language),
and MA 121 (Calculus), CSC 512 (Compiler Construction), CSC 548
(Parallel Systems).
Course purpose: This class prepares you to understand
advanced research issues in code optimization for scalar and parallel programs.
You will be introduced to program analysis, scalar and parallel compilation
as well as various advanced topics. The material will cover numerous research
papers besides the textbook. Current research will be presented by students
and discussed to give a better understanding of open issues in parallel systems.
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.
- Scalar Optimizations. To understand the fundamental
principles in code optimization for uniprocessors; 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.
- Parallel Optimizations. To understand the fundamental
principles in optimizations for parallel architectures; to comprehend data
dependence problems, to design, implement and evaluate selected high-level
transformations, such as loop transformation, data transformations or a combination
of both, such as in tiling; to comprehend and assess the benefits of optimizations
on performance with respect to architectural components, such as caches;
to incorporate extensions to optimizations into existing compiler back-ends.
- Research Topics. To reiterate hot topics in
research on parallel computing; 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.