ECE 653 - Winter 2015

ECE 653 / ECE 453 / SE 465 / CS 447 / CS 647 - Software Testing, Quality Assurance, and Maintenance


Professor Lin Tan,, DC 2536

Office Hours: Before or after lectures or by appointment.

See LEARN for assignment/lab/project submissions and password protected content and the course website.

Lab instructor

Bernie Roehl, Office: E2 2358, Email:


(SE465): To be determined
(ECE453/CS447/ECE653/CS647): To be determined


No required textbook. Lecture slides or notes will be provided.
Optional Textbook: Paul Ammann and Jeff Offutt. Introduction to Software Testing. Cambridge University Press, 2008.

Course Description and Main Topics

This course will provide an introduction to software testing, bug detection, and maintenance techniques. Various studies show that testing can account for over 50% of software development costs. Students in this course will learn techniques and tools that could significantly improve their testing (and development) skills. Topics to be covered include: Coverage (Graph Coverage, Logic Coverage, Input Space Partitioning, and Syntax-based Coverage), Subsumption and Infeasibility, Testing in Practice, State-of-the- art Testing and Bug Detection Techniques, Software Maintenance. Other topics such as Concurrency and Static Analysis are likely to be covered.

Recommended Background

Experience in writing reasonably-sized programs (e.g., 20KLOC) in C/C++ or Java. I plan to have some labs in C/C++ and some in Java.

Grading (Grades may be curved or adjusted at the instructor's discretion)

  • Final Exam: 50%
  • Midterm: 15% (They will be returned in class, during office hours, or through LEARN.)
  • Assignments/Labs: 20% (They will be returned in class, during office hours, or through LEARN.)
  • Project: 15% (They will be returned in class, during office hours, or through LEARN.)

You must pass the final exam to pass the course. You must pass the weighted average of midterm+final to pass the course.

Final grades will be computed as follows:
     Normal = 0.15*Project + 0.20*Assignments/Labs + 0.15*Midterm + 0.50*Final
     WeightedMF = (0.15*Midterm + 0.50*Final)/0.65
     IF (Final < 50)
        FinalGrade = min{Normal, Final}
     ELSE IF ( WeightedMF < 50)
        FinalGrade = min{Normal, WeightedMF}
        FinalGrade = Normal

If you miss the midterm and have the permission from the instruction (see the Policies below), your final grades will be computed as follows:

     Normal = 0.15*Project + 0.20*Assignments/Labs + 0.65*Final
     IF (Final < 50)
        FinalGrade = min{Normal, Final}
        FinalGrade = Normal


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. I will follow UW's Policy 71 if I discover any cases of plagiarism.
  • Lateness: You have 2 days of lateness to use on assignment/lab submissions throughout the term. Each day you hand in an assignment/lab late consumes one of the days of lateness. If you consume all of your late days, assignments/labs that are still late will get 0. You can only hand in an assignment/lab up to the time I return all of the assignments/labs. Missed assignments/labs get 0. 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 Midterm: If you miss the midterm, you will receive 0 for the midterm. If you have a legitimate reason (at the discretion of the instructor) that you cannot take the midterm, and obtain permission from the instructor a week in advance, the percentage for the midterm may be shifted to the final. No alternative midterm time will be provided.

Required inclusions

  • 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.
  • 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 department’s administrative assistant who will provide further assistance.
  • Discipline: A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (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 offences and types of penalties, students should refer to Policy 71, Student Discipline. 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.