School of Computing · ANU College of Systems and Society
This course introduces students to advanced topics on managing the quality of products delivered as part of a software development project and managing the development process itself through static and dynamic software analysis techniques. Several causal aspects of poor software quality will be introduced and discussed so that students can understand the context for undertaking risk management and avoiding bad quality. There will be a focus on practical techniques for identifying and removing defects, as well as implementing procedures to track the success or failure of risk and defect resolutions. Several automatic software quality analysis techniques, including static program analysis and fuzzing techniques, will also be covered. These techniques are useful for improving the reliability, security, and performance of software and are becoming increasingly impactful in industries today. The course will introduce various well-known static program analysis frameworks such as Soot and dynamic testing techniques like symbolic execution. Practical implementations will also be covered, including live variable analysis, constant propagation, dead code detection, call graph construction, pointer analysis, taint analysis, and symbolic execution.
Assignment
Learning outcomes 1, 2, 3
Assignment
Learning outcomes 4
Assignment
Learning outcomes 5, 6
Lectures, workshop sessions, and independent study to add up to 130 hours over the semester.
None. Preliminary Reading Static Program Analysis The fuzzing book Principles of program analysis