Memorial University   THEODORE S. NORVELL MUN Engineering

Software I've Written

The Teaching Machine
Theodore S. Norvell and Michael Bruce-Lockhart
1997-- present

Abstract: The Teaching Machine is a program animator. It gives a view into an abstract computer, as that computer is executing a program written in a high-level language.

See The Teaching Machine Site. See also my publications page.

Take Back Control
Theodore S. Norvell
2015 -- present

Abstract: Take Back Control (or TBC) is a library to allow software developers to write code for event driven systems in an uninverted style, even while the underlying frameworks use inversion of control.

So far (late 2015) I've used it for building user interfaces in JavaScript, although it can also be used to tame assynchronous http requests, and to build GUI code in various other languages.

See Take Back Control on GitHub. See also my publications page and blog

MUN Thesis Template
Theodore S. Norvell
2010-- present
Abstract: A thesis template for Scientifice Word and Scientific Workplace, meeting the requirements for Memorial University.

Click here to get it.

A Parsing Monad for Haskell
Theodore S. Norvell
Spring 1999
Abstract: A parsing monad module in Haskell. Features limited backtracking.

Click here to get it

Theodore S. Norvell
Winter 2000
Abstract: Embedding Perl expressions and statements within HTML files for server side scripting and automated page building.

Click here for more information

UltraEdit word list for Haskell
Theodore S. Norvell
Summer 2000
Abstract: My favourite programming editor under Windows is UltraEdit-32 from Since I program in Haskell from time to time I built a word list that helps UltraEdit to syntax colour Haskell programs.


Mark-up C++ or Java
Theodore S. Norvell
Winter 2001
Abstract: This applet is useful for converting C++ or Java files to HTML. If you want a copy, let me know.

URL to String
Theodore S. Norvell
Winter 2001
Abstract: This applet is useful for reading files over the internet.

Source code

Theodore S. Norvell
Summer 1996
Abstract: CHEAT stands for Classification Heuristic for Educational Assignments and Tests. This application assigns a degree of similarity to each pair of a set of source files. It can be tuned for the particular programming language; C, C++, and Turing are supported, but it is easy to extend;  it could also be used for prose. It is either impervious or resilient to most methods of modifying source files to disguise their similarity. More than that, I'd rather not say.
For source code (UNIX/C++/lex) email me. Available only to educators. It is currently free, but requires a license agreement.
Theodore S. Norvell
Summer 1998--present
Abstract: Autotest is used to test student assignments against a battery of tests.
Alpha release. If you use it and find it useful, let me know.
A SAX content model parser.
Theodore S. Norvell
Summer 2002
Abstract: SAX is an API for XML processing widely used for parsing XML. In SAX 2.0, a widely implemented extension makes the content models from the DTD available as strings. This package parses those strings to produce both regular expressions (represented as trees) and finite state automata.
This is really still an alpha release. Try it if you like, but please let me know of any problems. Zip file
A JJTree java parser
Theodore S. Norvell
Summer 2002
Abstract: This is the Java parser for the Teaching Machine. It may still have some flaws and you'll have to implement a couple of the classes your self. The point of this is to make an abstract syntax tree that is more digested than the parse tree created by the example grammars that come with JavaCC. Directory
Better monitors for Java
Theodore S. Norvell
Abstract: This is an implementation of monitors for Java. It is based on Hoare's version of monitors, but extends it by treating assertions, as well as conditions and monitors as objects. This allows assertions to be checked and reduces the need to repeat assertion code more than once. Follow this link.