The Mjølner System: Experience on Teaching BETA

by

Jørgen Lindskov Knudsen, Computer Science Department, Aarhus University
Ny Munkegade 116, DK-8000 Aarhus C, Denmark
E-mail: jlknudsen@cs.au.dk, Phone: +45 89 42 32 33, Fax: +45 89 42 32 55

This short note is an attempt to give you my experience in teaching BETA in a second-year course at Computer Science Department, Aarhus University, Denmark.

During the last five years, I have been the responsible for our second-year course on programming, especially dealing with 'programming-in-the-large'. The language used in that course is BETA. During the students first year, they are taught a polymorphic programming language (Trine), locally developed for that particular course. The emphasis of that language is simplicity and elegance in description of datatypes (including recursive) and algorithms.

In the second-year course, we teach them BETA, since we find that OO is the right tool for teaching students about the structure and architecture of large programs. OO gives the conceptual framework for organization of large volumes of information and structures. The course is two hours lectures a week, and three hours tutoring (exercise solving with student tutors). The course is running in 15 weeks.

In the course, I start out with a fairly traditional introduction to the BETA language, emphasizing the new facilities, and motivating the new facilities by discussing problems in large programs and/or the problems of organizing domain knowledge. Following (and slightly integrated with) this introduction to BETA, I teach the students about the conceptual framework underlying the design of BETA, and underlying our approach to OO programming, including a little on OO analysis and OO design.

Following that, I begin discuss program modularization, exemplified by introducing the fragment system from the Mjølner System. Emphasis is here put on modularization and information hiding, and less emphasis on issues like multi-platform issues (machine-dependent bodies, in fragment system terminology).

Following modularization, I introduce multi-sequential programming in the form of co-routines, and alternating and concurrent process in BETA, and using systemEnv.

Then I continue on user interface programming by introducing the students to the Lidskjalv user interface framework. I'm not lecturing on UI design, but merely presents the Lidskjalv framework as a tool for making graphical user interfaces.

The course ends with dealing with database issues: introduction to the database models, architecture and components of a database system, and issues for large databases: concurrency, transactions, recovery, and security. Object-oriented database technology is introduced by giving an overview of the most important features of an OODB.

The database part of the course have been introduced earlier in the course by introducing the BETA persistent store as a single user storage medium for BETA objects.

During the course, the students are asked to make weekly exercises in using the BETA language and the presented libraries (basic BETA libraries, fragment system, systemEnv, guienv (Lidskjalv), and persistent store).

During the course, the students have to make one major assignment, which is three weeks long, where they must design and implement a fairly large system, based on requirements specified by me. The system usually includes aspects of UI programming, persistent store programming, and general OO design.

The students are introduced to the SIF hyper-structure editor, the Freja CASE tool, the Frigg User Interface Editor, and the Valhalla source-level debugger, and uses these tools (more or less). There are no requirements for the students to use these tools, and some students prefer the old textual based tools (the emacs editor and inserting debugging printouts in their programs). Available for the emacs editor is a BETA editing mode.

The teaching material is the BETA book, selected Mjølner System manuals, and material from two (English) books on the database issues.

Mjølner Informatics offers a teaching package, describing a series of lectures, and a set of exercises, along with a set of demo programs. It is the aim, that this material is updated regularly, partly based on our teaching experience, and adding new exercises etc. from our course

I would also like to direct your attention to chapter 40: "Teaching Object-Oriented Methodology and Languages" from the book: Object-Oriented Environments: The Mjølner Approach. In that chapter, we describe our teaching experience along with other teaching experience.

That's all for now. I hope that I have given you some insight into our experience in teaching OO using the Mjølner System. I would like to summarize, that our students (generally) do very well in this course, and that they demonstrate very good understanding of the issues of object-oriented programming, and programming in the large.

Please feel free to ask questions and send comments on our approach. It is always interesting to be confronted with other people's insights into what one is doing.

More Information

For further information, see
Mjølner System: Teaching Package.