by Torsten Ullrich and Dieter W. Fellner
The development of a software solution can be divided into three steps: algorithm design, software design and implementation. Although all the stages belong together, many differences exist between them. During the design of an algorithm, many programming details such as data types are almost unimportant (as long as it is not the design of a numerical algorithm). Books on algorithms therefore frequently use some kind of pseudo-code, which does not distinguish between the many data types. For example, you do not need to know how many bytes are used to store a graph in order to understand Floyd-Warshall's algorithm. The first time these details need to be discussed is during software design. In this phase, data types are important, as good design should be reflected in an implementation and vice versa. Thus, in choosing design tools, the differences between algorithm and software design should be allowed for. Algorithms should not be designed in a system programming language (such as C/C++), but rather in a flexible environment that allows the designer to concentrate on concepts rather than on implementation details.
Scripting languages offer just such a flexible environment, and allow algorithms to be designed using rapid prototyping techniques. As John Ousterhout has written in Scripting: Higher Level Programming for the 21st Century (1998), "Scripting languages such as Perl and Tcl represent a very different style of programming than system programming languages such as C or Java. Scripting languages are designed for 'gluing' applications; they use typeless approaches to achieve a higher level of programming and more rapid application development than system programming languages. Increases in computer speed and changes in the application mix are making scripting languages more and more important for applications of the future."
This framework is a good basis for online tutorials. Included and ready-to-run scripts are able to replace simple applets, and offer many more possibilities and no drawbacks. Furthermore these scripts are the perfect environment in a blended learning setting: demo applications can be started via Web browser and can be modified just-in-time. Such modifications can be made during a lecture or within a drill-and-practice session. Students who use this framework do not have to implement standard program frameworks such as data input routines, matrix multiplications and user interfaces, but instead can concentrate on the algorithms they should learn. In the future, static compiled applets will be transformed into interactive scripts which can be modified online
Torsten Ullrich and Dieter W. Fellner
Institute of Computer Graphics and Knowledge Visualization
Graz University of Technology, Austria