CSE 335
Software Design
Spring 2008
Computer Science and Engineering
Michigan State University
Course description:
This course will introduce students to the development of large software
products, libraries, and product families with emphasis on design concerns that
dominate the development of such software. These concerns include reliability,
reusability, maintainability, and ease of extension and contraction. Students
will learn how to use object-oriented design techniques to address these
concerns. The course emphasizes explicit modeling and critical analysis of
designs prior to implementation. Students will learn heuristic methods to
design for integration and changes in requirements. Students will also learn
the fundamentals of software specification and techniques for designing
software to meet its specification.
This course focuses on implementation techniques, analysis and design
heuristics, and best practices that have proven useful in making the
software-development process rigorous, systematic, repeatable, and manageable.
Students will be introduced to current methods, which they will apply to
programming and design projects.
Finally, this course is primarily about design, which is very difficult to
learn by reading a book or cramming for a test. Design problems involve choices
and tradeoffs, and often there is no single "right" answer. The instructor's
role in such a course is to set up an environment that will force students to
confront and appreciate difficult design issues and to provide critical and
continual feedback to students on their choices. It is the student's
responsibility to actively participate in this environment and to reflect and
respond to the issues that are discussed. To achieve these goals, we will
supplement the lectures and required readings with in-class collaborative
exercises and materials on heuristics for problem solving.
Topics to be covered include:
- Design principles, specifically: abstraction, anticipation of change,
generality, incrementality, modularity, reusability, and separation of concerns
- Design methods, patterns, and heuristics
- composites, strategies, visitors, observers, and adapters
- role-collaboration design
- stepwise refinement
- Maintenance issues
- Modeling notations and methods, specifically UML
- Software architecture
- Specification and documentation
People:
Times and Places
- Class is held Mon/Wed 12:40 - 2:00 in Engineering 1225
- Office hours with Dr. Kraemer: Tuesday 12-2 and immediately after class in Engineering 3144.
- Office hours with Eduardo Diaz: Thursday 2-3 in Engineering 3353 (Unix Lab).
Prerequisites
- CSE 232 (fluency in the C++ programming language )
- CSE 260 (discrete structures)
Textbooks
-
Object-Oriented Modeling and Design with UML (Second Edition)
by Blaha and Rumbaugh, Pearson/Prentice-Hall, 2005.
-
Design Patterns: Elements of Reusable Object-oriented Software
by Gamma, Helm, Johnson, and Vlissides, Addison Wesley, 1995.
Course calendar
A calendar,
containing links to project assignments, online materials, online versions of
lecture notes, is updated frequently throughout the semester. Refresh your
browser to be sure to view the latest version.
Grading policy
Your grade in this course will be calculated as the average
of the following:
| |
Programming and design projects |
|
(3 at 25% + 25% + 10%) |
|
60% |
|
Exams |
|
(3 at 15% + 12.5% + 7.5%) |
|
35% |
|
Homework |
|
|
|
5% |
NOTE: All grades become final five days after the grade is issued. There will
be no exceptions.
Exam grades: If a student wishes to challenge any exam grade, he or
she must do so in writing (not in person), with a concise explanation of why
his or her misgraded answer is correct. This explanation should be submitted
to the instructor.
Project grades: Questions regarding project grades should go to
the TA. If the problem cannot be resolved after consultation with the
TA, the TA will forward a summary of the problem to the instructor (with an
e-mail carbon-copy the student).
Examinations, Projects, and Homework Assignments
There will be no final exam per se; however,
we will meet during that period to return old papers,
summarize and debrief course topics, and review any
topics for which a majority of students in the class
encountered difficulties.
The tentative dates and times for these exams are as
follows:
- Exam 1: Monday, February 11 (7-9pm), Location: TBA
- Exam 2: Wednesday, March 19 (7-9pm), Location: TBA
- Exam 3 + course evaluation:
Monday, April 21 (7-9pm), Location: TBA
The exams will cover material from assigned reading,
projects, homework assignments, and the lectures.
No make-up exams will be given except for documented illness
or personal emergency.
To be eligible for a make-up, you must notify the instructor
prior to the time of the exam and provide documentation for
the situation when arranging the make-up.
A student not taking an exam will receive a grade of 0.
There will be three programming/design projects this semester.
Not turning in one of the project deliverables on the due
date will result in the student receiving a 0 for that
project.
Homework assignments are an integral part of the course.
We will assign a total of 10 homeworks, and you must
complete and demonstrate to the TA at least 8 of them
to receive the homework credit.
NOTE: We frequently use material from homework
assignments when crafting examination questions and will
write the questions assuming you have successfully
completed all assigned homework.
Integrity and ethics
The policy of the university on integrity of scholarship and grades
(pages 49-50, Academic Programs, 1993) will be followed. Implicit in
handing in homework, lab assignments, papers, and exams is that they
represent the student's own work. Any exceptions should be pre-approved
by the instructor and explicitly noted. If a student represents someone
else's work as his or her own, both students (i.e., the provider
and the recipient of the copied work) will receive a grade of 0.0 for the
entire course. There will be no exceptions; thus, it is every student's
responsibility to ensure that his or her work is not copied.
Eileen Kraemer
(kraemere@cse.msu.edu)
Last modified: Mon Jan 7 2008