«Creativity Support for Computational Literature By Daniel C. Howe A dissertation submitted in partial fulfillment of the requirements for the degree ...»
This question may be of particular importance to computer science educators as it suggests a potential reconsideration of what we consider “core” in the discipline. It would Some operations in Max/MSP are ordered according to their position in the interface.
appear that, in the light of new environments like Max, we would either have to delay topics like variables and iteration (usually among the first taught), or we would have to abandon Max-like environments as teaching tools (to the degree that they obscure these concepts), at least as first-languages for students. On the other hand, first learning a “procedurally-oriented language” does not appear to cause an analogous slowdown for students learning Max. In fact it seems, perhaps surprisingly, to have little affect whatsoever, at least in our experience with students in the PDAL class. While there may be minor frustrations for students with traditional backgrounds (having learned a language like C or Java) who try to learn Max, when trying to set or get a simple variable, for example, these appear to pass quickly in most cases.
3.4 Programming for Digital Art and Literature: the Teaching Environment.
To further illustrate this point, we can place the environments discussed thus far on a continuum; from Guzdial’s Media Computation class at Georgia Tech, which uses the Python language at one end, to the various classes at CMU and elsewhere that use the Alice environment, at the other. Python, as used in the Media Computation class, represents a general-purpose language with little specific support either for the arts in general, or for the specific exercises in the class. CMU’s Alice environment, on the other hand, is highly tailored to the course content, but less generalizable to programming in general.
Although students using the Alice environment appear to explicitly learn core concepts (as opposed, for example, to those starting with Max/MSP), Alice does not provide a smooth transition path to “mainstream” languages, e.g., those used in business and research, or even in the arts. While it may be argued that this signals a problem with mainstream languages rather than a problem with visual drop interfaces like Alice or Max, the situation does not appear likely to change in the near future, and thus presents an added difficulty for students as they progress. Of course, the characterizations above are mostly anecdotal and representative only of our experience with these environments in a classroom context. Further research is clearly needed to assess the affects of these different tools on the learning process, both within and beyond a student’s first few exposures. Some initial steps in this direction has been taken by Tew et al.  in their comparison of three courses at Georgia Tech, and also in the evaluation of the RiTa tools presented in Chapter 5. One potentially useful experiment would be to teach the same material with a range of different toolsets (e.g., a general-purpose language, a RiTa-like approach, and a custom environment, e.g., Max or Alice) and compare student confidence, efficacy and comprehension of core concepts.
3.4.1 Programming Languages in an Educational Context To continue our comparison, we might also consider the level at which a teaching language operates on a similar continuum. On the one side of such a continuum we would place highly specific environments, well-suited for a particular purpose. An example might be Adobe’s Photoshop, an image manipulation program with minimal programmatic capabilities (macros, actions, filters, etc.). It is highly optimized for its purpose and relatively intuitive for users, at least those familiar with the context. On the other hand, it is extremely difficult (if not impossible) to use in other contexts like sound or video manipulation, and as such, teaches little to users that can be generalized to other domains. Perhaps of more concern, at least in an arts context, is the way it narrows the range of possible outputs, so that artifacts produced tend to appear similar, and bear the “stamp” of the tool, as is often noted with various Photoshop filters54.
For an interesting take on this, see Adrian Ward’s Auto-Illustrator project (at http://www.mediaartnet.org/works/autoillustrator/), described in detail in Weiss .
On the other end of the spectrum we find general-purpose languages, like C, Python, or Java. When applied to a specific context, these languages tend to require a significant amount of scaffolding code before new users are able to accomplish even basic tasks (see the Java applet example in Technical chapter). While nearly all concepts are applicable across such general-purpose languages (learning one such language will generally decrease the time and difficulty to learn a second), these often prove frustrating for new students who wish to quickly translate their ideas into working programs. At the extreme end of this paradigm we might imagine Assembly language, or even a Turing machine. These formalizations are capable of computing just about anything one might imagine, but are so low-level as to be
impractical for almost everything. As Mateas  states:
Any tools that reduces the friction for a certain class of programs, will dramatically increase the friction for other classes of programs. Thus, programming tools for artists, such as Flash, make a certain style of interactive animation easy to produce, while making other classes of programs difficult to impossible to produce. Every tool carries with it a specific worldview, opening one space of possibilities while closing off others.
Guy Steele demonstrates this situation quite palpably in his paper, “On Growing a Language” [Steele 1998], in which he allows himself only to use words which are either “primitives” or those he has defined previously in the talk, mirroring the difficulty of using a
language without adequate library support. He says:
[w]e have to do this a lot when we write real computer programs: a thought that seems like a primitive in our minds turns out not to be a primitive in a programming language, and in each new program we must define it once more… This is the sort of thing that makes a computer look like a person who is but four years old. Next to English, all computer programming languages are small; as we write code, we must stop now and then to define some new term that we will need to use in more than one place. Some persons find that their programs have a few large chunks of code that do the “real work” plus a large pile of small bits of code that define new words, so to speak, to be used as if they were primitives… I hope that this talk brings
Steele, like others, advocates libraries as a solution to this problem, although he specifies that the libraries should be created by the community of users, rather than included as part of the original language [Steele 1998]. A language’s ability to facilitate growth and development in this way thus becomes a primary criterion for its adoption. This maps closely to the RiTa approach, in which library features are added in an ad-hoc manner as suggested by students and practicing artists using the tools on a day-to-day basis. Thus the library is extended in an organic fashion, not by imagining potential uses, but instead by reacting to the actual needs of users. In this way, the functionality of the system does not grow to become overwhelming (due to sheer size and variety of uses) to new users. This approach is based directly on the model used in the Processing community (in contrast to Java itself, which includes hundreds of supplementary libraries as part of its distribution), which has proven to be highly successful in generating an active community of users and developers, contributing, and extending libraries in this incremental, as-needed fashion.
Another important way in which PDAL/RiTa differs from the other media-centric approaches discussed is its focus on language and literature. The use of natural language as a central element in digital media is potentially advantageous for a number of reasons.55 First we can consider the ways in which language, and specifically literature, has been of unique historical importance in computer science. As described further in Chapter 4 (Prior Work), natural synergies between the two fields have led to a range of important results in both.
Secondly, the reflexively informing relationship between natural and programmatic Though more research is required before this can be stated unequivocally.
languages can be quite productive. A focus on the former naturally and inevitably brings awareness of the unique (and sometimes arbitrary) properties of the latter, and vice versa [Howe and Soderman 2009]. As Stone  describes, “[students] simultaneously get experience with central computer science ideas—data structures, unification, recursion and abstraction—and develop an effective starting point for their own subsequent projects.” For example, when first discussing ways of generating sentences with students, one of the first points that naturally arises is the distinction between context-free (programmatic) and context-sensitive (natural) languages. This key insight, which becomes quite tangible for students when presented with simple examples, opens immediately onto a host of important and central topics in computer science; from Turing machines, to Chomsky’s language hierarchy, to state machines and regular expressions, to parsers and compilers and so on. No matter how immediate the response to a compelling visual image created programmatically56, there is no such equivalence on a conceptual level when dealing with visual media. While one can imagine other ways of finessing this lack of conceptual relationship, what often happens is that media-based assignments and computer science concepts are addressed separately, and the motivation for learning the latter grows less clear.
3.5 Pedagogically-inspired Design Considerations The above discussion of pedagogy in computer science (generally), and the pedagogical implications of using certain classroom tools and environments (specifically), highlights the importance of context in educational environments attempting to teach programming and computer science. This focus on context is an essential element of Via a convolution filter, for example, as assigned in Guzdial’s “Media Computation” course.
constructivist-inspired pedagogy. Alison Tew  describes context as “an application area for the content being learned that is familiar to and valued by the students in the course.
A contextualized course applies its domain not only to projects, but to lectures, descriptions, examples, and assignments.” She notes further that a range of studies have shown the value of such motivating contexts for teaching introductory computing courses, citing researchers who have observed that teaching within a context provides a means to attract and retain students— particularly those from underrepresented populations [Forte and Guzdial 2005]—and as a motivator for students to do work beyond that which is required [Forte and Guzdial 2004, [Kelleher 2006; Yarosh and Guzdial 2007], Furthermore, she describes how these effects appear to persist for both majors and non-majors, as well as for students at a range of institutions [Tew et al. 2005].