Important Websites


2:30-3:50PM Monday, Friday, E7-5353


By announcement only 5:30 - 6:20PM Friday, E7-5353

Office Hours

4:00-5:00PM Wednesday, EIT-3104 on WebEx


Prof. Arie Gurfinkel, Office: DC 2522, first . last AT, Office Hours: by appointment on WebEx

Teaching Assistants

Hari Govind VK


No required textbook. Lecture slides, lecture notes, and reading material will be provided.

Course Description and 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.

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


Grades may be curved or adjusted at instructor’s discretion.

  • Assignments: 30%
  • Quizzes: 20%
  • Final Exam: 50%
  • Assignments: 60%
  • Quiz: 15%
  • Final: 25%

All assignments and quizzes will be returned in class, during office hours, or through LEARN.

You must pass a final assessment to pass the course. The final grade will be computed as follows:

def scheme1(assignments, quiz):
    normal = assignments * 0.6 + quiz * 0.4
    if quiz < 50:
        return min(normal, quiz)
        return normal

def scheme2(assignments, quiz, final):
    normal = assignments * 0.6 + quiz * 0.15 + final * 0.25
    if final < 50:
        return min(normal, final)
    return normal

def grade(assignments, quiz, final):
    s1 = scheme1(assignments, quiz)
    s2 = scheme2(assignments, quiz, final)
    return max(s1, s2)

If you missed the quizzes (and had permissions from the instructor according to the Course Policy), the final grade will be computed as follows:

def scheme1(assignments):
    normal = assignments * 0.6 + quiz * 0.4
    return 0.85 * normal

def scheme2(assignments, final):
    normal = assignments * 0.75 + final * 0.25
    if final < 50:
        return min(normal, final)
    return normal

def grade(assignments, quiz, final):
    s1 = scheme1(assignments, quiz)
    s2 = scheme2(assignments, quiz, final)
    return max(s1, s2)

Final Assessment

There will be a final assessment to replace the final exam. The assessment will take a form of an not-timed take-home online assignment. The assessment will be released on April 12th, 2020. You will have up to 10 days to complete it. I will design the assessment with the expectation that you can complete it from the beginning to the end in 2.5 hours. However, you will have 10 days to account for the difficulties that you might have in obtaining it, interacting with the online system, and submitting your answers.

The assessment will be broken into an electronic form as a LEARN quiz (multiple choice, yes/no, and short answer questions that should be answered on a computer), and a pen and paper questions that will be distributed electronically but have to be answered on paper. You will upload your electronic answers to a Dropbox on LEARN. To convert your answers into electronic form you can scan or photograph, or complete them electronically using a tablet (for example).

In the event that you do not have reliable internet access during the 10 days starting from April 12th, you must contact the instructor. The instructor will email you a PDF version of the exam that can be completed offline.

Randomized questions will be used to limit potential cheating. We will rely on your integrity to conduct maintain academic integrity during the final assessment.

Course Policies

By registering for this class, students agree to the following class policies:

Independent work. All work turned in will be that of the individual student unless stated otherwise. Violations would result in zero credit to all students concerned. Policy 71 will be followed for any discovered cases of plagiarism.

Lateness. You have 2 days of lateness to use on assignment submissions throughout the term. Each day you hand in an assignment late consumes one of the days of lateness. If you consume all of your late days, assignments that are still late will get 0 marks. You can only hand in an assignment up to the time all assignments are returned. Missed assignments get 0 marks. For example, you may hand in A1 two days late and A2 on time, or you can hand in A1 one day late and A2 one day late.

Missed Quizzes. If you miss a quiz, you will receive 0 marks for the quiz. If you have a legitimate reason (at the discretion of the instructor) that you cannot take quiz, and obtain permission from the instructor a week in advance, the percentage for the quiz may be shifted to the final. No alternative quiz time will be provided.

University Policies

Academic Integrity. In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check for more information.]

Grievance. A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4, When in doubt please be certain to contact the departments administrative assistant who will provide further assistance.

Discipline. A student is expected to know what constitutes academic integrity [check] to avoid committing an academic offense, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offense, or who needs help in learning how to avoid offenses (e.g., plagiarism, cheating) or about rules for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offenses and types of penalties, students should refer to Policy 71, Student Discipline, http::// For typical penalties check Guidelines for the Assessment of Penalties,

Appeals. A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals)

Note for Students with Disabilities. The AccessAbility Services, located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the AccessAbility Services at the beginning of each academic term.