Syllabus
This is a single, concatenated file, suitable for printing or saving as a PDF for offline viewing. Please note that
some animations or images may not work.
Description
This module is also available as a concatenated page, suitable for printing or saving as a PDF for offline viewing.
MET CS 665
Software Design and Patterns
This course is an introduction to software design and patterns. You will learn about general software
development principles and software design patterns. A design pattern is a general reusable solution to a
commonly occurring problem within a given context in software design. Patterns are formalized best practices
that the programmers should implement in the applications. This course covers the most common object-oriented
software design patterns. For each pattern, it will discuss the underlying object-oriented design principle it is
based on; the specific object-oriented design problem it solves; the context it can be applied and the
consequences of applying it; how the different components of the pattern collaborate with each other.
Course Prerequisites: Student should have a solid background in object-oriented programming. The following
classes are required/recommended:
MET CS 341 or MET CS 342 (Data Structures with C++ or Java) is required for understanding the
contents of this course.
MET CS 520 or MET CS 521
MET CS 526 (Data Structures and Algorithms) or MET CS 622 Advanced Programming Techniques
The course emphasizes the object-oriented design pattern concepts independent of programming language. All
examples in class use Java, C++, and Python programs. Students need to knowJava programming language to
implement the homework or project assignments.
Technical Notes
The table of contents expands and contracts (+/- sign) and may conceal some pages. To avoid missing content
pages, you are advised to use the next/previous page icons in the top right corner of the learning modules.
This course requires you to access files such as word documents, PDFs, and/or media files. These files may open
in your browser or be downloaded as files, depending on the settings of your browser.
Learning Objectives
By successfully completing this course, you will be able to:
1. Identify and retain the goals of software design
2. Apply the principle design patterns in software design projects
3. Implement procedures reliably and flexibly
4. Perform object-oriented analysis and design
Materials
Recommended Books
Eric, J. Braude. (2003). Software Design: From Programming to Architecture.
Publisher: Wiley
ISBN-13: 978-0471204596
ISBN-10: 0471204595
This book can be purchased from Barnes and Noble at Boston University.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch. (1994). Design Patterns:
Elements of Reusable Object-Oriented Software.
Publisher: Addison-Wesley Professional
ISBN-13: 978-0201633610
ISBN-10: 0201633612
This book can be purchased from Barnes and Noble at Boston University.
Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. (2004). Head First Design Patterns.
Publisher: O'Reilly
ISBN-13: 978-0596007126
ISBN-10: 0596007124
This book can be purchased from Barnes and Noble at Boston University.
Robert C. Martin. (2008). Clean Code: A Handbook of Agile Software Craftsmanship.
Publisher: Prentice Hall
ISBN-13: 978-0132350884
ISBN-10: 0132350882
This book can be purchased from Barnes and Noble at Boston University.
Boston University Library Information
Boston University has created a set of videos to help orient you to the online resources at your disposal. An
introduction to the series is below:
met_ode_library_14_sp1_00_intro video cannot be displayed here
All of the videos in the series are available on the Online Library Resources page, which is also accessible from
the Campus Bookmarks section of your Online Campus Dashboard. Please feel free to make use of them.
As Boston University students, you have full access to the BU Library. From any computer, you can gain access
to anything at the library that is electronically formatted. To connect to the library, use the link
http://www.bu.edu/library. You may use the library's content whether you are connected through your online
course or not, by confirming your status as a BU community member using your Kerberos password.
Once in the library system, you can use the links under “Resources” and “Collections” to find databases,
eJournals, and eBooks, as well as search the library by subject. Some other useful links follow:
Go to http://www.bu.edu/library/research/collections to access eBooks and eJournals directly.
If you have questions about library resources, go to http://www.bu.edu/library/help/ask-a-librarian to email the
library or use the live-chat feature.
To locate course eReserves, go to http://www.bu.edu/library/services/reserves.
Please note that you are not to post attachments of the required or other readings in the water cooler or other
areas of the course, as it is an infringement on copyright laws and department policy. All students have access to
the library system and will need to develop research skills that include how to find articles through library
systems and databases.
Study Guide
Module 1 Study Guide and Deliverables
Module Themes:
Introduction and Design Principles
Unified Modeling Language (UML)
Class Diagram, Sequence, Use Case, State
Readings: Module 1 online content - Appendices section is optional
Assessments: Quiz 1 due Wednesday, February 29, at 6:00 AM ET
Assignments: Assignment 1 due Wednesday, February 5, at 6:00 AM ET
Module 2 Study Guide and Deliverables
Module Themes:
Introduction to Design Patterns
Strategy Pattern, Observer Pattern
Abstract Factory Pattern
Pattern Categories
Readings: Module 2 online content
Assessments: Quiz 2 due Wednesday, February 12, at 6:00 AM ET
Assignments: Assignment 2 due Wednesday, February 19, at 6:00 AM ET
Module 3 Study Guide and Deliverables
Module Themes:
Creational Design Patterns
Factory, Abstract Factory, Singleton and Prototype Pattern
Readings: Module 3 online content
Assessments: Quiz 3 due Wednesday, February 26, at 6:00 AM ET
Assignments: Assignment 3 due Wednesday, March 4, at 6:00 AM ET
Module 4 Study Guide and Deliverables
Module Themes:
Structural Design Patterns
Facade, Decorator, Composite, Adapter, Flyweight and Proxy Patterns
Readings: Module 4 online content
Assessments: Quiz 4 due Wednesday, March 11, at 6:00 AM ET
Assignments: Assignment 4 dueWednesday, March 18, at 6:00 AM ET
Module 5 Study Guide and Deliverables
Module Theme:
Behavioral Design Patterns
Observer, Visitor, State, Template and Strategy Patterns
Combination of design patterns
Software Architecture and Frameworks
Software Libraries
Readings: Module 5 online content
Assessments: Quiz 5 due Wednesday, March 25, at 6:00 AM ET
Assignments: Assignment 5 dueWednesday, April 1, at 6:00 AM ET
Module 6 Study Guide and Deliverables
Module Theme: Refactoring and Code Cleaning
Readings: Module 6 online content
Assessments: Quiz 6 due Wednesday, April 8, at 6:00 AM ET
Assignments:
Assignment 6 due Wednesday, April 15, at 6:00 AM ET
Class Project due Wednesday,April 29, at 6:00 AM ET
Final Exam Details
The Final Exam will be onWednesday, May 6 at 6:00 PM ET.
The Final Exam will be closed book/closed notes.
Final Exam duration: three hours
The exam features a combination of multiple-choice (choose one), choose-multiple (choose zero or more), and
true/false questions.
Grading Information
Grading Structure and Distribution
The grade for the course is determined by the following:
Overall Grading Percentages
Assignments 30
Weekly Quizzes 20
Final Class Project 20
Proctored Final Exam 30
Translation between letter grades and percentages.
A (Excellent) 95-100
A- (Excellent; minor improvement evident) 90-94.99
B+ (Very good) 87-89.99
B (Good) 83–86.99
B- (Good mostly some significant improvements needed) 80-82.99
C+ (Satisfactory; some significant improvements needed) 77-79.99
C (Satisfactory; significant improvements needed) 73–86.99
C- (Satisfactory; significant improvements required) 70-82.99
D Many improvements required 65
Fail 0
Graded Items:
Assignments: There are a total of 6 assignments. Assignments are software design and implementation
assignments using UML diagrams and JAVA programming languages.
We will also use some additional tools and framework like Apache Maven,Findbugs,
CheckStyleand JUnit.You will learn about these tools in this course.
You can accessand submit the assignment in the "Assignments" area.
Final Class Project: The Final Class Project is similar to the assignments, but the topic is open and you
can develop your own ideas.
One part of the final project is to present your final project and record a presentation video.
Submission direction: Access and submit the Final Class Project in the "Assignments" area.
Quizzes: Quizzes are designed to assess your understanding of the material, on a module-by-module
basis.There is one graded quiz in each of the six modules.
Quiz taking direction:
The results for your quiz will be released as soon as possible after the quiz closes. When the quiz
results are released, you will be able to see the questions, your answers, and the correct answers
Access and take the quiz in the "Assessments" area.
Proctored Final Exam: There will be a proctored Final Exam in this course using a proctor service called
Examity. Detailed instructions regarding your proctored exam will be forthcoming from the Assessment
Administrator. You will be responsible for scheduling your own appointment.
Final Exam access direction:
Access and take the Final Exam in the "Assessments" area.
Lateness
We recognize that emergencies occur in professional and personal lives. If one occurs that prevents your
completion of homework by a deadline, please make this plain to your instructor. This must be done in advance
of the deadline (unless the emergency makes this impossible, of course), and should be accompanied by
particulars that back it up. Additional documentation may be requested. Late submissions without reasons will
result in grade deduction: we want to be fair to everyone in this process, including the vast majority of you who
sacrifice so much to submit your homework on time in this demanding schedule.
Academic Conduct Policy
Please visit Metropolitan College's website for the full text of the department's Academic Conduct Code.
A Definition of Plagiarism
“The academic counterpart of the bank embezzler and of the manufacturer who mislabels products is
the plagiarist: the student or scholar who leads readers to believe that what they are reading is the
original work of the writer when it is not. If it could be assumed that the distinction between
plagiarism and honest use of sources is perfectly clear in everyone’s mind, there would be no need
for the explanation that follows; merely the warning with which this definition concludes would be
enough. But it is apparent that sometimes people of goodwill draw the suspicion of guilt upon
themselves (and, indeed, are guilty) simply because they are not aware of the illegitimacy of certain
kinds of “borrowing” and of the procedures for correct identification of materials other than those
gained through independent research and reflection.”
“The spectrum is a wide one. At one end there is a word-for-word copying of another’s writing
without enclosing the copied passage in quotation marks and identifying it in a footnote, both of
which are necessary. (This includes, of course, the copying of all or any part of another student’s
paper.) It hardly seems possible that anyone of college age or more could do that without clear intent
to deceive. At the other end there is the almost casual slipping in of a particularly apt term which
one has come across in reading and which so aptly expresses one’s opinion that one is tempted to
make it personal property.”
“Between these poles there are degrees and degrees, but they may be roughly placed in two groups.
Close to outright and blatant deceit-but more the result, perhaps, of laziness than of bad intent-is the
patching together of random jottings made in the course of reading, generally without careful
identification of their source, and then woven into the text, so that the result is a mosaic of other
people’s ideas and words, the writers sole contribution being the cement to hold the pieces together.
Indicative of more effort and, for that reason, somewhat closer to honest, though still dishonest, is
the paraphrase, and abbreviated (and often skillfully prepared) restatement of someone else’s
analysis or conclusion, without acknowledgment that another person’s text has been the basis for the
recapitulation.”
The paragraphs above are from H. Martin and R. Ohmann, The Logic and Rhetoric of Exposition, Revised
Edition. Copyright 1963, Holt, Rinehart and Winston.
Academic Conduct Code
I. Philosophy of Discipline
The objective of Boston University in enforcing academic rules is to promote a community atmosphere in
which learning can best take place. Such an atmosphere can be maintained only so long as every student
believes that his or her academic competence is being judged fairly and that he or she will not be put at a
disadvantage because of someone else’s dishonesty. Penalties should be carefully determined so as to be
no more and no less than required to maintain the desired atmosphere. In defining violations of this code,
the intent is to protect the integrity of the educational process.
II. Academic Misconduct
Academic misconduct is conduct by which a student misrepresents his or her academic accomplishments,
or impedes other students’ opportunities of being judged fairly for their academic work. Knowingly
allowing others to represent your work as their own is as serious an offense as submitting another’s work
as your own.
III. Violations of this Code
Violations of this code comprise attempts to be dishonest or deceptive in the performance of academic
work in or out of the classroom, alterations of academic records, alterations of official data on paper or
electronic resumes, or unauthorized collaboration with another student or students. Violations include, but
are not limited to:
A. Cheating on examination. Any attempt by a student to alter his or her performance on an
examination in violation of that examination’s stated or commonly understood ground rules.
B. Plagiarism. Representing the work of another as one’s own. Plagiarism includes but is not limited to
the following: copying the answers of another student on an examination, copying or restating the
work or ideas of another person or persons in any oral or written work (printed or electronic)
without citing the appropriate source, and collaborating with someone else in an academic endeavor
without acknowledging his or her contribution. Plagiarism can consist of acts of commission-
appropriating the words or ideas of another-or omission failing to acknowledge/document/credit the
source or creator of words or ideas (see below for a detailed definition of plagiarism). It also
includes colluding with someone else in an academic endeavor without acknowledging his or her
contribution, using audio or video footage that comes from another source (including work done by
another student) without permission and acknowledgement of that source.
C. Misrepresentation or falsification of data presented for surveys, experiments, reports, etc., which
includes but is not limited to: citing authors that do not exist; citing interviews that never took place,
or field work that was not completed.
D. Theft of an examination. Stealing or otherwise discovering and/or making known to others the
contents of an examination that has not yet been administered.
E. Unauthorized communication during examinations. Any unauthorized communication may be
considered prima facie evidence of cheating.
F. Knowingly allowing another student to represent your work as his or her own. This includes
providing a copy of your paper or laboratory report to another student without the explicit
permission of the instructor(s).
G. Forgery, alteration, or knowing misuse of graded examinations, quizzes, grade lists, or official
records of documents, including but not limited to transcripts from any institution, letters of
recommendation, degree certificates, examinations, quizzes, or other work after submission.
H. Theft or destruction of examinations or papers after submission.
I. Submitting the same work in more than one course without the consent of instructors.
J. Altering or destroying another student’s work or records, altering records of any kind, removing
materials from libraries or offices without consent, or in any way interfering with the work of others
so as to impede their academic performance.
K. Violation of the rules governing teamwork. Unless the instructor of a course otherwise
specifically provides instructions to the contrary, the following rules apply to teamwork: 1. No team
member shall intentionally restrict or inhibit another team members access to team meetings, team
work-in-progress, or other team activities without the express authorization of the instructor. 2. All
team members shall be held responsible for the content of all teamwork submitted for evaluation as
if each team member had individually submitted the entire work product of their team as their own
work.
L. Failure to sit in a specifically assigned seat during examinations.
M. Conduct in a professional field assignment that violates the policies and regulations of the host
school or agency.
N. Conduct in violation of public law occurring outside the University that directly affects the
academic and professional status of the student, after civil authorities have imposed sanctions.
O. Attempting improperly to influence the award of any credit, grade, or honor.
P. Intentionally making false statements to the Academic Conduct Committee or intentionally
presenting false information to the Committee.
Q. Failure to comply with the sanctions imposed under the authority of this code.
Microsoft Azure Dev Tools for Teaching
Microsoft Azure Dev Tools for Teaching a Microsoft program that supports technical education by providing
access to Microsoft software for learning, teaching, and research purposes. Our membership allows faculty and
students currently enrolled in MET courses to obtain certain Microsoft products free of charge. All MET
students are granted access to download the software for the duration of their study at MET College.
FAQ and basic information are at Microsoft Azure Dev Tools for Teaching (You may have to enter your personal
BU login credentials to access this page.)
Disability Services
In accordance with University policy, every effort will be made to accommodate unique and special needs of
students with respect to speech, hearing, vision, or other disabilities. Any student who feels he or she may need
an accommodation for a documented disability should contact Disability & Access Services at (617) 353-3658 or
at [email protected] for review and approval of accommodation requests.
Netiquette
The Office of Distance Education has produced a netiquette
guide to help you understand the potential impact of your communication style.
Before posting to any discussion forum, sending email, or participating in any course or public area, please
consider the following:
Ask Yourself…
How would I say this in a face-to-face classroom or if writing for a newspaper, public blog, or wiki?
How would I feel if I were the reader?
How might my comment impact others?
Am I being respectful?
Is this the appropriate area or forum to post what I have to say?
Writing
When you are writing, please follow these rules:
Stay polite and positive in your communications. You can and should disagree and participate in
discussions with vigor; however, when able, be constructive with your comments.
Proofread your comments before you post them. Remember that your comments are permanent.
Pay attention to your tone. Without the benefit of facial expressions and body language, your intended
tone or the meaning of the message can be misconstrued.
Be thoughtful and remember that classmates’ experience levels may vary. You may want to include
background information that is not obvious to all readers.
Stay on message. When adding to existing messages, try to maintain the theme of the comments
previously posted. If you want to change the topic, simply start another thread rather than disrupt the
current conversation.
When appropriate, cite sources. When referencing the work or opinions of others, make sure to use
correct citations.
Reading
When you are reading your peers’ communication, consider the following:
Respect people’s privacy. Don’t assume that information shared with you is public; your peers may not
want personal information shared. Please check with them before sharing their information.
Be forgiving of other students’ and instructors’ mistakes. There are many reasons for typos and
misinterpretations. Be gracious and forgive other’s mistakes or privately point them out politely.
If a comment upsets or offends you, reread it and/or take some time before responding.
Important Note
Don’t hesitate to let your instructor or your faculty and student support administrator know if you feel others are
inappropriately commenting in any forum.
All Boston University students are required to follow academic and behavioral conduct codes. Failure to comply
with these conduct codes may result in disciplinary action.
Technical Support
Experiencing Issues with BU Websites or Blackboard?
It may be a system-wide problem. Check the BU Information Services & Technology (IS&T) news page for
announcements.
Boston University technical support is available via email ([email protected]), the support form, and phone (617-
353-4357). Please note that the IT Help Center has multiple locations. All locations can be reached through the
previously mentioned methods. For IT Help Center hours of operation, please visit their contact page. For other
times, you may still submit a support request via email, phone, or the support form, but your question won't
receive a response until the following day. If you aren't calling, it is highly recommended that you submit your
support request via the technical-support form, as this provides the IS&T Help Center with the best information
in order to resolve your issue as quickly as possible.
Examples of issues you might want to request support for include the following:
Problems viewing or listening to sound or video files
Problems accessing internal messages
Problems viewing or posting comments
Problems attaching or uploading files for assignments or discussions
Problems accessing or submitting an assessment
To ensure the fastest possible response, please fill out the online form using the link below:
IT Help Center Support
617-353-4357 or Web
Check your open tickets using BU’s ticketing system.
Navigating Courses
For best results when navigating courses, it is recommended that you use the Mozilla Firefox browser.
The Table of Contents may contain folders. These folders open and close (+ and − signs) and may conceal some
pages. To avoid missing content pages, you are advised to use the next- and previous-page buttons (and icons) in
the top-right corner of the learning content.
Please also familiarize yourself with the navigation tools, as shown below; these allow you to show and hide
both the Course Menu and the Table of Contents on the left. This will be helpful for freeing up screen space
when moving through the weekly lecture materials.
Navigation tools for the Table of Contents are shown in the image below:
Clicking the space between the Course Menu and the Table of Contents allows you to show or hide the Course
Menu on the left:
Web Resources/Browser Plug-Ins
To view certain media elements in this course, you will need to have several browser plug-in applications
installed on your computer. See the Course Resources page in the syllabus of each individual course for other
specific software requirements.
Check your computer's compatibility by reviewing Blackboard's System Requirements
Check your browser settings with Blackboard's Connection Test
Download most recent version of Adobe Flash Player
Download most recent version of Adobe Acrobat Reader
How to Clear Your Browser Cache
The IT Help Center recommends that you periodically clear your browser cache to ensure that you are viewing
the most current content, particularly after course or system updates.
This page is also found within the "How to…" section of the online documentation, which contains a list of some
of the most common tasks in Blackboard Learn.