The Oz 2.0 Documentation

If you can read this, your browser provides insufficient support for style sheets. The visual presentation of this document will suffer.

Getting Started

Reference Material

Tutorial of Oz 2
Seif Haridi

This tutorial introduces the programming language Oz 2. Oz 2 is a multiparadigm programming language. It is a high level programming language that is designed for advanced, concurrent, networked, soft real-time, and reactive applications. Oz 2 combines the salient features of object-oriented programming by providing state, abstract data types, classes, objects and inheritance. It provides features of functional programming by providing compositional syntax, first class procedures, and lexical scoping. It provides the salient features of logic and constraint programming such as logic variables, constraints, disjunctions, and programmable search mechanisms. Oz 2 is a concurrent language where users can create dynamically any number of sequential threads. Oz 2 threads are data-flow whose execution proceeds only when data dependencies on variables involved are resolved.

The tutorial covers most of the concepts of Oz 2 in an informal way. It is a suitable as first reading for programmers that want to be able to start quickly writing applications without any particular theoretical background. The document is deliberately informal and, thus complements other DFKI Oz 2 documentations.

The latest version of this document and lectures on Oz can be found at the author's home page.

Available as postscript or pdf.

Finite Domain Constraint Programming in Oz
A Tutorial
Gert Smolka, Christian Schulte, and Jörg Würtz

This document is an introduction to constraint programming in Oz. We restrict our attention to combinatorial problems that can be stated with variables ranging over finite sets of nonnegative integers. Problems in this class range from puzzles to real world applications as diverse as scheduling, ware house allocation, configuration and placement.

Available as postscript or pdf.

Tips on Oz
Martin Henz, Martin Müller, and Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming: a true multiparadigm language. These paradigms are supported by a semantically minimal kernel language, which, however, becomes verbose quickly for programs of realistic size. It was a crucial design decision to provide syntactic support for these programming paradigms at the user language level.

A drawback of this approach is the notational complexity of the resulting language. This document gives a brief overview over programming concepts and syntactic forms used in Oz by means of concise examples. It is not intended as a comprehensive language definition or tutorial but aims at being a programmer's companion providing quick help and pointers to further documentation.

Available as postscript or pdf.

Window Programming in DFKI Oz
Michael Mehl and Christian Schulte

This paper describes how to do window programming in DFKI Oz. The DFKI Oz window interface is based on the Tk toolkit which in turn is based on the script language Tcl. It provides a high level abstraction of Tk widgets allowing for object-oriented and concurrent window programming. A generic translation scheme from Oz values to Tcl/Tk commands provides for minimality and flexibility on the Oz side.

The Tcl/Tk interface is implemented in Oz using the open programming facilities and is an example of how to connect an external and sequential agent to Oz.

Available as postscript or pdf.

Open Programming in DFKI Oz
Christian Schulte

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This document explains how to program open applications in the DFKI Oz 2.0 System.

Open applications need access to the rest of the computational world by exchanging data with it. DFKI Oz 2.0 provides classes to handle files, sockets, and processes. It features a module giving access to important and portable operating system functions.

The document contains both introductory material including several examples as well as referece material.

Available as postscript or pdf.

The Oz Standard Modules
Martin Henz, Martin Müller, Christian Schulte, and Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. The Oz Standard Modules are part of the Oz language specification and contain procedures that are made generally available to the programmer. A thorough knowledge of the Oz Standard Modules is highly recommended for effective programming in Oz.

The Oz Standard Modules provide the basic operations on the Oz values and a set of procedures whose use makes for more elegant and readable programs. They provide high-level access to the search combinator, to programming with finite domain constraints, to programming with threads, to real-time programming and to data structures such as arrays and dictionaries.

Available as postscript or pdf.

DFKI Oz User's Manual
Michael Mehl, Tobias Müller, Konstantin Popov
Ralf Scheidhauer, and Christian Schulte

DFKI Oz is an interactive implementation of Oz, a high-level programming language designed for concurrent symbolic computation. Its performance is competitive with commercial Prolog and Lisp systems. DFKI Oz is available for many platforms running Unix/X and Windows 95/NT.

This documents describes the features of DFKI Oz. DFKI Oz provides a programming interface based on GNU Emacs, the Browser as a concurrent tool to visualize values, the Explorer as a graphical and interactive tool to visualize and analyze search trees, the Panel as a graphical tool to visualize and control important parameters of the Oz system, a programmers interface to these system parameters, an incremental compiler, support for stand-alone applications, a high performance emulator with a garbage collector, an interface to C and C++. The installation of DFKI Oz is very simple.

Available as postscript or pdf.

The Constraint Propagator Interface of DFKI Oz
Tobias Müller and Jörg Würtz

This document explains the steps to be taken to implement finite domain constraints by propagators using the constraint propagator interface of DFKI Oz.

The first part of the document is a tutorial explaining the concepts of the interface by the means of examples. We will implement a variety of propagators and give the complete source code.

The second part of the document is a reference manual describing each abstraction provided by the interface.

Available as postscript or pdf.

The Oz Notation
Martin Henz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This report defines how Oz program text is transformed into an Oz Core program. Oz Core is a sublanguage of Oz designed to minimize syntactic complexity. Oz Core serves as the base for the definition of the semantics of Oz. Technically, Oz Core allows to use several programming paradigms, including functional, constraint and object-oriented programming. Being a purely relational language, however, Oz Core does not provide easy notational access to programming methods from these paradigms, making it hard to fully exploit the capacities of the language.

It is such ergonomic considerations that lead to the development of the Oz Notation, where syntactic extensions provide convenient constructs for functional and object-oriented programming. The semantics of these extensions is defined in this document by their stepwise translation to Oz Core.

Available as postscript or pdf.

Last updated: Wed Apr 29 19:02:15 MET DST 1998