logo of the SSW institute ;)
Computer Science
System Software




PhD Theses
Go Abroad



Exercise on Object-oriented Programming


Gain practical experience with a purely object-oriented programming style.


Develop a sample program in Smalltalk as an example for a pure object-oriented language.


Create a "Look at me!" animation where a figure looks in the direction of the mouse pointer.

The program should display a window containing a face with eyes. The eyes should look in the direction of the mouse pointer and follow mouse movements. Note that the eyes do not necessarily look in the same direction (for example, when the mouse pointer is between the eyes).

You can create a simple or sophisticated illustration, with pre-made bitmap images or by programmatically drawing the entire face and the eyes. The representation is entirely up to you. The smiley face shown here is just an example. You could also use a photo of yourself or a cartoon character.

It should be possible to change size and proportion of the face (for example, by resizing the enclosing window, or with dimensions supplied as method parameters).

Important: You can easily find working examples of similar animations implemented in Smalltalk. You are encouraged to study such examples, but you must finally implement your own program. During the demo, you must be able to explain how you did it, and you should be able to demonstrate that your program works for faces with different sizes.

Development Systems

Squeak is an open-source development environment for Smalltalk.

Pharo is an alternative system with a more modern look. In fact, Pharo was built on top of the Squeak system.

Both Squeak and Pharo are available for Windows, Mac and various Unix variants. They come with a wealth of documentation, tutorials and examples. For further information, see the documentation and samples on the project pages.
It is mostly a matter of taste which of these systems you prefer. For the POPL exercise, you can use either.

Expected Results

When you present your results at the end of the semester, we expect you to critically discuss your own implementation with respect to Smalltalk compared to other object-oriented languages. Which language properties of Smalltalk did you actively use? Which of them were helpful for the given task? Which got in your way and required workarounds? What would your solution look like if you had implemented it in a different language, such as Java?

During your presentation, you must expect questions about the standard classes of Smalltalk. It is therefore highly recommended that you familiarize yourself with the available classes in the Smalltalk class library. You should be able to explain why you chose a certain class in your implementation.


You have to present the result of your work in person at the end of the term. Please bring your own computer and prepare it for a quick demo, including a look at the source code of your implementation.
Don't start with the project at the end of the semester, but rather view it as a continuing exercise that you should do in parallel with the course.

The presentation takes place in room number 0204 (Blaschek's office, Science Park SP3, 2nd floor)

Tuesday, January 9Wednesday, January 10
08:30: --08:30: Christina Rammerstorfer
08:40: Lisa Maria Kritzinger08:40: Petra Waldhör
08:50: --08:50: Kevin Feichtinger
09:00: --09:00: Daniel Körner-Schenk
09:10: --09:10: --
09:20: --09:20: --
09:30: --09:30: --
09:40: Manuel Hoffmann09:40: --
09:50: --09:50: --
10:00: --10:00: --
10:10: --10:10: --
10:20: --10:20: --
10:30: --10:30: Elias Gander
10:40: --10:40: --
10:50: --10:50: Nikolas Boldis
11:00: --11:00: --
11:10: --11:10: --
11:20: --11:20: --
11:30: Bernhard Führicht11:30: --
11:40: Patrick Birnzain11:40: --
11:50: Philipp Schörkhuber11:50: --
12:00: Marindo Beka
12:10: Thomas Michael Neuhauser
12:20: Alexander Freistetter
12:30: Christian Reiter
12:40: Selim Tantaoui El Araki
12:50: --
13:00: --
13:10: --
13:20: Stefan Wolfsteiner
13:30: --
13:40: --
13:50: --
14:00: Adeel Akram Pasha
14:10: Ayda Shafi
14:20: Mario Kneidinger
14:30: --
14:40: --
14:50: --