About the course

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.

Topics


Textbooks

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

The following book on programming in Eiffel is suggested reading.

Addional notes are available from the resources page for the course.

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


Classes

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

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. So, in summary, you are encouraged to participate in class!

Reports

You will hand in for grading a set of reports. The report page gives more information about the style and content of reports. The grading page describes the grading scheme used and the algorithm for computing your final grade. The timetable section gives the due dates and times for the reports. The specifications are given as bulletins on the home page.

Reports may be done in groups of size 1 or 2; no groups larger than 2.


Tests and Examinations

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.


Timetable

Follows the Faculty of Science & Engineering dates.

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