Object-oriented programming with graphics, OOPG, 2D1964, 4 credits, Period 3, spring 1996

Objektorienterad programmering med grafik, 2D1964, 4p, period 3, våren 1996

The course will be given during the period 3. For two years the course was given in English. This year we have decided to use Swedish as it has turned out to improve the communication (it is unappropriate that Swedish teachers speak English for Swedish students). Most of the course material (but not all of it) will however be available in English making it possible for English speaking students to participate in the course.


The course wants to give a deeper understanding of computer graphics and visualization by giving an overview of some advanced techniques. By giving a freedom in choice of subjects for the assignments it also want to give the participants the possibility to study some subject in more detail.

The course wants to give a deeper understanding of an object-oriented language, its class library and environment. We will especially investigate techniques to develop interactive graphical applications.


This course is optional for students in computer engineering (D) at KTH and for students in mathematics with specialization in computer science (MD) in SU. The course may also be taken as a graduate course if it is not already included in your undergraduate study. Furthermore, you are especially encouraged to take this course in conjunction with the course Människa-dator interaktion (Man-computer interaction or MDI) as they together give a broader perspective on interactive computer systems.


One of the following courses or equivalent

Grafik och interaktion programmering (GrIP) for D3

or Interaktiva Programmeringsmiljöer (IMG) for MD3


1) Advanced algorithms and data representations for computer graphics: solid modelling, color models, illumination, shading, rendering, visible surface determination, advanced raster algorithms, antialiasing and various advanced modelling techniques.

2) Investigation of a large object-oriented system its class library and framework. Object-oriented approaches to designing and programming of interactive graphical applications. Introduction to Design Patterns. Exemplification of creational patterns, structural patterns and behavioral patterns, as iterator, factory method, adapter, composite, decorator, observer, Model-View-Controller and alike.


Graphics: Lars Kjelldahl, lassekj@nada.kth.se

Object-oriented analysis: Jiarong Li, li@nada.kth.se

Smalltalk: Björn Eiderbäck, bjorne@nada.kth.se

News and www to be used for course info

There is a News group for the course: nada.kurser.oopg, where we will put all up-to-date information during the course.

There is a directory for the course /info/NADA-kurser/oopg, which will be used for different files that you may need. There will also be a WWW-page.

There is also a News group for Smalltalk: nada.apps.smalltalk


You will be requested to register for the course with the command:

res checkin oopg96


Assignments All the assignments should be carried out in groups of two students (except OOPG1 which is done individually). All assignments should be delivered during spring, i.e. not later than May 1996.

Figure in parenthesis below is an estimate of the time needed for the assigment.

OOPG1: Participation in an experiment regarding stereoviewing (2h)

OOPG2: Write a short overview on a specific topic (9h)

OOPG3: Choice between assignment using e.g. Silicon Graphics hardware, using about visualization (using AVS), fractals, renderman, showplace, DIVE, program advanced algorithm, Rayshade, colour or something else that you propose (and I accept). more details will be given later (12h)

OOPG4: Smalltalk: Simple patterns

OOPG5: Smalltalk: Graphics, MVC, GUI, ValueHolders, etc.

OOPG6: Smalltalk: Interactive editor

OOPG7: Object oriented analysis (23h), deadline: 14/2

Delivery of assignments:

OOPG1: schedule at time table on board at sixth floor, at laser writer LW Nalen (near room of Björn Eiderbäck/Per Hägglund)

OOPG2-3: after agreement by email

OOPG4-6: scheduled sessions in lab rooms, schedule to be found in a file (pärm) outside >>svart sal>>, fifth floor

OOPG7: handed in mailbox of Jiarong Li, Osquars backe 2, floor 4

Time for the assignments will be decided in cooperation with the participants.

Written examination: A written exam in all the parts of the course.

Thursday 7 March, 8.00-13.00, room F21

Course material

There will be some lecture notes to the course. In addition to that:

Graphics: Foley, van Dam, Feiner, Hughes, Phillips (FvDm.fl): Introduction to Computer Graphics, Addison-Wesley, 1994

