Instructor: Baishakhi Ray (Rice 505)
Class Schedule : Tuesday and Thursday 9:30 AM - 10:45 AM at Olsson Hall 011
Office Hours: Tuesday 11 am - 12 pm or by appointment
Teaching Assistant: Chong Tang (ctang at virginia dot edu)
TA Office Hours: Thursday 11 am - 12 pm at Rice 019
Writing robust, bug-free software is hard, if not impossible. Incorrect code leads to software bugs that often cost companies billions of dollars every year. In this course, we will learn how to ensure program correctness, using a diverse set of static and dynamic program analysis techniques. Some of the specific analysis techniques to be studied are program parsing, control and data dependency analysis, symbolic evaluation, constraints, invariants, program slicing, and code change analysis. As applications to these techniques, we will learn how to automatically detect bugs, and debug and fix the buggy programs.
You should be generally comfortable to deal with a complex large source code (> 1000 lines of code). The class would be especially relevant to the students who have already taken Programming Language class (CS 4610/4501, CS 6610).
Date | Topic | Lecture Slides/Reading | |
01.17.2018 | Introduction | intro.pptx | |
01.23.2018 | Parsing (Parse Tree, AST) |
ast.pptx | |
01.23.2018 | Home Work 1 (due on 4th February) | hw1.pdf | |
01.26.2018 | Control Flow Analsis | control_flow.pptx | |
02.01.2018 | Data Flow Analysis | data_flow.pptx | |
02.13.2018 | Program Slicing | slicing.pptx Additional Reading: Static-Slicing.pdf, Dynamic-Slicing.pdf | |
02.13.2018 | Home Work 2 (due on 25th February) | hw2 | |
02.15.2018 | Symbolic Execution | symbolic_execution.pptx, KLEE | |
02.13.2018 | Home Work 3 (due on 23rd March) | hw3 | |
03.13.2018 | Introduction to Testing | testing.pptx | |
03.15.2018 | Fuzzing | Fuzzing.pptx | |
Presentation Topics | |||
03.(20/22).2018 | Performance Bugs | 1.
Understanding and Detecting Real-World Performance Bugs
presenter: Downing, Jared |
|
2.
Characterizing and Detecting Performance Bugs for Smartphone Applications presenter: Maimon, Laura |
|||
3.
Toddler: Detecting Performance Problems via Similar
Memory-Access Patterns presenter: Roy, Joshua |
|||
03.27.2018 | Discussions on midterm | ||
03.29.2018 | Midterm | ||
04.03.2018 | No Class | ||
04.(05/10).2018 | Concurrency Bug | ||
04.(12/17).2018 | |||
04.(20/24).2018 | |||
04.26.2018 |
The learning from this class might be used for research purposes. For example, we might develop new technique to find new kind of security bugs. Inerestested students who are willing to pursue undergraduate research should make an appointment to talk about it. I am happy to discuss independent study projects, capstone projects, and graduate school.