Software Defect Analysis
Instructors: Xiangyu Zhang
Office: LWSN 3154K
Meeting Place: SC G064
Meeting Times: MW 2:30-3:45pam
Office Hours: When the door is open
Schedule and Lecture Notes
Among all the engineering disciplines, computer software is probably today's
least reliable artifact that prevails in our life.
Software defects could be fatal, causing human injury or death.
The persistence of software defects inspires wave after wave of attacks.
Every year major corporations
and government invest tremendous amount of money to fix software bugs, but
the prospect of building reliable software remains grim.
Therefore, analyzing and fixing software defects is one of the most active
research areas today.
In this course students will have the opportunity of getting acquainted with
the state of the art of software defect analysis and designing their own
analysis. The experience in this course can easily benefit research in
many other fields that require analyzing programs.
More specifically, this course covers (draft):
- Program slicing, including static and dynamic slicing.
- Concurrent program debugging, focusing on data race detection and atomicity violation detection.
- Model checking.
- Test generation with the focus on concolic testing.
- Satisfiability based program analysis.
- Input analysis, including delta debugging and execution reduction.
- Failure indexing, namely clustering program failures reports based on the errors.
- Open to suggestions.
Relevant Conferences and Journals in
Software Engineering, Programming Languages and Compilers
& Operating Systems.
- FSE, ESEC-FSE - ACM SIGSOFT Symposium on Foundations of Software Engineering
- PLDI - ACM SIGPLAN Conference on Programming Language Design and Implementation.
- ASPLOS - International conference on Architectural Support for Programming Languages and operating Systems.
- ICSE - SIGSOFT/IEEE International Conference on Software Engineering.
- ASE - IEEE International Conference on Automated Software Engineering.
- ISSTA - ACM SIGSOFT International Symposium on Software Testing and Analysis.
- ICSM - IEEE International Conference on Software Maintenance.
- POPL - ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.
- AADEBUG - International Symposium on Automated and Analysis-Driven Debugging.
- TACAS - International Conference on Tools and Algorithms for Construction and
Analysis of Systems.
- TSE - IEEE Transactions on Software Engineering.
- JASE - Journal of Automated Software Engineering.
- TOSEM - ACM Transactions on Software Engineering and Methodology.
- TOPLAS - ACM Transactions on Programming Languages and Systems.
- TACO - ACM Transactions on Architecture and Code Optimization.
- MICRO - IEEE/ACM International Symposium on Microarchitecture.
- DSN - International Conference on Dependable Systems and Networks.
- OSDI - USENIX Symposium on Operating Systems Design and Implementation.
- SOSP - ACM Symposium on Operating Systems Principles.
- USENIX - USENIX Annual Technical Conference.
- Two paper presentations (40%).
- Project report (35%).
- Project presentation (15%).
- Attendance and class participation (10%).