Abstract
This Full Paper in the Innovative Practice category begins by asking “can algorithms be thought of and taught as dynamical systems?” Our exploration of this idea — Algodynamics — is guided by a vision to achieve convergence between computing and engineering education. The engineering sciences share a common conceptual vocabulary originating in dynamical systems: state spaces, flows, actions, invariants, fixed points, convergence, etc. The goal of algodynamics is to build, ab initio, a framework for understanding and teaching algorithms using concepts from dynamics. This allows us to teach computing and algorithms as an engineering science. Engineers work with models. In algodynamics, models are expressed using transition systems rather than as pseudo- code or programs. This allows a crisp representation of two important classes of computation: sequential algo- rithms as ‘discrete flows’ (iterative systems) and interactive applications as ‘action flows’ (transition systems). The focus of this paper is on the first of these classes, algorithms, but using ideas from the second, viz., tran- sition systems. In this framework, algorithms emerge as convergent iterative systems. Due to their non-interactivity, iterative systems may be hard to understand. The student may trace through the algorithm, but to know how the parts of the algorithm work together requires ‘opening up’ the algorithm and situating it within the more general class of interactive systems. Doing so helps the student to understand the machinery of an algorithm in an incremen- tal and modular way. The student interactively solves the algorithmic problem, experimenting with various strategies along the way. At each stage of the design, interactivity is traded for automation