SemesterSpring Semester, 2025
DepartmentJunior Class A, Department of Management Information Systems Junior Class B, Department of Management Information Systems Senior Class A, Department of Management Information Systems Senior Class B, Department of Management Information Systems
Course NameSoftware Analysis and Testing
InstructorHONG CHIH-DUO
Credit3.0
Course TypeElective
PrerequisiteData Structure、Data Structures
Course Objective
Course Description
Course Schedule

 









































































































週次



Week



課程內容與指定閱讀



Content and Reading Assignment



學習投入時間



Student workload expectation



課堂講授



In-class Hours



課程前後



Outside-of-class Hours



1



Program Representations: ASTs, control-flow graphs, stack machines



3



6



2



Program Semantics: operational semantics



3



6



3



3



6



4



Dataflow Analysis: theoretical framework, sample analyses, soundness and correctness, termination and complexity



3



6



5



3



6



6



3



6



7




Constraint Programming: Satisfiability Modulo Theories, problem-solving skills with solvers




3



6



8



3



6



9



Midterm Exam



3



6



10



Floyd-Hoare Proof System: axiomatic semantics, strongest postconditions and weakest preconditions, proving properties of programs



3



6



11



3



6



12



3



6



13




Coverage Analysis: white-box and grey-box testing,  fuzzing, symbolic and concolic execution




3



6



14



3



6



15



3



6



16



Final Project Demo



3



6



Teaching Methods
Teaching Assistant

TBD


Requirement/Grading

Assessments




Participation                          10%



Exercises & assignments      40%



Midterm exam                       20%



Final project                           30%



Total:                                      100%



 



Class participation and readings play a key role, as lectures and readings are the primary means of conveying course material, which is then reinforced through in-class activities. Most class sessions will include an exercise designed to help students apply the concepts covered. Participation is earned by completing these exercises, regardless of the correctness of the responses.



Assignments are designed to help students develop theoretical understanding and practical skills in program analysis. They are divided into two categories:





  1. Theoretical Assignments: These assignments involve formal definitions and proofs to deepen your understanding of the analysis theory. They will be graded based on the accuracy and presentation of your definitions and proofs.




  2. Programming Assignments: These focus on building program analyses systematically through hands-on coding exercises. Your work will be evaluated based on the correctness and clarity of your implementation.





The final project involves implementing a simple program analyzer. The expected deliverables include coding, documentation, a presentation, and a demonstration.



Textbook & Reference

 



1. Program Analysis. Jonathan Aldrich, Claire Le Goues, and Rohan Padhye, 2022. (pdf)



2. Static Program Analysis. Anders Møller and Michael I. Schwartzbach, 2024. (pdf)



3. Symbolic Execution and Quantitative Reasoning. Corina Pasareanu, 2020. (pdf)



Urls about Course
Attachment