Each paragraph on this page describes a document of some kind. To obtain the document, click the PDF icon at the left.

All of the files are in Portable Document Format (PDF) for which you will need Adobe's Acrobat Reader. If you are one of the few people on the planet who has not yet downloaded Acrobat, click on the icon.

Everything: a fairly up-to-date list of my publications, reports, talks, theses by my students, etc. Nothing downloadable, though.

Process Oriented Programming

Visit my Erasmus page.

Object Oriented Programming

Equality in Object Oriented Languages (with Philip Santas). Many programmers underestimate the significance of equality in programming; this paper is one of my several attempts to clarify the issues. We presented it at EastEurOOPe'93, a conference on object oriented programming held at Bratislava, Slovakia in November 1993.

Copying and Comparing: Problems and Solutions (with Markku Sakkinen). Another look at equality, with copying thrown in as well. As I learn more about distributed programming, I begin to doubt some of the conclusions of this paper. We presented it at ECOOP'2002.

Issues in Object Oriented Programming. This was my first major attempt at analyzing issues of OOP, and programming in general, following my experiences in trying to design an OO language. It appeared in Structured Programming in 1991.

A Semantic Browser for Object Oriented Program Development (with Benjamin Cheung). OOP requires more help from the IDE than conventional programming. This paper, presented at the Hawaii International Conference on System Sciences in 1992, makes some helpful suggestions.

A Graph Model for Object Oriented Programming (with Mark Gargul). It seemed — and still seems — to me that a directed graph provides a very natural model of a running OO program. This paper, which appeared in the July 1994 issue of SIGPLAN Notices, develops that idea.

A Computational Model for Object Oriented Programming (with Mark Gargul). This is an unfinished technical report that extends the ideas introduced in A Graph Model. The goal was to define a system for specification and refinement using the model. We encountered technical problems, including running out of time.

PC-Dee: A Reference Manual. Dee (pun intended) is a little OOP I developed around 1990.

PC-Dee: Syntax and Semantics. The good bits for those who cannot stomach the complete Reference Manual.

Software Engineering

Designing for Change. The title is a cliché now, of course. Here's my two bits' worth, presented at IBM's CASCON in 1994.

The Future of Programming. Wild speculations that I first presented as a talk that I gave in late 1995. I hope it's not entirely nonsense but, as a research grant application based on this paper was successful, I cannot be sure.

Artificial Life

Laws and Life (with assorted graduate students). Some of my opinions about artificial life, presented at the IASTED Conference on Artificial Intelligence and Soft Computing in 2003.


Since the world of programming is plagued by poor documentation and writing about something is a good way to learn it, I wrote some of these tutorials for myself. Others were written for a particular course and or just in case someone else was interested.

Evolution of Programming Languages. These notes were originally written for a Summer course given at the University of Jyväskylä in 1999. I have since adapted them as course notes.

A LaTeX2E Gallimaufry: Techniques, Tips, and Traps. It's a bit out of date but LaTeX — unlike some other text processors — does not change very fast and there is still some helpful stuff here. You can also download the LaTeX source for the Gallimaufry as a zip file.

MetaPost: A Reference Manual MetaPost is a tool for creating diagrams that works well with LaTeX. Many tutorials are available on the internet, including John Hobby's original A User's Manual for MetaPost. Tutorials are better for some purposes than for others; my manual is intended for the "other" purposes. Source code for manual. Source code for figures.

Getting Started with OpenGL. Supplementary notes for a graphics course that I used to give.

Dynamic Systems. Background material for a talk I gave to our Artificial Life group early in 2005.


Control Systems. In 2003, I had to take an exam in control systems in order to become a Professional Engineer. These are the notes I made in preparation for the exam — probably not much use to anyone else, but you never know.



In 1992, I underwent eye surgery and had to rest for several months. This had a curious effect on my normally dormant creativity, and I wrote several short stories. They are intended to be amusing.

Virtues of Reality. A fictional expression of my views on virtual reality, published by Matrix in 1993. (The editor initially accepted it as non-fiction!)

The Meeting. An account of a workshop, closely based on bitter experience.

The Last Star War. It seemed to me, in 1992, that the ultimate development of warfare would be complex machines deciding the fate of nations in orbital battles. Here's my fictional working out of that idea.

Math Trivia

More examples of my obsession with explaining things, usually to myself. There's no higher math here: these little pieces explain odds and ends that tend to puzzle people. The first two pieces are relevant to graphics, the others to elementary physics.

Camera Positions for Dialogue. If you are writing a game or other graphics program, how do you choose a camera position that shows two people talking and also respects the classical rules of cinema grammar?

Rotation. Rotation in 2D is simple; rotation in 3D is interesting. Here's my brief introduction to quaternions.

Escaping. What is "escape velocity" and how do you calculate it?

Rocket Propulsion. Are there still people who believe that rockets don't work in a vacuum? How do rockets accelerate as their fuel runs out?

Sky Hooks. If you want to get into space, why not just climb a ladder? It looks crazy but the math works — more or less.

Deriving Special Relativity. Starting with the assumption that everything is relative — as Galileo well knew — how did Einstein get to the Lorentz transformation?