User Tools

Site Tools


start

Winter 2013: CSE3311Z -Software Design

  • Lectures: Mon./Wed. 4.00-5.30pm RN203
  • Important: Subscribe to: 3311 Forum for the latest announcements. Please ask all questions relating to the course material on the forum (not via email). For all other questions, see me during office hours.
  • See bottom of this page for login with your Prism password. Slides are available from the SVN repository (see link in the sidebar, once you have logged on).
  • Read the course outline regularly. It is important to read all the required readings (not all of which are discussed in class). It is important to do the suggested exercises.
  • Office hours: Monday 5.30-6.30pm in the SEL (CSE2056).
  • Get started using the Eiffelstudio IDE on the first day of class (here). Compile and execute a hello world program. Then use the ESpec library to write and execute your first test. You might want to run through this introductory tutorial (pdf).
  • For why we use Eiffel see here. Introductory lectures to Eiffel here. Examples and useful slides from other instructors for this course.

Learning outcomes

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

  • Correct (relative to a specification).
  • Efficient.
  • Maintainable. (Just as it is hard to read a disorganized essay, so it is hard to understand a disorganized design, let alone extend it).

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

  • their software product is reliable, i.e. that customers using their software product can rely on the fact that it is correct (performs precisely according to specification) and robust (behaves appropriately to abnormal conditions), and that
  • their software product is maintainable (well-designed).

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.

  • Describe and use the core OO concepts and techniques: classes, objects, clusters, polymorphism, genericity, multiple inheritance, contracts, agents &tuples.
  • Describe and develop programs based on plan-driven and test-driven (based unit testing a la JUnit) development.
  • Design software systems using design by contract.
  • Use contracts to verify the correctness of loops and algorithms.
  • Select appropriate patterns from those discussed in the course and adapt (customize) them for specific problems.
  • Design and describe, using BON diagrams, both the static and dynamic architecure of systems.
  • Use integrated development environments and testing tools.
  • Write professional design reports.

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.

start.txt · Last modified: 2013/03/15 15:48 by jonathan