I. Introduction A. Who ------------------------------------------ Instructor: Gary T. Leavens HEC 329 Leavens@ucf.edu 407-823-4758 handouts: course policies and HW 0 ------------------------------------------ B. what is program analysis? What's the different between static and dynamic properties? ------------------------------------------ COP 5021 PROGRAM ANALYSIS WHAT IS PROGRAM ANALYSIS? Def: *program analysis* is ------------------------------------------ How does this differ from (human) code inspection? How is it different than testing? Runtime assertion checking? C. why study program analysis (course spec) ------------------------------------------ WHY PROGRAM ANALYSIS? Automatic understanding of programs is - important for: + optimizing compilers + program development tools + formal verification: - safety critical systems - business critical systems + computer security - finding vulnerabilities - assurance for critical systems + research in programming languages - impossible, in general + safe approximations e.g., read(x); (if x > 0 then y:= 1 else {y:= 2; f()}); z:=y -- can we say that z is 1 at the end? Basic ideas: - compute abstractions - use in transformations Goals: - little or no input from programmers - correctness - efficient (at compile time): - time - space ------------------------------------------ What's not a goal? 1. main ideas ------------------------------------------ MAIN IDEAS OR THEMES - conservatism: "Err on the safe side!" - efficiency from approximation: "Trade precision for efficiency!" ------------------------------------------ What does safety mean? What does it mean to be conservative when taking money for a trip? What's an example of the first idea from type checking? What's type safety? Suppose we're interested in numerical precision (error estimation), what's an example of the second idea in this case? ------------------------------------------ PRECISION AND RECALL def: the *precision* of an analysis is the fraction of def: the *recall* of an analysis is the fraction of Example: Suppose a program has 10 vulnerabilities and a tool identifies 8 places but only 6 of those are actual ones The precision is recall is ------------------------------------------ What is the goal for precision? For recall? Can we do that? Which is worse for analysis of security vulnerabilities: poor precision or poor recall? 2. practicality 3. widely used 4. other interest what about the material interests you? D. Plan of course (syllabus) Would you make any changes to the plan? E. Objectives 1. meta What kind of questions should you be asking? 2. normal ------------------------------------------ OBJECTIVES - [Ideas] Correctly understand and use terms for reading/writing papers when designing software tools - [ImproveTools] Effectively apply the concepts to design better software tools, programming languages and tools. ------------------------------------------ F. How I'll run the course 1. overview 2. red tape G. summary any other questions about the course? H. task ------------------------------------------ YOUR TASK READ THE BOOK! See the readings in the syllabus Goal: understand the material, so ask questions! ------------------------------------------