Syllabus Schedule My home page
If you want truly to understand something, try to change it.
- Kurt Lewin
This course is part of the minor in Software Engineering and the
BS in Applied Computing Science in Software Engineering.

Software Testing and Maintenance
SWE 437 Course Syllabus—Spring 2019

Professor: Jeff Offutt
Office: 4430 Engineering Building
Email: offutt +=+=+
Twitter: @jeffoffutt
Office hours: Wednesdays 3:30-5:00
or by appointment
Class hours: Tuesdays 10:30-11:45
Class location: Buchannan Hall D023
Prerequisites: CS 310 and Math 125
GTA: Suma Dixit
Office hours: Tuesdays 3pm-5pm
Location: EB 5321
UTA: Dasjah Berry


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.

  • Knowledge of quantitative, technical, and practical methods that software engineers and developers can use to test their software
  • Testing techniques and criteria for all phases of software development—unit (developer) testing, integration testing, system testing, etc.
  • Theoretical and practical knowledge of how to apply test criteria to improve the quality of software
  • Knowledge of modern challenges and procedures to update continuously evolving software
  • Understanding of best quantitative programming and design practices for ensuring software can be efficiently and effectively modified and tested
  • Understanding that maintainability and testability are more important than efficiency for almost all modern software projects

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 are 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.

We will generate tests from mathematical models of the software using structures from discrete math (sets, graphs, logic, and grammars). We will use examples from data structures and require tests to be implemented in JUnit.

Office hours are times that I commit to being in my office, door open, first-come, first-served. You do not need an appointment, and no appointments are made. If you cannot make my office hours, then we can set up an appointment. I will inform you in class or on the discussion board if I have to miss office hours.

I expect you to read the relevant material before the class meets. The lectures may not cover everything in the readings and will often include material not found in the readings. If you have not read the material before class, you will not learn as much in class. If you miss class, you will not learn important concepts that are not in the books.

We will have graded assignments for most topics. They will be posted on the class website, and any clarifications or hints will be posted on the discussion board. Some will require pencil and paper and others will require programming or use of tools available from the Web. You should submit assignments on paper and in class if possible. If you have to miss class, you may submit via email. No zip files please!
Timeliness: Assignments must be submitted at the beginning of class on the day they are due to be counted as on time. Late submissions will receive a 30% per week deduction. Per GMU policy, all assignments must be submitted before the beginning of final exams.

You may work on assignments individually if you wish. However, not only is collaboration how real software is built, but also the best way to learn. Therefore, collaborative assignments will receive a 5% bonus credit. If you work collaboratively, list every collaborator and include a short summary of what each person did (collaboration summary). You can submit one assignment with multiple names or work together to analyze the problem and develop the solution, then complete the assignment separately. You can collaborate in teams of up to three students but only other students in SWE 437 this semester. You may work with different partners with different assignments.
Note: You are NOT ALLOWED to include “guest names.” Every person listed as a collaborator must contribute. If someone is listed as a collaborator but did not contribute, all will be given a zero on the assignment and reported to the university honor committee.

Instead of midterm exams, we will have weekly quizzes. Quizzes will be given the first 10 or 15 minutes of class and will cover material from the previous class meeting and from the reading assigned for that day.
Re-take policy: students who miss or perform badly on a quiz can have one retake per quiz.
  • Scoring: The maximum score on a retake quiz is 80%.
  • Replace: If you take the retake, your new score will count and the first score is dropped.
  • Scheduling: Students who want to retake a quiz must schedule ahead of time.
  • Times & locations: To be announced on piazza.
  • Content: The retake quiz will be different from the one given in class, but will cover the same topics.
  • Timing: The retake quiz must be taken within two weeks of the original in-class quiz during one of the scheduled retake opportunities. All retakes must be completed before the end of the reading period.

I strongly believe that active exercises in the classroom enhance learning. Dr. Ammann has a good summary of why. Thus, we will have in-class exercises during most class meetings. Some will be done as a class, some will be done in small groups, and a few may be individual exercises. They count towards your participation grade and earn 1 point for a minimal effort or 2 points for a strong effort. They will be announced during class. Important: Credit can only be received if done in class, although if you miss class, you should do the posted in-class assignments on your own to prepare for the quizzes or final exam.

All students will be enrolled in the discussion forum for SWE 437 on piazza. You will receive an invitation via your Mason email. We will use the discussion board throughout the semester. Participation on piazza will count towards your participation grade. Ask all technical questions about the material or the assignments on piazza. You should post about software failures, errors in the books or a slides, or about topics that extend from our classroom discussion. Participation must occur during the semester, not after final exams start.

You are required to attend class. Somebody is paying around $50 for each class meeting—don’t waste it. More importantly, you will learn more if you are in the room. To help you understand, 15% of your grade is based on attendance and participation. You get points by (1) being there—1 point per day, (2) doing in-class exercises—1 or 2 points apiece, and (3) joining the conversation on piazza. Plan to earn about 90 points to get full participation credit. If you unavoidably have to miss a class, you should handle it as an adult professional handles missing a meeting at work—inform me of the reason via email.

Lectures in this class will be computer free. Computers, whether in the form of laptops, tablets, mobile phone, or pocket-computers, may not be used while I am lecturing. I have a detailed explanation why, but here is the short summary: Computers interfere with your classmate’s ability to concentrate on the educational material, my concentration, and your learning. Multitasking is a myth promulgated by inefficient people. Taking notes by hand is much more effective than typing notes on a computer. If you have to check your email or text messages, or take a phone call, please sit near the door so you can politely step out. I will ask you to close your computers, and if that doesn’t work, will ask you to leave the classroom. (Computers will be used extensively during in-class exercises, discussions, and examples.)

I occasionally send important announcements to your Mason email account, so you must read it regularly. Professors are required to use your Mason email, not a personal email accounts. Email sent to the professor or TA should have a subject that starts with “swe 437.” If not, we may not notice it. Questions about the technical material and class policies should be posted on the discussion board, not sent through email.

I always accept linkedin requests from current and former students—we clearly have a professional relationship. (Be sure to remind me when you took my class.) I tweet random thoughts irregularly about software engineering @jeffoffutt. Out of respect, I do not initiate facebook requests from students, but usually accept them.

As with all GMU courses, SWE 437 is governed by the GMU Honor Code. In this course, all quizzes and exams carry with them an implicit statement that it is the sole work of the author, unless joint work is explicitly authorized. When 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.

If you need academic accommodations, please see me and contact the Disability Resource Center (DRC) at 993-2474. All academic accommodations must be arranged through the DRC.

Writing Center: A114 Robinson Hall; (703) 993-1200;
University Libraries “Ask a Librarian”;
Counseling and Psychological Services (CAPS): (703) 993-2380;