As I found with many of the thinking skills for creativity presented in Sparks of Genius, algorithms and modelling are closely related. Composer Igor Stravinsky’s advice to an author encountering issues during the act of creation was to find a model, or “a predecessor what had already solved his type of narrative problem, then modify the solution to his own ends” (Root-Bernstein & Root-Bernstein, 1999, p. 230). This describes the role of an algorithm in general problem solving: an established solution to be used as reference for solving particular problems. Think of a recipe as an established way to create a dish; cooks may use it as a starting point and modify it provide their own personal interpretation. This reflects the idea idea that creativity is finding a “variation on a theme” (Henriksen, Mishra, & Deep-Play research group, 2014).
Algorithms lie on one end of the spectrum of problem solving techniques, where following step-by-step instructions can accomplish well-defined tasks, but most learning is much messier. We therefore often look for other, less rigid techniques while still keeping algorithms on hand as models of prior solutions. Moving along the spectrum into ill-defined tasks, heuristic approaches can lead to “good enough” solutions. This includes using “rules of thumb”, trial and error, and making educated guesses (Simon & Newell, 1958). On the opposite end of the spectrum lie solutions arrived at by chance. While these are by their nature unpredictable, they can be prepared for through diverse experiences and have led to discoveries ranging from penicillin to silly putty.
My focus on computer algorithms provides the needed context to consider the topic across other dimensions. To approach it temporally, early computers existed as ideas rather than physical machines. Charles Babbage’s Difference Engine was developed in the mid 19th Century and was the first design for an automatic computing machine, yet was not built until 2002 for use in a museum display. The design provided a model for mechanical computing that provided inspiration for others, including Ada Lovelace. The daughter of Lord Byron, she became fascinated by the idea and wrote extensive notes on how instructions could be provided to the machine, creating the first computer programs.
The modern computer is based on a Turing machine, first proposed by Alan Turing in 1937. He built upon work from Kurt Godel (who is the focus of Douglas Hofstadter’s first book, Godel, Escher, Bach) and explored if and how problems can be computed. In other words, “if it is possible to specify a sequence of instructions which will result in the completion of the task when they are carried out by some machine. Such a set of instructions is called an effective procedure, or algorithm, for the task” (Barker-Plumber, 2013). Turing machines are not physical machines at all, but mathematical models that describe a set of general machines that can execute an algorithm. Enthusiasts such as Mike Davey have still created physical models to better communicate how Turing Machines work, as seen below. By moving along a strip of tape to access and write data, some of which are instructions on how to manipulate the data, i.e. an algorithm.
Another way to view algorithms would be from high level logic to low level implementation, with many layers of abstraction in between. To use the example of a recipe again, consider preparing filet mignon. A discussion of how to cook beef found in cookbooks such as The Joy Of Cooking would be a high level of abstraction. A specific recipe for filet mignon with blue cheese and a wine sauce would provide a specific example, but still exist only as an idea. Implementing the recipe by preparing the steak would cross over into the physical world and produce a tangible end product. We could go into even more detail by examining what is happening physically and chemically to the meat as it’s cooking, as Alton Brown often does. At some point, information becomes overwhelming and irrelevant the further down we go, but it can be helpful to understand what’s occurring at a low level to guide the high level instructions.
The same traversal across layers of abstraction could be done with computer algorithms, which I chose to show through the creation of a model, detailed in a followup post.
Barker-Plummer, D. (2013). Turing Machines, The Stanford Encyclopedia of Philosophy, Summer 2013 Edition. E. Zalta, (Ed.). Retrieved from http://plato.stanford.edu/archives/sum2013/entries/turing-machine/.
Henriksen, D., Mishra, P., & the Deep-Play research group (2014). Twisting Knobs and Connecting Things: Rethinking technology & creativity in the 21st Century. Tech Trends, (58)1, 15-19.
Simon, H. A., & Newell, A. (1958). Heuristic problem solving: The next advance in operations research. Operations research, 6(1), 1-10.