Academics
  /  
Courses
  /  
Descriptions
COMP_SCI 323: Code Analysis and Transformation

Quarter Offered

Spring : 5-6:20 TuTh ; Campanoni
Fall : 5-6:20 TuTh ; Campanoni

Prerequisites

COMP_SCI 213: Introduction to Computer Systems, CS 214: Data Structures and Data Management (or equivalent)

Description

Fast, highly sophisticated code analysis and code transformation tools are essential for modern software development. Before releasing its mobile apps, Facebook submits them to a tool called Infer that finds bugs by static analysis, i.e., without even having to run the code, and guides developers in fixing them. Google Chrome and Mozilla Firefox analyze and optimize JavaScript code to make browsers acceptably responsive. Performance-critical systems and application software would be impossible to build and evolve without compilers that derive highly optimized machine code from high-level source code that humans can understand and reason about efficiently. Understanding what modern code analysis and transformation techniques can and can't do is a prerequisite for research on both software engineering and computer architecture, since hardware relies on software to realize its potential. In this class, you will learn the fundamentals of code analysis and transformation, and you will apply them by extending LLVM, a compiler framework now in production use by Apple, Adobe, Intel and other industrial and academic enterprises.  CS 323 Syllabus.

COURSE COORDINATOR: Prof. Simone Campanoni

COURSE INSTRUCTOR: Prof. Simone Campanoni