Winter 2013: CSE3311Z -Software Design

Learning outcomes

Students must be able to develop software products to be used by others that are

The course is work intensive. This is particularly so of the course project (which is handed out prior to reading week, to give students sufficient time to produce a specified software product). A software developer must be able to produce programs that are used by others and maintained (and possibly extended) by other software development teams. Thus the code must have a good design and be properly documented. The main goal of the project is to allow students to develop a software product where they must make a persuasive case that

Course Description

The course deals with the problem of designing software which can be used, understood and modified by people other than the original developer. Software design is in itself a large topic as design can deal with various classes of programs and systems: small, medium and large; batch; real time; distributed; and interactive (visual and graphical). Every design class has its own problems. In this course we will deal with the design of small to medium non-interactive programs and small systems that work without time constraints.

We will study the following design methods: top down design, bottom up design and abstract data types, object-oriented design and design by contract. A robust design method combines the advantages of each of the methods and uses them at appropriate times.

Some of techniques we will look at will be: backtracking, exception handling, and the use of design patterns.

The design methods and techniques can be applied to most programming paradigms but this course will primarily use object-oriented programming.

Graphical documentation will use BON (Business Oriented Notation). Programming will be in Eiffel.

Upon successful completion the course you should be able to do the following.

You will have a broad understanding of design issues and methods which will enable you to learn new design methods and techniques, and variations of them, of a formal, semi-formal and informal nature. Some of the methods discussed in the course scale up to large problems and are used across the spectrum of program classes. Textbooks

Textbook

The following required course text book may be purchased at Bookstore.

Betrand Meyer, Object-Oriented Software Construction, Prentice Hall, 1997. ISBN 0-13-629155-4

Workload

The work load in this course, as in most computer science and engineering courses, is high. The course has a large unscheduled laboratory component to it which involves writing and testing Eiffel programs. You should be prepared to devote 12 hours a week on average to the course; this includes class time. With proper planning and discipline, you can spread most of the work load fairly evenly throughout the course.

It is up to you to read and study relevant material without explicit instructions. You are expected to find the required readings in the references and any other sources you can find. Part of the university experience is to acquire a measure of self reliance. The instructor for the course can only guide you as to what is useful to learn; the effort must come from you. The course classes will not cover all the topics in detail. Instead, the classes will cover the most important points and give you pointers as to how the rest of the material can be studied.

What CSE Students should know about learning but don't

The course consists of three class hours per week. In preparation for classes you are expected to read the appropriate material - the class schedule gives an approximate idea of when various topics and readings will be dealt with. In addition, exercises may be given which you should do in preparation for future classes.

Class participation: Prof. Gotshalks writes: You are encouraged to participate in class. Interviewers say that communications skills are a problem area for some of our graduate students. I encourage you to work on your communication skills in this class. Ask questions, Answer questions. Let me tell you from my own experience, once you have looked stupid enough times, it will no longer bother you. Believe me, I know. And, seriously, it is highly unlikely that your classmates will actually think you are stupid. It would be virtually impossible for a stupid person to make it this far through school. No, it is more likely that every person in the class is smart, not stupid. But no one knows everything, so we will all sometimes answer questions incorrectly, and we will all sometimes say something that is wrong. We may even ask a silly question; and we may even all laugh about it. That will be a growing experience in itself.