7800/8800 Project List 2008

A general word

Most of these projects are software oriented. I expect that the complete development cycle will be gone through. That is each project will consist of: requirements elicitation and specification, system design, test planning, implementation, and verification. Please see "How to do a design project with me".




Decaf is a constraint-based interactive animation system developed by Naeim Semsarilar as a 7800/8800 project. Animations are created by using a dragging objects from a pallet to an animation surface and by specifying constraints on the behaviour of the objects. In a future version of Decaf, constraints will be attached to the states and transitions of a UML-style state chart, allowing complex behaviours and interactions to be programmed.

Current State: A solid foundation has been laid. A framework exists to which we need to add more object kinds, the state charts, additional constraint satisfaction methods.

Next steps

PLAY: Programming Languages And Youngsters

Seymour Papert's LOGO language (early '70s) was premised on the idea that young children can learn, enjoy, and benefit from programming. What should the Logo of the 00's be? Should it be a visual programming language that can be learned without picking up a book? Should it require no keyboarding? Should it allow children (and adults) to solve successively more complex problems? Should it allow competitive programming in which players compete by writing the most efficient or successful program? If these questions interest you, and you don't mind some heavy UI programming, this project could be for you.

Current State: Initial musings. An interesting project was done a few years ago.

Next steps: Over the summer I would like to define a common environment and programming paradigm; and two child-oriented programming languages, one textual and one graphical. The aim is to eventually compare the two approaches in experimental conditions. The implementation part then consist of implementing these parts. This could easily be a multi-person project with an obvious division of labour among the two languages and the common environment.

The GEFN Editor

The GEFN editor consists of three main layers.

Current state: Over the Winter of 2008, initial work was done on GAF and GXE. I plan to continue this into the summer.

Next steps: Given that I'm working on this through the summer, I'm not really sure how a student projet fits in. One possibility is to develop a parallel top layer that is for something else. This would prove (and improve) the utility of the lower two layers.

The Teaching Machine

The Teaching Machine (see http://www.engr.mun.ca/~theo/TM/) is an interpreter for C++ and Java that visually exposes the underlying operation of the computer.

Current State: The Teaching Machine has a mature core, C++ subsystem, and Java subsystem. It has a plug-in framework for extensibility.

Next Steps: There are several areas of improvement for the TM.

Joint with Michael Bruce-Lockhart.

Visual Regular Expression Editor / Visual JavaCC Editor / Visual ANTLR

In a number of applications, we must edit regular expressions. For example in the JavaCC parser generator system, regular expressions are used to specify the lexical syntax and grammatical syntax of a language. ANTLR is similar. A nice graphical syntax for regular expressions is a "rail-road" diagram — a sort of a state-diagram or flow-chart. A nice tool would be an editor for JavaCC in which the lexical and grammatical components are specified using a visual editor for regular expressions displayed as railroad diagrams.

Here is an ascii version of a rail-road diagram for (a|b)*c

----------------------------------------------> c ------->
       /                                 \
       |        /---- a <----\           |
       \       /              \          /
        \-----<                >--------/
               \              /
                \---- b <----/

Current Status: We have a rail-road diagram editor. Although it might need a bit of work.

Next steps: I would see an editor for JavaCC as structured into two layers. The first layer is a rail-road diagram editor. The second layer would apply the second layer to a specific language (JavaCC and/or ANTLR), including input and output. I had a Master's student develop the first layer. Now we need to improve that and build the second layer (as an Eclipse Plugin) on top of it.

Immersive Display Technology

In interacting with a computer simulation, such as a video game or a fly-though of an architectural design, it is hard to forget you are sitting at a computer. This is partly because your peripheral vision is seeing your usual office or home environment. The aim of this project is to develop the hardware and software needed to use a curved screen that fills the user's visual field to view 3D graphics.

Joint with Paul Gillard (although he may not know it yet).


I'd be very interested in supervising a project of your own devising. As most of you know, my main interests are in software engineering, formal approaches to software engineering, hardware design languages, and programming languages. Come discuss it with me.