ECE 653 - Winter 2018

ECE 653 - Software Testing, Quality Assurance and Maintenance

Instructor:

Professor Arie Gurfinkel

Email: arie.gurfinkel@uwaterloo.ca

Phone: 519-888-4567 x36616

Office: DC 2536

Lectures:

Mondays, Wednesdays, Fridays, 3:30pm – 4:20pm in E2 1303

Course Description & Main Topics:

This course will provide an introduction to software testing and quality assurance techniques. The students will learn a wide spectrum of techniques and tools that can be used to improve and evaluate software quality ranging from mature testing methodologies to cutting edge automated verification algorithms. Topics to be covered include: coverage criteria (graph, data-flow, and logic coverage), symbolic execution (static, dynamic, concolic), constraint solving (SMT), inductive invariants, automatic deductive verification, automatic invariant synthesis, and Software Model Checking.

Recommended Background:

The course will include programming assignments in Java/C/Python. Background in Compilers and Logic is useful, but is not required.

Grading:

Assignments

30%

Midterm

20%

Final Exam

50%