CS 502 Web Server
CS 502: Compiling and Programming Systems
Instructor :
Professor Zhiyuan Li
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com.
Find our class page through this link to Piazza .
Grades, however, are posted on Purdue's Blackboard Learn web site. This is to follow the university's student privacy protection guidelines.
The final exam will be comprehensive.
What Does This Course Cover?
The first part of the course will be an overview of the "front end" of the compiler and basic mechanism for code generation , including the following components:
- Lexical analysis
- Context free grammars and syntax analysis
- top-down parsing
- bottom-up parsing and semantic actions
- Abstract syntax tree, basic type checking, and symbol tables
- Memory allocation, call/return sequences, machine code, intermediate code
The second part of the course gives more in depth coverage of
the fundamental program analysis techniques
commonly used by compilers and software engineering tools, which include,
but not limited to,
the following:
- Control flow and control dependence
- Data flow and data dependence analysis
- Interprocedural analysis
- Pointer analysis
- How such analyses are applied to program transformations for better performance and to enhancement of software reliability
Compiler projects are focused on dataflow analyses.
Additional topics such as garbage collection and issues brought by object oriented programming languages may be covered towards the end of the semester.