SemesterFall 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



(9/5)  Program Representations: AST, IR, CFG, stack machines



 



3



6



2



(9/12 - 9/19)  Dataflow Analysis: theoretical framework, sample analyses, soundness and correctness, termination and complexity



 



3



6



3



3



6



4



(9/26 - 10/3)  Constraint Programming: Satisfiability Modulo Theories, SAT and SMT encoding, Z3



 



(10/10)  Holiday



 



3



6



5



3



6



6



3



6



7



(10/17)   Midterm Exam (Exam date may change according to course progress)



 





 (10/24 - 31)  Coverage Analysis: fuzzing and symbolic execution



3



6



8



3



6



9



 



3



6



10



(11/7 - 11/21)  Deductive Verification: axiomatic semantics, weakest preconditions, Floyd-Hoare proofs



3



6



11



3



6



12



3



6



13



(11/28)   Final Exam  (Exam date may change according to course progress)



 



(12/5 - 12/12)  Topics on AI4SE: Enhancing program analysis and testing using NNs and LLMs



 



3



6



14



3



6



15



3



6



16



(12/19)  Final Project Demo



3



6



Teaching Methods
Teaching Assistant

TBD


Requirement/Grading

Assessments




Participation                10%



Homework                   10%



Midterm exam              30%



Final exam                    30%



Final project                  20%



 



Class participation plays a key role, as lectures are the primary means of conveying course material, which is then reinforced through in-class activities. Participation points are earned by completing these exercises in person.



The assignments are designed to help students develop theoretical understanding and practical skills in program analysis.



The exams mainly consist of variations of in-class and homework exercises that evaluate your understanding of the material.



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



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