CIS 547 Software Analysis

Short Description

This course provides a rigorous and hands-on introduction to the field of software analysis – a body of powerful techniques and tools for analyzing modern software, with applications to systematically uncover insidious bugs, prevent security vulnerabilities, automate testing and debugging, and improve our confidence that software will behave as intended.

Portfolio Building Course

No

Pre-Requisites

CIT 592, CIT 594, CIT 595. Specifically: Assignments involve programming in C++ using the LLVM compiler infrastructure. Lectures and exams presume basic knowledge of algorithms (e.g. graph traversal and asymptotic analysis) and basic background in logic (e.g. set theory and boolean algebra).

Content

This course provides a rigorous and hands-on introduction to the field of software analysis — a body of powerful techniques and tools for analyzing modern software, with applications to systematically uncover insidious bugs, prevent security vulnerabilities, automate testing and debugging, and improve our confidence that software will behave as intended. Topics covered include dynamic analysis, random testing, automated test generation, dataflow analysis, constraint solving, type inference, and symbolic execution. Lectures present software analysis concepts and algorithms in a language-independent manner, while weekly programming labs involve realizing them concretely in C++ using the LLVM compiler infrastructure. This course will enable you to become a better software engineer or security analyst by learning a rich repertoire of software analysis ideas and know-how to apply them to specific scenarios in practice.

Course Offerings
  • Fall 2021 Mayur Naik
  • Spring 2022 Not Offered
  • Summer 2022 Mayur Naik
Course Creators
  • Mayur Naik