Syllabus for SSE 662

Design, Maintenance and Quality

Very early draft; expect changes.

Fall Semester 2019

100% Online

August 20 - December 10, 2019



Other Resources

One reference for Test-Driven Development (TDD) is the Wikipedia. Additional references and external links are included with this web page.

You will need a suitable computer. The University's Computer Recommendations are appropriate for this course for Windows and OS X. If you use the Linux operating system this course, the recommendations for Windows computers will also be suitable for Linux.

Please see the Online Learning page for more information regarding expected student student access to the internet, and corresponding software.

Please see the Mercer's Distance Learning page for more information regarding expected student student access to the internet, and corresponding software.

Course Description

Evaluation of design quality and the impact of design quality on software maintenance and incremental development. Improvement of design quality in existing code. Advanced topics in object-oriented design, including the reuse of successful designs via design patterns.

This Online Learning course begins on August 20, 2019 at 12:00 am Eastern time. All assignments are due by the end (11:59:00 pm) of the specified calendar day in the Eastern time zone. This course ends at 11:59:00 pm on December 10, 2019, in the Eastern time zone.

Back to Top

Course Objectives

Breadth and Depth in Defining, Analyzing, and Solving Complex Problems:

Communicate Technical Aspects of the Solution for Complex Software Engineering Problems to a Technical Audience:

Back to Top


SSE 550 Object-Oriented Design I

This prerequisite provides one graduate-level 3 semester hour course in C++ or Java or C#.

Please see the Online Learning page for more information regarding expected student abilities and aptitudes.

Back to Top

Class Location

Back to Top


Percent of Term Grade
Project 1
Project 2
Project 3
Project 4

Credit will be given only for original work.

The Office of the Provost's "Academic Integrity page includes a link to the Graduate Honor Code, which covers issues such as plagiarism. Please take a good, careful look at the Graduate Honor Code. Plagiarism is not acceptable in this, or any, course.

Project reports are to be submitted complete, not as incremental partial submissions.

More information about project grading is contained in the General Project Rubric .

  • If you have a question about any of this, please ask.
  • Back to Top


  • Some suggestions for doing a project are contained in the One Way to Do a Project page.
  • All team members must be registered for credit in this course. You may arrange the teamwork pretty much as you please , but each team member must primarily make substantive contributions to the code; review contributions are not enough. The team members may develop a single report, etc., or multiple deliverables, one per member. In this latter case, team members should perform substantive peer reviews of each others's work as that work progresses, to help their team mates to do better work. Persuasive evidence of these reviews should be included in the reports.
  • Project 1 (Team and Solo - please read on) TDD/Version Control
  • Project 2 (Team):
  • Find some code in your selected language (Java, C#, or C++) that you can refactor for this project. (Hint: the source code for Junit, Nunit, or CppUnit would not be an appropriate choice. Otherwise, open source software may be a good source of code to refactor.)
  • Develop and demonstrate your capabilities in the topics covered in Fowler.
  • Use an automated tool such as Junit or another to implement your test-first testing as part of refactoring.
  • Project 3 - (solo or team)
    1. Demonstrate the six design patterns (not including Singleton) covered in the assigned readings in "Head First Design Patterns".
    2. If you include a pattern that is partially or wholly included in a programming language (such as Observer or Iterator in Java), then do and present your own implementation of that pattern (those patterns); don't just apply what someone else has already programmed (such as Java's event handling capabilities for Observer).
    3. For each design pattern, explain in detail what your alternative design would be, and what problem with that design the use of this pattern solves (if it does).
    4. Explain in detail what is good about your Design Pattern (DP)-based design, and what is problematic about your DP-based design.
    5. Create implementations for your designs, and test them in such a way that you clearly demonstrate the success of your design.
    6. Presume that you are writing your report to convince a hiring manager with whom you will otherwise have no contact that you are competent in the topics covered in this assignment. Assume that this manager is an experienced and intelligent software developer, but has not read our text. Presume that this manager is skeptical, and that your report will have to be clearly convincing in supporting your claim that you are competent (in the topics covered in this assignment). Clarity, completeness, and correctness count, as does your coverage of design patterns. You probably can't cover all of the DPs in the text, so make a judicious selection from among them.
    7. As a check on how well you are doing with regard to convincing that hypothetical manager of your competence, try to reverse roles in your own mind. Imagine that you are the manager, and your success/raise/continued employment depend on you hiring someone who does this job well. How well does the report convince you that the person who wrote it really can "do patterns" well?
    8. If you create new designs for an existing piece of code, include this code in your report.
    9. If you create new designs for an existing piece of code, you may use any piece of code that you wish, subject to conformance to any legal requirements (e.g., don't release anyone's proprietary code), and the dictates of morality, ethics, and good taste.
    10. Manage the scope; don't try to do something too big or too small.
  • Project 4 - (solo or team):
  • Back to Top

    Additional Information

    Back to Top

    Changes to this Syllabus:

    There will be changes to this syllabus, so check back frequently, and don't forget to hit "Reload" or "Refresh".

    Schedule of Assignments and Events (tentative)

    Start Date
    End Date
    August 20, 2019 December 10, 2019 Course in Progress

    August 20, 2019 Login in to the course on Canvas.
    January 7, 2019 September 9, 2019 Work on Project 1

    September 9, 2019

    Project 1 due

    October 7, 2019

    Project 2 due

    November 18, 2019

    Project 3 due

    December 10, 2019

    Project 4 due

    Course ends

    Notes: The course begins at midnight (12:00 am) on the first day of class (see schedule above), and ends at 11:59:00 pm on the last day of class. Assignments are due at any time during the day specified on the schedule, that is, before 11:59:00 pm on that day. All times are Macon, Georgia (Eastern time zone) times.

    Back to Top

    Contact Information

    Back to Top