Multi-Paradigm Programming in Oz for
Natural Language Processing

Torbjörn Lager

Recent Updates

Old Updates


In this course, we use the programming language Oz and its implementation Mozart to explore multi-paradigm programming for natural language processing. So, what's the point? See here for my view on this!

What You Could Do Before this Course Starts

  1. Download and Install Oz/Mozart (or perhaps already installed on your ThinkPad?)
  2. Start reading the van Roy & Haridi book
  3. Browse the documentation
  4. Start doing some of the simple exercises below

Schedule/Course Plan

[Details still subject to change]



1 23/9

Introduction to the Oz programming language.
Deterministic procedural programming Functional programming
The Oz development environment.

 E222  Ch 1
2 30/9

Concurrent programming
Object-oriented programming

3 7/10
Indeterministic programming. Choice and Search. The Oz Explorer.  G312  
4 14/10
The Pragmatics of Oz Programming.  G312  
5 21/10
Concurrency in Oz (Slides)  G312  
Concurrency in Oz  G312  

Handouts etc.


Simple Exercises

Many of the following exercises were developed to suit complete programming novices. Depending on your background, you may therefore find many of them more or less trivial. However, getting acquainted with a new programming language through solving 'the usual stuff' in it is probably a good idea. Also, you are not expected to submit all of them for evaluation, only the ones that are marked as such, and they are usually a bit more challenging.

For your convenience, here are some shortcuts to the documentation that should be sufficient for solving the above exercises:

More Difficult Exercises

Practical Exercises

Larger Exercises

Even More Exercises

Book Exercises

Running out of exercises? Don't forget that the van Roy and Haridi book contains exercises as well! And so does the draft book by Duchier, Gardent and Niehren.

Roll Your Own Exercises

Your help in designing more interesting exercises would be greatly appreciated! Send the exercises, complete with your own ideas of good solutions, to

Deny's Exercises

[Deny's may want to suggest something here...]


As part of the examination of this course, you are required to hand in a project. The level of difficulty should match your current programming skill and experience. Ideally, you are able to implement something relevant to your master's thesis project. In case you're not sure what to do, you may want to consider the suggestions listed below.

Library/Toolkit Projects

Demo Projects

Existing Resources

A number of components that you may want to make use of in your own projects.

Components in the Mogul

Other Components - not (yet) in the Mogul

Relevant Readings

Text books

Relevant Links


The following is required: