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:

People:

Times and Places

Prerequisites

Textbooks

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:

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