Last updated 2010 March 17
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 of the course you can expect to 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.
The following required course text book may be purchased at Bookstore.
The following book on programming in Eiffel is suggested reading.
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.
Reports may be done in groups of size 1 or 2; no groups larger than 2.
There will be two in-class tests for Sections A, and a formal three hour common examination held during the examination period at the end of the term. The grading page describes the grading scheme used and the algorithm for computing your final grade. The timetable section give the dates and times for the tests and examination.
The test questions will be based on all the course material: texts, readings, classes, reports, exercises, and on-line notes and slides. Example test questions from previous tests and examinations, and variations on them can be found here.
Class times: Monday & Wednesday 4:00pm to 5:30pm, SC 303
Report and test due dates
Report 1 Wednesday, January 20, 4:00 pm Report 2 Wednesday, January 27, 4:00 pm Class Test 1 Wednesday, February 3 Report 3 Wednesday, February 24, 4:00 pm Class Test 2 Wednesday, March 10 Report 4 Wednesday, March 17, 4:00 pm Report 5 Wednesday, March 31, 4:00 pm Final exam Wednesday, April 14, 7:00pm - 10:00pm, CLH-K
Important dates
First day of classes : Monday, January 4 Last day to enroll in the course : Tuesday, January 19 Reading week (no classes) : February 13 - 19 Last day to drop the course : Monday, March 8 Good Friday (no classes) : Friday, April 2 Last day of classes : Monday, April 5 Examination period : April 7 to 23 inclusive