Home Up Intro Contents Chapter 1 2 3 4 5 6 7 8 9 10 Design Assert Timing EBNF Report Pas Last Changed: July 12th, 1997
This is a conversion from Oberon text to HTML, and from German to English. The converter software is still under development, and some features or information may be missing in this converted version. HTML hypertext facilities are not yet active in this document. To exploit the interactive facilities, use Oberon System 3 and the source of this text, available for download using binary ftp as Oberon System 3 archive. The converter from German to English is still under development as well. A previous version is also available for Oberon V4. To access this and other additional material use ftp.
For the convenience of our students, most of this information and the related material is available in German as well.

Introduction to Oberon

The Oberon Programming Language

G. Sawitzki <gs@statlab.uni-heidelberg.de>

Introduction to the Oberon Programming Language
Günther Sawitzki
<gs@statlab.uni heidelberg.de>

Preface and Contents
- Under development. Version: June 1998 -

The "Introduction to the Oberon programming language" is written for readers with some mathematical background knowledge and a special interest in computer science.

Among other meanings, Oberon is the name for

-   A research project on software environments for work stations, carried through 1986-1989 at the Institute for Computer Systems, ETH Zürich
-   An operating system, developed as part of the Oberon research project. The Oberon operating system can be implemented as native (stand alone) operating system. Or it can be implemented on top of another operating system, such as MS-DOS/Windows, Macintosh or UNIX.
- A programming language.

The course focusses on the Oberon programming language. Since the first report in 1988, the language has seen some extensions and clarifications. This course is based on the language definition as given in the Oberon-2 report, October 1993. The Oberon language can be used indepently of the Oberon operating system.

The course has three parts. The first part introduces basic concepts of the Oberon operating system and the elements of the Oberon language (modules, types and variables, declarations, controll structures). This should be a sufficient guide to continue with a self-paced training, for example using Reiser and Wirth: "Programming in Oberon", Ch. 9 ff .

The second part discusses program design and implementation in Oberon, based on examples. A special topic are principles of object oriented design and methods of software engineering. Some additional examples to be discussed in this context can be taken from "Project Oberon" (Wirth and Gutknecht 1992) and "Programming in Oberon" (Reiser and Wirth 1992).

The third part is a systematic and complete walk through the language definition "The Programming Language Oberon 2" (Mössenböck and Wirth, October 1993).

The first part can be completed in about a week. The second part is more prone to be used in a one term course with project work in groups, to be concluded with the third part, for example in the form of a two day repetition course.

For practical exercises, the Oberon operating system is used. Over time, this has been implemented in various variants, and development is still going on. So it is unavoidable that differences will occur between the configuration documented here, and the configuration a reader will meet at his site at a later time and a different location.
The original design of Oberon is documented in (Wirth and Gutknecht 1992) and (Reiser 1991); as of this writing, the recent version is Oberon V4. An older version of this course material, implemented for V4, is accessible from
The recent development line at the ETH Zürich is Oberon system 3. This version of of the course material has been used with Oberon system 3 Version 2.1 and system 3 Version 2.2.1. On the commercial side, BlackBox (formerly named Oberon/F ) is available, but implemented only for Windows and MacOS.

Oberon system 3 with Gadgets is recommended for this course. The course is using additional tools which can be accessed via our Oberon home page at
If this material is not accessible to you, you can use the corresponding tools which come with the Oberon System 3 distribution.

This course is not a general introduction to your Oberon operating system. Usually, with any implementation of an Oberon system, you will receive system specific instructions online ("ReadMe", "DoubleClickOnMe", "Tour"). It is strongly recommended to read the introduction which comes with your variant of the Oberon system.
For more information on System 3, the recommended book is
  A. Fischer, Hannes Marais: The Oberon Companion,
  vdf Hochschulverlag AG, Zürich 1998, ISBN 3 7281 2493 1.

(c) G. Sawitzki, StatLab Heidelberg 1995 - 1998
Thank you for help, hints and support to A. Fischer, F. Friedrich, M. Fuchs, G. Valiente and C. Werner, and to all participants of the previous Oberon courses.

System specific hints:
General: if you are using an Oberon Version which has a flat (non-hierarchical) file system, you have to delete the path name components (like ItO/, ItO/PIO/, ...) in all file references used in the course.

S3: the Macintosh and Windows version support file names using UNIX conventions. On the Macintosh, new directories are created on the fly. For the Windows version, you have to create directories yourself if needed.
S3:  The native implementation for IBM compatible PCs does not support a hierarchical file systems. You have to change file references in the course material correspondingly.
S3:  The conventions for the option character are in transition. Depending on the version and module you are using, the option character may be one of the following: "/", "\" or "%" . Check your system specific documentation.

V4 general: if gsBuilder is not available, use Folds.Compile instead. To get imbedded error marks, select the error list after compilation and use Folds to insert error marks.
To open a file, use Edit.Open ^ (see System.Tool viewer).

V4  for Macintosh uses file names using Macintosh conventions. Replace / by : for all file references in the course material.
V4:  Files are opened using Edit.Open. Replace Desktops.OpenDoc ^ by Edit.Open.

If gsBuilder is not available, use Builder.Compile instead of gsBuilder.Compile. If compilation returns an error list, select the error list and use Builder.MarkErrors to insert error marks.

Home Up Intro Contents Chapter 1 2 3 4 5 6 7 8 9 10 Design Assert Timing EBNF Report Pas