Object-Oriented Software Design
2004 Winter Term COMP 304B (CRN 1037)

The Course

Partial support by the Quebec Ministry for Education for the development of systems-oriented course material is graciously acknowledged. This support was given in the framework of the Advancing Systems-oriented Information Technology project.


There will be extra office hours on Thursday 15 April 15:00 - 17:00 in MC328.

Due to popular demand, there will be no fifth assignment. The grade distribution becomes: 45% assigments, 15% midterm, 40% final.

You may wish to have a look at the SVM and SCC tutorial.

Wednesday 31 March 18:30 - 20:00 in Trottier 100: solution of assignment 2 + overview of Command and Visitor patterns.

A custom AToM3 for DCharts modelling/simulation/code generation is available now: AToM3-2.2-DCharts.tgz.

Wednesday 17 March 18:30 - 20:00 in Trottier 100: tutorial on Statecharts (tools).

As someone just pointed out, there is a typo in assignment 2. I have corrected it and re-posted the assignment. You will notice the correction t in red and underlined (in the HTML version) and bold and underlined (in the PDF version).

The mistake was that str(ast) was mentioned rather than ast, which might have led to some confusion.

Just to make things clear:

  1. In Python, the __str__() method has a special meaning. If you call str(obj), Python will invoke obj.__str__(). This means that for every class C for which you provide an __str__() method, it will be possible to obtain the string representation by calling str(obj) with obj an instance of C.
  2. In the assignment, you are asked to implement the __str__() method for AST nodes (so that they can be easily printed). Note that the implementation of the __str__() method should only be 4 lines or so. In the assignment, it is specified in detail what those four lines need to be. In essence, you will use a StrReprVisitor to produce the string representation rather than coding this from scratch (e.g., by recursively calling __str__).
  3. To avoid confusion: the visitor's methods (visitNumber, visitFunction, ...) should NOT use the AST nodes' __str__ method ! While you are designing your visitor, you may even assume that there is no __str__ method in the AST nodes.

In case you were not able to get hold of the GoF book, here is the Visitor Pattern chapter [pdf] (will only be up until the deadline of assignment 2).

Monday 8 March: please submit a dummy file for the "Midterm" assignment on WebCT before Friday 13 March. This will allow us to post your grade.

Tuesday 2 March: assignment 2 is available in the Assignments section at last. Apologies for the delay !

Are you an undergraduate student and interested in getting first-hand experience in research in Object-Oriented Design ? The NSERC Undergraduate Student Research Award is a unique opportunity to discover how exciting research can be, to work on a non-trivial problem for four months, and to get paid. Have a look at the website of the Modelling, Simulation and Design Lab or come to talk to me for more information about subjects (OO design, meta-modelling, and visual modelling interfaces).

Thursday 22 January: assignment 1 is now available in the Assignments section.

On Wednesday 14 January 18:35-19:55 in Trottier 100, Bruno Dufour will give a tutorial on Graphical User Interface (GUI) development in Python/Tkinter.

Despite the confusing reference, during the Wednesday 7 January class, to "the next class, on Monday", the next class will obviously be on Friday 9 January.