User Tools

Site Tools


start

CSE3311 Software Design (Fall 2012)

About The Course

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.

Why Eiffel?

Students enrolling in this course may wonder why we use Eiffel. The Eiffel programming language is used in this course because it supports several OO concepts that are not supported in other, more popular languages e.g., Java, such as inheritance from multiple classes. The most important however feature offered by Eiffel is support for contracts on the language level.

Textbooks

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

The following book on programming in Eiffel is suggested reading.

  • Pete Thomas, Ray Weedon, Object-Oriented Programming in Eiffel, second edition, Addison-Wesley, 1998, ISBN 0-201-33131-4.

Lecture Times

  • Tuesday and Thursday, 17:30pm - 19:00pm, CB 115

Office Hours

  • Tuesdays 15:00 - 17:00 (3-5pm), LAS 2013 (TA Advisory office)

Workload

The work load in this course, as in most computer science and engineering courses, is high. As a part of this course you will be required to work independently in the laboratory on at home. This work involves writing and testing Eiffel programs and writing reports. 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.

Classes

You are encouraged to participate in class. The time in class is to guide you and you should use it to ask questions, discuss problems and practice critical thinkings and problem solving skills.

Reports / Assignments

You will hand in for grading a set of reports. Reports may be done in groups of size 1 or 2; (no groups larger than 2).

Tests and Examinations

There will be one in-class test and a formal three hour 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 class schedule gives 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.

Acknowledgements

The content of this course is based on materials developed by prof Gunnar Gotshalks and prof Jonathan Ostroff for provious editions of CSE3311 Software Design course.

start.txt · Last modified: 2012/09/18 18:28 by pawluk