You can ftp a version of our teaching package from ftp://ftp.cs.au.dk/pub/beta/teaching. It includes a course description including demo examples.
In addition to our 45% educational discount on packages (so-called educational licenses), we have another offer that applies to educational licenses.
Educational institutions holding an educational license for the Mjølner BETA System on any platform are allowed to distribute the Personal Edition version of the Mjølner BETA System to any students in any course in which the Mjølner BETA System is used as a teaching vehicle. These PE systems will not include printed documentation and discs/tapes.
The educational institutions will have to administrate the distribution of the PE systems and make sure that the students know about the MBS license conditions and send us a list of students getting a copy of the PE system.
This short note is an attempt to give you my latest experiences in teaching BETA in a second-year course at Computer Science Department, Aarhus University, Denmark.
During the last three 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 BETA 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 XtEnv/AwEnv user interface framework. I'm not lecturing on UI design, but merely presents the XtEnv 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 introducing the students to the object-oriented database for BETA (pre-product version).
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, XtEnv, 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, 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.
Under consideration for next years course, is introduction of distributed OO programming, based on the BETA distributed object system (currently not released).
The teaching material is the BETA book, selected Mjølner BETA 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 experiences, 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", Prentice-Hall, 1993. In that chapter, we describe our teaching experiences along with other teaching experiences.
That's all for now. I hope that I have given you some insight into our experiences in teaching OO using the Mjølner BETA 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.