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.
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
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.
| Example | Course | URL |
|---|---|---|
| Arnow & Weiss Laugher (parameters) | Programming Principles | lac/laugher/Laugher.html |
| Arnow & Weiss Searching (Binary) | Programming Principles | lac/searching/Binary.html |
| Arnow & Weiss Searching (Simple) | Programming Principles | lac/searching/Simple.html |
| Arnow & Weiss Sorting | Programming Principles | lac/searching/Sorter.html |
| Arnow & Weiss TagReader | Programming Principles | lac/WS/TagReader.html |
| C++ Operator Overloading | Advanced Programming | notes/comp1003/BEARS/bears/bears.html |
| DHTML Web Services | Advanced Web Technologies | notes/comp3016/xml_course/Slides/wsjs/JavaScriptWebServices.html |
| DHTML XML validation | Advanced Web Technologies | notes/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 GUI | Advanced Programming+ | notes/comp1003/Lecture1/gui.java/GUI.html |
| Etch-a-Sketch Applet Swing GUI | Advanced Programming | notes/comp1003/events/gui.html |
| For Loops | Programming Principles | lac/forloop/Loop.html |
| Game of Life | Advanced Programming | lac/life/Life.html |
| Hello World Applet | Programming Principles+ | notes/comp1003/Lecture1/applet.java/HelloWorld.html |
| Java Hello World -> C++ | Programming Principles | lac/C++/HelloWorld.html |
| JAVA XML Validation | Advanced Web Technologies | notes/comp3016/Validation-Xerxes/validate.html |
| Java Xerxes XML DOM | Advanced Web Technologies | notes/comp3016/DOM-Xerxes/PizzaPrices.html |
| Reading Lines from A File | Programming Principles | notes/~lac/file.java/Cat.html |
| Read Lines from a Web Page | Programming Principles | lac/url.java/NetCat.html |
| Reading Lines, Integers and Doubles using a StringTokenizer | Programming Principles | lac/lines.java/Reading.html |
| Shapes Lecture (raw circle) | Advanced Programming | lac/shapes.java/Circle.html |
| Shapes Lecture (red circle from scratch) | Advanced Programming | lac/shapes.java/RedCircle.html |
| Shapes Lecture (red circle inherited) | Advanced Programming | lac/shapes.java/RedExtend.html |
| Shapes Lecture (shape superclass) | Advanced Programming | lac/shapes.java/Shape.html |
| Shapes Lecture (inherited circle) | Advanced Programming | lac/shapes.java/CircleShape.html |
| Shapes Lecture (shapes interface) | Advanced Programming | lac/shapes.java/Interface.html |
| Shapes Lecture (square) | Advanced Programming | lac/shapes.java/Square.html |
| Shapes Lecture (triangle) | Advanced Programming | lac/shapes.java/Triangle.html |
| Shapes Lecture (numbered circle inherited) | Advanced Programming | lac/shapes.java/NumberedCircle.html |
For further information, please contact the author Les Carr.