- Models and Tools in Computer Animation, tutorial notes, Daniel Thalmann, 41 pages

- Gerald Murch: Colour Graphics - Blessing or Ballyhoo?, Computer Graphics Forum, 1985, pp127-137

- Ray-Tracing, 22 pages

- Arie Kaufman, Volume Graphics, IEEE Computer, pp 51-64, July 1993

- Roehl, Bernie, Distributed Virtual Reality --- An Overview, 1995

- Cruz-Neira, Carolina AND Sandin, Daniel J. AND DeFanti, Thomas A, Surround-screen Projection-based Virtual Reality: The Design and implementation of the CAVE, SIGGRAPH:93

- Gossweiler, Laferriere, Keller, Pausch, An Introductory Tutorial for Developing Multi-User Virtual Environments

- Stoakley, Conway, Pausch, Virtual Reality on a WIM: Interactive Worlds in Miniature

Object-oriented analysis: The book:

Object-Oriented Modeling and Design by Rumbaugh, et al., Prentice-Hall, 1991, ISBN 0-13-630054-5

Home Heating System Requirements (2 sidor)


- Software Design Patterns: Common Questions and Answers, Jim Coplien

- VisualWorks Cookbook, Drag and Drop, pp 339-421 i.e. Chap 18

- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Addison Wesley. October 1994. Chap 2, pp 33-77

- User's Guide, 223-271 (Chap 18 Application Framework)

- ECOOP93, Design Patterns: Abstraction and Reuse of Object-Oriented Design, 406-431, URL: http://st-www.cs.uiuc.edu/users/patterns/PapersBib.html (not in course set sold at NADA, to be handed out later)

- VisualWorks Cookbook, 375-421 (Chap 19 Custom Views + Chap 20 Custom Controllers), (not in course set sold at NADA, to be handed out later)

Lecture notes and completary material will be available in electronic form at the "home page".

The books can be bought in the book shop of the student union.

Additional papers will be copied to you later.

Copied course material can be bought at NADA for the price of 80 SKR.

Preliminary detailed schedule

Additional time schedule for computer assignments is to be setup after consultation with the course participants.

L1 15/1 10-12 E2 Overview by all instructors, LK: colour,solid modelling

L2 15/1 13-15 E2 LK: illumination, fractals, advanced algorithms

L3 17/1 15-17 E3 JL: OMT initial analysis

L4 22/1 10-12 E2 BE: Repetition of Smalltalk. Design patterns. Fundamental

classes and some of their patterns, e.g. the classes Collection

and Stream and the patterns iterator and template method.

L5 22/1 13-15 E2 BE: Core graphical classes and objects. Dependents.

Introduction to MVC. Paint editor.

L6 24/1 15-17 E3 JL: OMT analysis

L7 29/1 10-12 E2 LK: raytracing, radiosity

L8 29/1 13-15 E2 LK: advanced algorithms, aliasing

L9 31/1 15-17 E3 BE: More about graphical classes. Decorators. Polling user

interfaces and MVC. Prototype as an interaction

technique. Drawing editor.

L10 5/2 10-12 E2 BE: Adapter. Interface builder. Event based interaction.

Graphical editor.

L11 5/2 13-15 E2 BE: Wrapper, composite part. "Interactive" design patterns

such as manipulator and command.

L12 7/2 15-17 E3 JL: OMT design

L13 12/2 10-12 E2 KMJA: Virtual reality, experimental studies in graphics

L14 12/2 13-15 E2 LK: volume visualization, animation, examples

L15 14/2 15-17 E3 JI: Visualization of scientific data

L16 19/2 10-12 E2 BE: More about the interface builder. Reusing and adopting

interfaces and objects. Patterns such as mediator, memento

and bridge.

L17 19/2 13-15 E2 BE: Programming with proxies. Communication with external

units with help of sockets and alike. Something about


L18 21/2 15-17 E3 JL: Discussion on OOPG7