[<-] [ ^ ] [->] Previous: Design of an Interpreter Up: Use in Teaching

Assignment Plan

Given a template for the base language CORE, a variety of assignments can be created out of straightforward extensions. For the 1993 class, these extensions were additional data types and nestable functions - the mini-language RIF. This project had been run in previous years. For 1993, the modification was to work in C++ and WEB with a fully annotated WEB implementation of CORE. Depending upon the length of the assignment various pieces of the implementation of the full language interpreter can be provided.

One issue which arose in the 1993 experiment, was the tendency of some of the lower ability students to ignore WEB completely and try to create the WEB document at the end. This invariably produces a poor result, but it highlights a conceptual block that many of these students seem to experience: despite very clear direction they will not sit down and try to sort out all the design details before they start coding. For any complex task they often end up in trouble. One way out this, perhaps, would be to set the preliminary design document alone as an entire assignment, including no code apart from data structures. The lesson would be reinforced by a subsequent implementation assignment, with marks given for following the same design as far as was feasible. Not only would this enforce the design exercise, it would also provide practice in WEB and [LaTeX] syntax independent of programming problems.

Two B34 assignments required the use of WEB, too small a sample to make any real assessment of improvement in design skills, although the success rate in the second assignment was higher (it may just have been easier). However, since the objective is to develop design, documentation and communication skills, it should be used for all programming assignments. In such a case it should perhaps appear with [LaTeX] in the first half of the year. Note that FWEB, the one used here, supports a range of different source languages and mixed language programming. It does not, unfortunately, support Modula-2 at the present time. To introduce WEB earlier would involve creating such support.

cwj@cs.anu.edu.au