Automated Bug Finding

What You'll Learn

This course studies the nature of software bugs and security vulnerabilities arising in complex application domains and surveys specialized program analysis and automated testing techniques for identifying such issues proactively. The course will delve into various domains such as mobile systems, databases, web browsers, distributed and networked systems, autonomous vehicles, and smart contracts. For each domain, the class will discuss state-of-the-art research techniques that aim to uncover a special class of software bugs automatically. Apart from the literature review, students will engage significantly with software system design + engineering via a capstone project, which will involve working with real-world applications and analysis tools for one or more domains.


Course Topics

Techniques for finding software bugs
  • Static analysis
  • Fuzzing
  • Symbolic execution
  • Formal methods
Program analysis techniques for various domains
  • Database systems
  • Operating systems
  • Mobile applications
  • Web applications
  • Compilers
  • Web browsers
  • Distributed systems
  • Network protocols
  • Machine learning
  • Cyber-physical systems
  • Smart contracts