«Creativity Support for Computational Literature By Daniel C. Howe A dissertation submitted in partial fulfillment of the requirements for the degree ...»
1.4 Motivations Although the complexities of the literary context should not be underestimated, the benefits could be substantial were the considerations above to be effectively addressed. In addition to its importance in contemporary art, computational literature presents a unique context for conveying core computational ideas to students in an intuitive and organic fashion. As an example, consider the range of key computer science concepts that arise in conjunction with even the most introductory topics in a course on computational literature. In the two mini-projects6 presented in chapter 3 for example, students are naturally exposed to a significant number of core ideas typically covered in an introductory computer science sequence; from finite-state automata to context-free grammars and the language hierarchy;
from data structures to parse trees; from regular expressions to recursion. Rather than Discussed in the context of “Programming for Digital Art & Literature”, a course taught by the author at Brown University.
appearing to students as arbitrary additions to the “real” topic at hand, the relevance of these core computational ideas, when presented with effective tool support, becomes readily apparent.
With the aim of addressing these concerns, this thesis introduces RiTa, a software toolkit designed and implemented specifically to support creativity in computational literature7. Two primary hypotheses have directed the research presented: first, that it is possible to implement effective creativity support tools for literary art given current resource constraints; and second, that such tools, in addition to facilitating new forms of literary creativity, provide unique opportunities for computer science education. Designed both for practicing artists and for pedagogy, RiTa directly addresses impediments to participation in the field for a diverse range of users and provides an end-to-end solution for courses attempting to engage the creative faculties of computer science students, and to introduce a wider demographic—from writers, to digital artists, to media and literary theorists—to procedural literacy and computational thinking.
RiTa covers a range of computational language tasks including text analysis, generation, display and animation, text-to-speech, text-mining, and access to external resources such as WordNet8. In addition to their use in large-scale projects by contemporary artists, they have provided effective support for multiple iterations of ‘Programming for Digital Art & Literature’, a successful inter-disciplinary computer science course taught by the author. Students from a wide range of backgrounds (creative writers, digital artists, media Other names for this sub-field of computational art focusing on language and/or literature include “Electronic Writing” or “E-Writing”, “Digital Writing”, and “Writing in Programmable Media”.
See http://wordnet.princeton.edu/ and [Fellbaum 1998].
theorists, linguists and programmers, etc.) have been able to rapidly achieve facility with the RiTa components, to gain an understanding of core language processing tasks, and to quickly progress on to their own creative projects in computational literature.
The RiTa toolkit, freely available via an open-source Creative Commons9 license, is implemented in Java, optionally integrates with the Processing10 language environment, and is compatible with all common operating systems and web browsers.
1.5 Contributions This thesis will present RiTa from a number of perspectives: as tools and affordances for practicing writers; as a pedagogical strategy, both for teaching procedural literacy to humanities students, and for engaging computer science students with creative practice; and as a real-world testing ground for creativity support principles, providing a unique context for assessing the efficacy of design and evaluation strategies. As such, the contributions of this research fall into two related sub-fields: creativity support tools (CST) and computer science education11.
In the context of creativity support research, RiTa represents the first end-to-end programmatic toolkit designed expressly for computational literature. In addition to those artists self-identifying as “digital” or “computational” writers, RiTa targets two distinct groups who might benefit from the synthesis of computational techniques and language-based See http://creativecommons.org/.
See http://www.processing.org/ and Reas and Fry .
As mentioned above, we include in this category the notion of “computational thinking” as advanced by Wing  and Guzdial , and “procedural literacy”, as advanced by a number of researchers since the early 1960s [Greenberger 1962; Sheil 1980; Bogost 2005;
practice. These are a) analog writers who have lacked simple tools with which to experiment computationally, and b) computational artists with a sound, image, or physical orientation, who are interested in extending their practice to include experiments in language.
As a pedagogical tool, RiTa represents the first toolkit intended specifically as an end-to-end teaching tool for courses in computational literature. It has been designed, from the start, to enable students with little or no programming experience to quickly experiment with generative computational methods. As such, it includes carefully written and updated documentation, numerous examples, and a wide range of publically available projects.
Additionally, it includes a range of supporting applications that enable integration with popular teaching tools (e.g., Processing), and easy publication of sketches and source code from within popular development environments (e.g., Eclipse).
RiTa represents a unique approach to teaching computational thinking and procedural literacy for a diverse range of students beyond the borders of the computer science department. At the same time, the toolkit includes enough advanced functionality to engage creatively-oriented computer science students with a range of more advanced techniques in natural language processing and generation. Because it supports this broad range of experience, RiTa also provides a natural means with which to enable cross-disciplinary collaboration between students coming from diverse backgrounds. Lastly, because it is an end-to-end solution, including non-linguistic facilities for animation, text rendering, image, audio, etc., it frees the instructor from designing and implementing custom tools, and/or teaching multiple environments.
Finally, the design strategies employed in building a creativity-supporting toolkit have the potential to shed light on new strategies for software design, not only in the arts context, but in a wide range of creativity support research targeting both educational and professional agendas. A clear benefit of tools that satisfy this joint goal is their ability to facilitate smooth transitions for students as they move between educational and professional environments12. In this way our approach, integrating value-sensitive design [Friedman et al.
2006; Flanagan et al. 2008], constructivist/constructionist educational philosophies, and design principles from creativity support research, is unique. Whether it is applicable to usergroups beyond the arts domain is a question that will require significant further research Toward this end we provide some unique experimental approaches for evaluating these tools, examining a range of metrics; from usability, to user attitudes, to programmatic skills, to more subjective measures of divergence; all implemented within the real-world framework of a typical semester-long university course.
1.6 Overview Following this introduction chapter, chapter 2 presents a full description of the RiTa toolkit, from high-level goals, to design criteria, to a component-level description of functionality. Chapter 3 describes how RiTa has proven to be a useful teaching tool, enabling humanities students to easily engage with central concepts in computer science, and allowing computer science students to develop their creative faculties by engaging with 'real' problems in which they have a personal stake. Chapter 4 describes the range of prior work, both within and beyond computer science, that influenced the design, implementation, and development of the toolkit. In addition to supporting creativity for practicing artists, chapter 5 describes evaluation measures on a number of dimensions, from usability, to procedural literacy, to creativity support. Chapter 6 attempts to
a set of general principles for creativity This is especially true of artists who work with new technologies,. In such cases, it is not unusual for an single individual to alternate between teacher, student, and practitioner within a short span of time.
support and software design for the arts, and concludes with directions for future research.
The appendix presents links to a range of related resources for RiTa, including examples, documentation, and a student project gallery.
"Nothing is more complex than the artifacts of the literary imagination, and any software that works to empower the literary as it traverses the landscape of computational technology will be equally complex... and enormously useful." - J. Carpenter
2.1 Introduction The RiTa13 toolkit is a suite of open-source components, plugins, tutorials, and examples that provide creativity support for a range of tasks related to the practice of writing in programmable media. Designed both as a toolkit for practicing writers and as an end-to-end solution for computational writing courses, RiTa includes components for text analysis and generation, animation, display, text-to-speech, web-based text-mining, and interfaces to external resources (e.g., WordNet). As RiTa optionally integrates with the Processing environment for arts-oriented programming, artists and students have immediate access to a large community of practicing digital artists, and can easily augment RiTa's functionality via the vast collection of libraries available.
The bulk of the RiTa toolkit is implemented as a Java library consisting of ten independent packages. The core object collection contains approximately 20 classes within the rita.* package, all of which follow similar naming and usage conventions. Additional packages provide support for these core objects, but are not directly accessed in typical usage.
The philosophy behind the API is to be as simple and intuitive as possible, while still providing adequate flexibility for more advanced users. In addition to the core classes, RiTa provides statistical models for tagging, chunking, and parsing, and a plugin for the popular Eclipse development environment to facilitate publishing and sharing of projects (and source The name RiTa derives from Old Norse, meaning to scribble, scratch, or inscribe.
code). The following list provides a high-level view of the functionality provided by the RiTa
tools, with each item discussed in detail below:
Literary text-generation via Markov chains and context-free/mildly •
Simple, browser-accessible integration with the WordNet lexical ontology.
• Concordances and Key-Word-In-Context (KWIC) model implementations.
• Support for transparent server mode for both local and remote data •
2.2 Design And Implementation The following sections presents a range of design considerations that influenced the development and iteration of the RiTa tools. Beginning with the choice of coding environment, we present the design criteria (and anti-criteria) that emerged in and through the iterative process of teaching and creating with RiTa over the past three years. We present several concrete examples of so-called design tensions [Flanagan et al. 2008] in which specific usage scenarios cast two or more of these criteria into conflict, and discuss our resolutions to these. Following detailed functional descriptions of the core RiTa objects, a range of usage scenarios and high-level patterns are presented to demonstrate the interrelations between components.
2.2.1 Programming Environment In addition to the specific functionality to be implemented in the toolkit, an important early decision concerned the choice of programming environment.14 A number of unique “Environment” in this context refers to the combination of programming language and associated libraries, development environment (e.g., IDE), and associated tools for writing, compiling, debugging, running and publishing programs.
considerations influence this choice for artists and students working in computational literature.
First, it is important that the environment have a relatively shallow learning curve, so that novice programmers receive immediate rewards for their efforts. Second, it should support rapid prototyping and short develop-and-test cycles. Third, it should be widely used so that questions, examples, and projects can be easily located on the web. Fourth, it should facilitate both structured and unstructured programming (specifically, the language should provide both procedurally-oriented functions for rapid prototyping and full object-oriented support for larger, more complex programs.) Fifth, it should provide end-to-end support for tasks that, though not central to the practice of generative language, are often necessary for fully realizing a work (these include simple, yet robust access to sound, network, and graphics libraries). Sixth, all library functions should run in (perceptual) real-time (there should be no need for offline processing). Seventh, student programs should be easily publishable and include source code to facilitate knowledge-sharing. Finally, all programs should be executable in a web-browser environment to eliminate any dependencies on hardware, operating system, and configuration, which can waste valuable time in workshopstyle settings. The following section on design requirements presents a more detailed discussion of these criteria.