Creativity Support for Computational Literature by Daniel C. Howe A
Total Page:16
File Type:pdf, Size:1020Kb
Creativity Support for Computational Literature By Daniel C. Howe A dissertation submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy Department of Computer Science New York University September 2009 __________________ Dr. Ken Perlin, Advisor “If I have said anything to the contrary I was mistaken. If I say anything to the contrary again I shall be mistaken again. Unless I am mistaken now. Into the dossier with it in any case, in support of whatever thesis you fancy.” - Samuel Beckett ACKNOWLEDGEMENTS I would like to thank my advisor, Ken Perlin, for his continual support and inspiration over the course of this research. I am also indebted to my committee members, Helen Nissenbaum, Katherine Isbister, Matthew Stone, and Alan Siegal for their ongoing support and generous contributions of time and input at every stage of the project. Additionally I wish to thank John Cayley, Bill Seaman, Braxton Soderman and Linnea Ogden, each of whom provided important contributions to the ideas presented here. While there are too many to mention individually here, I would like to thank my colleagues, collaborators, and friends who have been generous and tolerant enough to put up with me over the past five years. Finally, I would like to thank my parents and brother who have given me their unconditionally support, however misguided or unintelligible my direction, since the beginning. iv ABSTRACT The creativity support community has a long history of providing valuable tools to artists and designers. Similarly, creative digital media practice has proven a valuable pedagogical strategy for teaching core computational ideas. Neither strain of research has focused on the domain of literary art however, instead targeting visual, and aural media almost exclusively. To address this situation, this thesis presents a software toolkit created specifically to support creativity in computational literature. Two primary hypotheses direct the bulk of 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, the research presented 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. The tools and strategies presented have been implemented, deployed, and iteratively refined in real-world contexts over the past three years. 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. v Taken together, this thesis provides a novel set of tools for a new domain, and demonstrates their real-world efficacy in providing both creativity and pedagogical support for a diverse and emerging population of users. vi TABLE OF CONTENTS Page ACKNOWLEDGEMENTS iv ABSTRACT v LIST OF FIGURES xii LIST OF TABLES xiii CHAPTER 1: INTRODUCTION 1 1.1 Supporting Literary Creativity 1 1.2 Current Creativity Support Tools 2 1.3 Computer Science and Creative Writing 4 1.4 Motivations 6 1.5 Contributions 8 1.6 Overview 10 CHAPTER 2: TECHNICAL DETAILS 12 2.1 Introduction 12 2.2 Design And Implementation 14 2.2.1 Programming Environment 14 2.2.2 Design Criteria 19 2.2.2.1 Requirements 19 2.2.2.2 Anti-Requirements 21 2.2.3 Design Tensions 22 vii 2.2.3.1 Strings and Features 22 2.2.3.2 Statistical Crossover 27 2.2.3.3 RiGrammarView 29 2.3 Component Descriptions 32 2.4 Documentation 48 2.5 Using Rita 49 2.5.1 Animation and ‘text behaviors’ 53 2.5.2 Events and Dynamic Callbacks 55 2.5.3 Parameter and Return Types 56 2.5.4 Lazy Instantiation and Caching 58 2.5.6 Mixed-Mode Operation 59 2.5.7 The EclipseP5Exporter 63 2.6 Conclusion 65 CHAPTER 3: PEDAGOGY 67 3.1 Introduction 67 3.2 Procedural Literacy and Computational Thinking 68 3.2.1 The Difficulty of Teaching Programming 72 3.2 Constructivism, Constructionism and Generative Pedagogy 73 3.2.2 Constructionism 75 3.2.3 Generative Pedagogy 76 3.3 Related Pedagogical Initiatives 77 3.3.1 Programmatic Game Environments 78 3.3.2 Digital Media Manipulation and Max/MSP 83 3.4 Programming for Digital Art and Literature: the Teaching Environment. 88 3.4.1 Programming Languages in an Educational Context 90 viii 3.5 Pedagogically-inspired Design Considerations 93 3.5.1 Supporting Serendipity 95 3.5.2 Supporting Artistic ‘Misuse’ 99 3.5.3 Supporting ‘Inverted’ Use 102 3.5.4 Supporting Micro-Iteration 103 3.5.5 Scaffolding and Transparency 105 3.6 Supporting Creativity: ‘Productivity’ and Beyond 107 3.6.1 RiTa in the Classroom 108 3.6.1.1 Assignment I: Context-free Grammars 109 3.6.1.2 Assignment II: Language Models 114 3.6.1.3 Integrating Computational Thinking 120 3.6.2 Final Student Projects in PDAL 120 CHAPTER 4: PRIOR WORK 122 4.1 Introduction 122 4.2 Programmatic Educational Environments 123 4.2.1 For Natural Language Processing 123 4.2.1.1 NLTK 124 4.2.1.2 SimpleNLG 125 4.2.2 For Computational Art 127 4.2.2.1 The Processing Environment 128 4.3 Literary-focused Computer Science 131 4.3.1 Christopher Strachey 132 4.3.2 Claude Shannon 137 4.3.3 Joseph Weizenbaum 142 4.3.4 Selmer Bringsjord 144 4.4 Procedural Writing: Tools And Practice 146 4.4.1 Theo Lutz 148 4.4.2 Brion Gysin 149 ix 4.4.3 Nanni Balestrini 151 4.4.4 Auto-Beatnik 152 4.4.5 A House of Dust 154 4.4.6 Cybernetic Serendipity 156 4.4.7 John Cage 157 4.4.8 Jackson Mac Low 161 4.4.9 Charles O. Hartman 167 4.4.10 Dada 168 4.4.11 The Oulipo 170 CHAPTER 5: EVALUATION 176 5.1 Introduction 176 5.2 Goals 177 5.3 Methods 178 5.4 Participants 178 5.5 Observation Set 1: Surveys 179 5.5.1 Pre-Survey 179 5.5.2 Post-Survey 179 5.5.3 Attitudes Toward Programming 180 5.5.4 Knowledge and Self-efficacy 180 5.6 Observation Set 2: Code Reading and Writing 181 5.6.1 Parsons Problems 181 5.6.2 Results 185 5.7 Observation Set 3: Creativity Support 188 5.7.1. Evaluating Creativity 189 5.7.1.1 Evaluating “Value” 190 5.7.1.2 Evaluating “Novelty” 193 x 5.8 Limitations 198 5.8.1 Lack of Controls 199 5.8.2 Participants 200 5.8.2 Experimenter 200 5.8.2 Software 200 5.8.2 Parsons problems 201 5.9 Summary 201 CHAPTER 6: CONCLUSIONS 203 6.1 Contributions 203 6.1.1 Contributions: Creativity Support 203 6.1.2 Contributions: Education 204 6.1.3 Artistic Strategies 205 6.2 Future Research 207 6.2.1 The RiTa Toolkit 207 6.2.2 Auxiliary Tools 210 6.2.3 Evaluation 211 6.2.3.1 Further Study 212 6.2.3.2 Metrics for programmatic support 212 6.2.3.3 Longitudinal Studies 214 6.3 Final Thoughts 215 APPENDIX A: RESOURCES 217 ENDNOTES 218 BIBLIOGRAPHY 220 xi LIST OF FIGURES Figure 1: A one-line Processing sketch. 18 Figure 2: Screenshot of the RiGrammarView tool. 30 Figure 3: Code invoking the RiGrammarView editor. 31 Figure 4: An example rita-addenda file. 34 Figure 5: A simple RiTa grammar file. 45 Figure 6: A simple RiTa sketch in Processing. 51 Figure 7: A minimal Java applet. 52 Figure 8: A minimal HTML page as required for Java's AppletViewer. 53 Figure 9: Screenshot of the RiTa-Eclipse plugin interface. 64 Figure 10: Screenshot of the RiTa-Eclipse plugin configuration widget. 65 Figure 11: The Alice programming interface 79 Figure 12: The RAPUNSEL environment. 81 Figure 13: The Squeak-Etoys environment. 82 Figure 14: The Scratch environment. 83 Figure 15: The Max/MSP environment. 86 Figure 16: A simple L-System implemented via a (recursive) context-free grammar. 111 Figure 17: Comparison of educational programming environments 131 Figure 18: A Parsons problem example (pre-test). 182 Figure 19: The RiTa live-coding environment (prototype). 211 xii LIST OF TABLES Table 1: Feature data for an example RiString phrase. 23 Table 2: Feature data for an example RiString word. 24 Table 3: Alphabetical list of part-of-speech tags used in the Penn Treebank project. 38 Table 4: Alphabetical list of phrase-tags used in the Penn Treebank Project. 44 Table 5: Examples from the Love Letter Generator’s Input Data. 136 Table 6: Pre/post change in students’ knowledge and self-efficacy with programming concepts. 181 Table 7: Comparison of ordering metrics (incorrect lines are bolded). 185 Table 8. Breakdown of the Parsons problem results (syntax). 186 Table 9. Breakdown of the Parsons problem results (ordering). 187 Table 10. Breakdown of the Parsons problem results (total score). 188 Table 11: Final project attributes. 195 Table 12. RiTa modules used in final projects. 197 xiii CHAPTER 1: INTRODUCTION Literary artists who want to make use of programmable media... should not have to build their own tools. Until recently this has been the debilitating norm. – John Cayley [2009] 1.1 Supporting Literary Creativity Computer science research in artistic creativity support has made significant progress in recent years, creating powerful new tools for photography, film and video, animation, drawing and music, that have transformed standard practices and inspired newly expressive forms.