Animated Code Annotater

30/8/2006: AnnAnn updated. New version uses cross-platform, single HTML file

The Animated Code Annotater, hereafter referred to as AnnAnn, is a simple tool that assists teachers of programming languages to produce online explanatory material about writing programs.

It works from the premise that new programs are often created by starting out with a familar base (e.g. a hello world program) and then repeatedly making small changes (additions, alterations, movements) until the new program is finished. Each small change is accompanied by an explanation, probably referring back to material that has previously been taught at a conceptual level.

AnnAnn takes a base program and a file of annotated changes and produces an HTML file which shows a short description of each change that needs to be made, highlights the code that needs to be changed and the revised code with the changes highlighted. Each stage in the description is clicked through by the reader.

AnnAnn has been used extensively by the author as a lecturing tool for teaching programming to large groups. It has also been used in self-study environments for helping to understand complicated pieces of code.

Status of Development

The compiler is in beta status, having languished for several years in development hell. (Its output has still been used in lectures.) For information and source code, please contact lac @ ecs.soton.ac.uk. The so

Catalog

The following table catalogues all the 'explanations' that I have produced over the last couple of years for the courses that I have been involved in. All examples have been recompiled on the new compiler.

ExampleCourseURL
Arnow & Weiss Laugher (parameters)Programming Principleslac/laugher/Laugher.html
Arnow & Weiss Searching (Binary)Programming Principleslac/searching/Binary.html
Arnow & Weiss Searching (Simple)Programming Principleslac/searching/Simple.html
Arnow & Weiss SortingProgramming Principleslac/searching/Sorter.html
Arnow & Weiss TagReaderProgramming Principleslac/WS/TagReader.html
C++ Operator OverloadingAdvanced Programmingnotes/comp1003/BEARS/bears/bears.html
DHTML Web ServicesAdvanced Web Technologiesnotes/comp3016/xml_course/Slides/wsjs/JavaScriptWebServices.html
DHTML XML validationAdvanced Web Technologiesnotes/comp3016/xml_course/Resources/Validation-IE5/Validate.html
Etch-a-Sketch Applet (Events handled by Inheritance)Advanced Programming+lac/sketch.java/Sketch.html
Etch-a-Sketch Applet (Events handled by Listeners)Advanced Programming+http://www.ecs.soton.ac.uk/notes/comp1003/events/Sketch.html
Etch-a-Sketch Applet AWT GUIAdvanced Programming+notes/comp1003/Lecture1/gui.java/GUI.html
Etch-a-Sketch Applet Swing GUIAdvanced Programmingnotes/comp1003/events/gui.html
For LoopsProgramming Principleslac/forloop/Loop.html
Game of LifeAdvanced Programminglac/life/Life.html
Hello World AppletProgramming Principles+notes/comp1003/Lecture1/applet.java/HelloWorld.html
Java Hello World -> C++Programming Principleslac/C++/HelloWorld.html
JAVA XML ValidationAdvanced Web Technologiesnotes/comp3016/Validation-Xerxes/validate.html
Java Xerxes XML DOMAdvanced Web Technologiesnotes/comp3016/DOM-Xerxes/PizzaPrices.html
Reading Lines from A FileProgramming Principlesnotes/~lac/file.java/Cat.html
Read Lines from a Web PageProgramming Principleslac/url.java/NetCat.html
Reading Lines, Integers and Doubles using a StringTokenizerProgramming Principleslac/lines.java/Reading.html
Shapes Lecture (raw circle)Advanced Programminglac/shapes.java/Circle.html
Shapes Lecture (red circle from scratch)Advanced Programminglac/shapes.java/RedCircle.html
Shapes Lecture (red circle inherited)Advanced Programminglac/shapes.java/RedExtend.html
Shapes Lecture (shape superclass)Advanced Programminglac/shapes.java/Shape.html
Shapes Lecture (inherited circle)Advanced Programminglac/shapes.java/CircleShape.html
Shapes Lecture (shapes interface)Advanced Programminglac/shapes.java/Interface.html
Shapes Lecture (square)Advanced Programminglac/shapes.java/Square.html
Shapes Lecture (triangle)Advanced Programminglac/shapes.java/Triangle.html
Shapes Lecture (numbered circle inherited)Advanced Programminglac/shapes.java/NumberedCircle.html

Sample Change File

The following change file corresponds to the for loop example above: Loop.ch.

For further information, please contact the author Les Carr.