SemesterSpring Semester, 2025
DepartmentMaster Program in Information Security, First Year Master Program in Information Security, Second Year
Course NameSoftware Analysis and Testing
InstructorHONG CHIH-DUO
Credit3.0
Course TypeSelectively
Prerequisite
Course Objective
Course Description
Course Schedule

 









































































































週次



Week



課程內容與指定閱讀



Content and Reading Assignment



學習投入時間



Student workload expectation



課堂講授



In-class Hours



課程前後



Outside-of-class Hours



1



(2/21) Program Representations: AST, IR, CFG, stack machines



3



6



2



(2/28)   Holiday



(3/7)   Program Semantics: operational semantics



3



6



3



3



6



4



(3/14 - 3/28)  Dataflow Analysis: theoretical framework, sample analyses, soundness and correctness, termination and complexity



3



6



5



3



6



6



3



6



7




(4/4)   Holiday



(4/11-4/25) Constraint Programming: Satisfiability Modulo Theories, SAT and SMT encoding, problem solving with Z3




3



6



8



3



6



9



(5/2) Midterm Exam



3



6



10



(5/9 - 5/23) Floyd-Hoare Proof System: axiomatic semantics, strongest postconditions and weakest preconditions, deductive verification



3



6



11



3



6



12



3



6



13




(5/30)   Holiday



(6/6 - 6/13) Coverage Analysis: white-box and grey-box testing,  fuzzing, symbolic and concolic execution




3



6



14



3



6



15



3



6



16



(6/20) 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