«Creativity Support for Computational Literature By Daniel C. Howe A dissertation submitted in partial fulfillment of the requirements for the degree ...»
In his talk at a symposium held in 1961 to celebrate the 100th anniversary of M.I.T., and published in the collection Management and the Computer of the Future [Greenberger 1962], Perlis recognized and expressed a number of issues and concerns that are still central today. In his talk, entitled “The Computer in the University”, he noted that most university computer use is characterized by “extensions of previously used methods to computers; and they are accomplished by people already well trained in their field who have received most of their training without computer contact.” As Mateas points out, “this approach is similar to the way computing is currently taught in media arts programs, primarily as a black box tool (substitute Photoshop, Director and Flash for Algol 60) rather than as a process-based medium with its own unique conceptual possibilities” [Mateas 2005].
Perlis goes on to assert that the purpose of a university education, regardless of the particular field of study, is to help students develop an intuition for which problems and ideas are important or relevant ( “sensitivity… a feeling for the meaning and relevance of facts”), to teach students how to think about and communicate models, structures and ideas (“…fluency in the definition, manipulation, and communication of convenient structures, experience and ability in choosing representations for the study of models, and self-assurance in the ability to work with large systems…”) and to teach students how to educate themselves by tapping the huge cultural reserves of knowledge (“…gaining access to a catalog of facts and problems that give meaning and physical reference to each man’s [sic] concept of, and role in, society” [Mateas 2005]. He argues that the computer plays a critical role in at least the last two areas, and, during the discussion period, agrees that computers play a critical role in the development of intuition and sensitivity as well.
As, for Perlis, procedural literacy lies at the heart of the fundamental aims of a university education, he consequently argues that all students should make contact with computers at the earliest time possible: the student’s freshman year. For 1961, as Mateas acknowledges, this is a radical proposal: all students, engineering and liberal arts students alike, should have a two-semester computer science sequence in their freshman year, this at a time when computers were still rare and esoteric. Even today, with the relative ubiquity of computers, most universities do not have such a requirement in place. This may well be due to the fact that historically, it has been challenging to introduce students to the benefits of computer science, programming, and procedural tools [Mateas 2005]. As artist-programmer Golan Levin  states, just as true literacy in English means being able to write as well as read, true literacy in software demands not only knowing how to use commercial software tools, but how to create new software for oneself and for others.
Today, everyday people are still woefully limited in their ability to create their own software. Many would like to create their own programs and interactive artworks, but fear that programming is “too hard.” The problem, it turns out, may not be programming itself so much as the ways in which it is conventionally taught.
3.2.1 The Difficulty of Teaching Programming
What hasn’t changed is that programming is still a hard activity and a difficult skill to learn. Few students will understand programming well enough after completing their first programming courses to be able to write simple programs, let alone use programming as leverage for understanding other domains. - Guzdial  Despite more than fifty years of attention from computer science educators, basic programming fundamentals remain a remarkably difficult subject for many students. As
Jenkins  argues, this situation is less than ideal:
Few computing educators of any experience would argue that students find learning to program easy. Most teachers will be accustomed to the struggles of their first year students as they battle in vain to come to grips with this most basic of skills and many will have seen students in later years carefully choosing options so as to minimise the risk of being asked to undertake any programming. This is a sad and depressing state of affairs.
While there is a range of possible explanations for this fact, the most critical
difficulties seem to stem from some or all of the following issues [Guzdial 1994]:
Assembling programs is hard. Programming languages have only a few components, • which are combined in many different ways, and learning to understand the semantic results of different combinations is complex [Schneiderman 1977]. Understanding how to combine programs to achieve particular goals is a challenge [Spohrer 1985,
Syntax is complex. When students try to combine elements, syntax gets confused, • which leads to students battling syntax problems as they struggle to understand semantic ones [Perkins 1986, Johnson 1985]. When the syntax problems are alleviated, students can focus on the semantic ones [Hohmann 1992; Soloway 1993;
Students lack an understanding of computational process. Many students do not • understand how interpretation of traditional computer languages works, e.g., where does control flow and how do variables get updated [DuBoulay 1989]. If students are presented with a simplified or clearer description of the process, they can understand their programs more easily and perform more successfully [diSessa 1985; diSessa 1991].
There is no question that many students find the study of computer science and programming extremely difficult, especially at elementary levels. In fact, it would seem that often even the most basic concepts (e.g. variables) appear to be most difficult for students [Sleeman et al. 1988; Samurçay 1989; Paz 1996]. But deep misconceptions are not limited to elementary programming. Holland, Griffiths, and Woodman  show the extent of the misconceptions held by more advanced students studying object-oriented programming. They report on a range of misunderstandings, e.g., the conflation of the concept of an object with other concepts like variable, class, and textual representation.
3.2 Constructivism, Constructionism and Generative Pedagogy Constructivism is a theory of learning, which claims that students construct knowledge rather than merely receive and store knowledge transmitted by the teacher. Constructivism has been extremely influential in science and mathematics education... – Ben-Ari Mordechai  To address the inherent difficulty of programming, educators have experimented with a range of pedagogical philosophies. Constructivism, based originally on Jean Piaget’s cognitive theories on knowledge acquisition by children, is the theory that rather than passively receiving knowledge from teachers and textbooks, students learn best when they actively construct it, building recursively on their previous knowledge and experience of the world. After many years of debate with so-called “behaviorist” educational theories, constructivism has, arguably, emerged in recent years as a dominant philosophy [Mordechai 2001], and has been applied across disciplines, from the humanities to the sciences to the arts.
Unfortunately, computer science education, where emphasis has traditionally been placed on abstraction, rather than application, has been slower than many other fields in this respect. As
Mordechai  states:
Constructivism has been intensively studied by researchers of science education (Glynn, Yeany and Britton 1991) and mathematics education (Davis, Maher, and Noddings 1990; Ernest, 1994), to the extent that “radical constructivism represents the state of the art in epistemological theories for mathematics and science education” (Ernest, 1995, p. 475). However, there has been much less work on constructivism in computer science education (CSE)... While many computer science educators have been influenced by constructivism, only recently has this been explicitly discussed in published work… The basic tenet of cognitive constructivism is the student’s creation of meaning.
While Piaget tended to emphasize learning through play, the basic theory supports a range of educational activities, as long as the student’s construction of meaning is a primary concern.
Constructivist educators emphasize having students take control of their own learning, and de-emphasize lectures and other transmissive forms of instruction [Guzdial 1997].
3.2.2 Constructionism The most clearly articulated example of constructivist theory applied to computer science education (CSE) is the constructionist approach, developed by Papert in his 1980 book Mindstorms: Children, Computers, and Powerful Ideas, which has gained significant traction in some corners of the discipline. Constructionism focuses not on Piagetian stages of development and the constructivist nature of the mind, but rather on knowledge construction that occurs specifically during designing, building and making activities. As Papert says, “The constructionist approach to learning asserts that people learn particularly well when they are engaged in constructing a public artifact that is personally meaningful.” [Guzdial et al. 1990] What is critical in Papert’s theory of constructionism is that students need to be engaged in the construction of artifacts in which they have some stake; “public” artifacts42 as he calls them. When this condition can be met, powerful discussions about playing and making can occur as students are released from the abstracted busywork of traditional classroom activities. Instead they focus on learning by doing, learning not only about programming, but through programming; learning “to think, to tinker, to putter, to make mistakes and to learn from them” . To make clear the distinctions between these various terms (cognitive
constructivism, philosophical constructivism, and constructionism), Guzdial  says:
Piaget was talking about how mental constructions get formed, philosophical constructivists talk about how these constructions are unique (noun construction), and Papert is simply saying that constructing is a good way to get mental constructions built. Levels here are shifting from the physical Note the emphasis here on the “public” nature of the artifact, often a problematic element for student work in computational media, as the current infrastructure (as well as academic norms) often frustrate or prohibit public sharing in this way. Enabling this at both the technical level (via the generation of browser-executable content) and the pedagogical level (via art-syle critiques) was key element of the RiTa/PDAL strategy.
(constructionism) to the mental (constructivism), from theory to philosophy to method, from science to approach to practice.
The project-based workshop approach for the PDAL courses (and its integration with the RiTa tools) was directly influenced by the constructionist philosophy described above, both in its commitment to project-based, publicly viewable work, and in the notion of reflexivity. Papert describes how programming is reflexive with other domains, meaning that learning the combination of programming and another domain (art-making in this case) can be easier than learning each separately.43 In such cases, synergies are created when concepts in another domain are mapped, or “reflected” back into the programming medium.
3.2.3 Generative Pedagogy We want to improve learning by contextualizing concepts and problem solving inside structures which will give a base for making abstract problems "real." [Perlin et al. 2003] In the case of PDAL, learning to program means learning to construct representations for concepts. This in turn supports further learning of the concepts and the degree to which they can be procedurally manipulated in a creative fashion, thus providing a natural motivation for learning to program. This reflexivity is especially suited to the context of natural language, as we find direct mappings between the abstract nature of sign and signifier in both natural and computer languages. As one student commented, My work in this class has solidified my understanding of art and programming being very closely related. I have taken a number of courses...
related to New Media art where programming and software art was often discussed though I never had the opportunity to create any myself. What this course really did was help me find a formal process for working within the intersection of my interests-- computer science and art. I intend to continue using the models we have used in this course to work on projects in the future. [PDAL 2008] When students engage in manipulating mental models and creating symbolic representations, they find direct parallels between the domains of literature and computer languages. In literature, words, with parts-of-speech, map arbitrarily (and dynamically, based on the context) to concepts. In computer languages, variables (or objects), with types, map arbitrarily and dynamically to values in a running program, meaning there is no necessary or permanent semantic link between a variable and what it points to. In this way, the building blocks of language are similar to those of programming. Thus, in contrast with the recent trend toward visual media in such contexts (examples follow below), with language and literature we find direct corollaries between concepts in the application domain and in the programming domain, thus supporting constructionist reflexivity to a greater degree.
3.3 Related Pedagogical Initiatives "What would happen if everyone in the US learned how to program computers at the same time they learned to read and write English?" [Perlin et al. 2003] While embedding computer science education in a socially meaningful context has generally not been a priority for mainstream computer science educators, there have been notable exceptions in recent years, specifically in the areas of gaming, storytelling, and creative expression in digital media.
3.3.1 Programmatic Game Environments An increasing number of researchers have attempted to leverage gaming (especially multiplayer and/or collaborative games) to teach both STEM concepts44 and core computer
science ideas. As Plass et al.  state: