CSC 255/455 Software Analysis and Improvement (Spring 2017)
- Course description
- Schedule (created January 4)
- Instructor and grading
- Textbooks and other reading material
Lecture slides, reading, later assignments, and other material will be distributed through Blackboard.
- See Blackboard
With the increasing diversity and complexity of computers and their applications, the development of efficient, reliable software has become increasingly dependent on automatic support from compilers & other program analysis and translation tools. This course covers principal topics in understanding and transforming programs by the compiler and at run time. Specific techniques include data flow and dependence theories and analyses; type checking and program correctness, security, and verification; memory and cache management; static and dynamic program transformation; and performance analysis and modeling.
Course projects include the design and implementation of program analysis and improvement tools. Meets jointly with CSC 255, an undergraduate-level course whose requirement includes a subset of topics and a simpler version of the project.
Teaching staff: Chen Ding, Prof., Wegmans Hall Rm 3407, x51373; Fangzhou Liu, Grad TA; Zhizhou Zhang, Undergrad TA.
Lectures: Mondays and Wednesdays, 10:25am-11:40am, Hylan 202
Office hours: Ding, Fridays 11am to noon (and Mondays for any 15 minute period between 3:30pm and 5:30pm if pre-arranged).
TA Office hours: Zhizhou, Mondays 2 to 3pm, open area outside the elevator, third floor Wegmans Hall. Jerry, Tuesdays 3 to 4pm, 3407 Wegmans Hall.
Grading (total 100%)
- midterm and final exams are 15% and 20% respectively
- the projects total to 40% (LVN 5%, LLVM trivial 5%, loop+index 10%, dep 10%, par 10%)
- written assignments are 25% (trivial 1%; 4 assignments 6% each)
Optimizing Compilers for Modern Architectures (UR access through books24x7), Randy Allen and Ken Kennedy, Morgan Kaufmann Publishers, 2001. Chapters 1, 2, 3, 7, 8, 9, 10, 11. lecture notes from Ken Kennedy. On-line Errata
Engineering a Compiler, (2nd edition preferred, 1st okay), Keith D. Cooper and Linda Torczon, Morgan Kaufmann Publishers. Chapters 1, 8, 9, 10, 12 and 13 (both editions). lecture notes and additional reading from Keith Cooper. On-line Errata
Compilers: Principles, Techniques, and Tools (2nd edition), Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, Pearson.
Static Single Assignment Book, Rastello et al. (in progress)
Introduction to Lattices and Order, Davey and Priestley, Cambridge University Press.