CS 6704/5914 - Special Topics in Software Engineering

Software Testing and Debugging in Emerging Domains


Course Information

Instructor: Muhammad Ali Gulzar
Office: 4106 Gilbert Place (220 Gilbert Street)
Lecture : McBryde Hall 210, 11:00 AM - 12:15 PM TR
Office Hours: TBD
Optional Textbook: Introduction to Software Testing (2nd Edition) — Paul Ammann and Jeff Offutt


Course Description

The type of software we write today has dramatically changed in the last decade, from sequential Java applications to data-intensive applications integrated with ML/AI components. The prevalence of these emerging applications was mainly because of platforms such as Apache Spark, TensorFlow, and SparkML, which have almost removed the development and deployment barrier. However, frameworks once used by domain experts are now being leveraged by data scientists, business analysts, and researchers. This shift in user demographics calls for immediate advancements in developing, debugging, and testing practices for emerging applications.

This class will discuss several aspects of these emerging applications and the corresponding advances made by the software testing and debugging research community. We will start by building a foundation in classical and fundamental software program analysis, testing, and debugging, and then transition to learning methodologies for applying these techniques to emerging applications. Software engineering and program analysis is rapidly evolving; therefore, this course is designed around seminal research papers that introduced state-of-the-art tooling to the community. By the end of this course, students will be able to:

  • Understand the theory behind fundamental program analysis
  • Apply and build static and dynamic analysis tools
  • Use classical and advanced testing and debugging methods
  • Match testing and debugging techniques to specific software contexts
  • Understand emerging application domains and their unique analysis needs
  • Be familiar with current research in the above areas


Course Prerequisites

This course requires familiarity with core computer science concepts, including programming languages, data structures, algorithms, operating systems, and undergraduate-level software engineering. Students are expected to have completed:

  • Programming Languages: CS 3304, CS 3314, or CS 4303
  • Software Engineering: CS 3704, CS 3724, or CS 4704

Students should be able to review and critically analyze research papers, complete in-class presentations and demos, and work on a semester-long project. Late submissions will not be accepted, and missed presentations/demos will receive a zero.


Course Schedule

Date Topic Description Reading
Aug 26Introduction + Testing BasicsTerminology and Program Analysis
Aug 28Testing FundamentalsTest Adequacy, Coverage, Efficacy
Sept 2Traditional TestingUnit Test GenerationPacheco et al
Sept 4Automated TestingSymbolic ExecutionJavaPath Finder
Sept 9Automated TestingMutation-based TestingFairFuzz
Sept 11Automated TestingGrammar-based FuzzingZest
Sept 16New Testing TechsMetamorphicSegura et al
Sept 18New Testing TechsDifferentialYang et al
Sept 23Test EvolutionRegressionRothermal et al
Sept 25Testing in Emerging DomainsBig DataBigTest
Sept 30Testing in Emerging DomainsDatabase TestingCERT
Oct 2Testing in Emerging DomainsML/AIDeepXplore
Oct 7Testing in Emerging DomainsLLM-Based TestingFuzz4All
Oct 9Midterm Exam
Oct 14Traditional DebuggingDelta DebuggingDelta Debugging
Oct 16Traditional DebuggingSpectra-based Fault LocalizationTarantula
Oct 21Traditional DebuggingProgram SlicingHead et al
Oct 23Traditional DebuggingTracingPenumbra
Oct 28Interactive DebuggingWhylineKo et al
Oct 30Interactive DebuggingFeedback DebuggingLin et al
Nov 4Automated DebuggingAdvanced DDHDD
Nov 6Automated DebuggingSlicing/Tracing/TaintingCarbin et al
Nov 11Automated DebuggingDebugging via MLDeepFL
Nov 13Debugging in Emerging DomainsDataTitian
Nov 18Debugging in Emerging DomainsBigDataBigSift
Nov 20Debugging in Emerging DomainsLLM-Based Fault LocalizationFixAgent
Nov 25Thanksgiving Break
Nov 27Thanksgiving Break
Dec 2Debugging in Emerging DomainsAILamp
Dec 4Project Presentations
Dec 9Project Presentations


Grading Policy

Course Project
Midterm Exam
In-class Presentation
Tool Demo
Quizzes


  • 50% — Course Project: Semester-long with a full conference-style paper report.
  • 15% — Midterm Exam.
  • 15% — In-class Presentation.
  • 15% — Tool Demo.
  • 05% — Quizzes.

This is a project-intensive course. The final project grade will be assessed according to standard reviewing practices in tier-1 SE workshops, e.g., MSR, ICPC, and CAIN.


Academic Integrity

The Virginia Tech Honor Code applies to all graded work. For more information: honorsystem.vt.edu


Mental Health and Accommodations

Virginia Tech welcomes students with disabilities and supports mental health and well-being. Contact the Services for Students with Disabilities (SSD) at 540-231-3788 or ssd@vt.edu.
For well-being resources, visit: well-being.vt.edu