Syllabus Schedule
If you want truly to understand something, try to change it.
- Kurt Lewin

SWE 437: Software Testing and Maintenance
Course Syllabus

This syllabus is from a senior-level course at George Mason University. SWE 437 is an elective in the Software Engineering minor that covers both testing as well as maintenance. It is taken by students in the Computer Science, Electrical and Computer Engineering, Systems Engineering, and other engineering ans science majors. The schedule given here is based on a class that met one day per week for 2.5 hours in the early evening.

Professor: Jeff Offutt
Office: S&T II 355, 993-1654, fax: 993-1638
Email: offutt ++++
Class Hours: Monday 4:30 - 7:10
Prerequisite: CS 211 and Math 125
Office Hours: anytime electronically, Tue 2:30-4:00, or by appointment
TA: Upsorn Praphamontripong, uprapham +++
Office Hours: Th 1:30-4:30 pm, S&T II room 335

•  Introduction to Software Testing, Ammann and Offutt, Cambridge University Press, 2008
   Book website
•  Readings from various texts: Pfleeger, Software Engineering, chapter 11; Hohpe and Woolf, Patterns and Best Practices for Enterprise Integration, Introduction and chapter 1; Cohn, Agile Estimating and Planning, chapters 1-3.

Concepts and techniques for testing and modifying software in evolving environments. Topics include software testing at the unit, module, subsystem, and system levels; developer testing; automatic and manual techniques for generating test data; testing concurrent and distributed software; designing and implementing software to increase maintainability and reuse; evaluating software for change; and validating software changes.

This course has two closely related themes. First, more than half the effort in software development is devoted to activities related to testing, including test design, execution and evaluation. This course will teach quantitative, technical, practical methods that software engineers and developers can use to test their software, both during and at the end of development. Second, more than half of software development effort is not new development, but maintenance activities such as adding new features, correcting problems, migrating to new platforms, and integrating third-party components into new projects. These two themes are intertwined because much of the effort during maintenance is testing the changes, and much of the effort in testing is about evaluating changes.

This course covers these two themes quantitatively, with a solid basis in theory and with practical applications. These topics will be useful to strong programmers in the Computer Science program, as well as engineers, physical scientists, and mathematicians who regularly integrate software components as part of their work. The topic of this course is of interest to and accessible to students in a wide variety of specializations.

We will read from the text, various sources on the web, and transparencies that will be made available on the web site. You will undersetand the lectures much better if you read the text before the lecture. The schedule for the readings are given on the schedule web page.

Unless arrangements are worked out in advance, missed assignments cannot be made up, and 10% per week will be deducted for late submissions. I understand that your job may occasionally take you out of town; so does mine. If you are going to be forced to miss class on the day something is due, let me know ahead of time by email or in writing.

Several homework assignments will be assigned. I will make the assignment available on the class web site and discuss each in class. Most homeworks will be submitted on paper in class. Be sure that you receive email through your account, as refinements and hints for the assignments will be sent through email. Homeworks must be submitted before class on the day they are due. Late submissions will be assessed a 10% penalty per class meeting. All assignments must be submitted before final exams start and will not be graded thereafter.

Phone calls, text messages, instant messages, email, and general web surfing are not allowed during class time. Computers may only be used to follow the material in class. Violators will have their devices confiscated or asked to leave the room.

As with all GMU courses, SWE 437 is governed by the GMU Honor Code. In this course, all assignments, exams, and project submissions carry with them an implicit statement that it is the sole work of the author, unless joint work is explicitly authorized. Help may be obtained from the instructor or other students to understand the description of the problem and any technology, but the solution, particularly the design portion, must be the student's own work. If joint work is authorized, all contributing students must be listed on the submission. Any deviation from this is considered an Honor Code violation, and as a minimum, will result in failure of the submission and as a maximum, failure of the class.