Reading and Writing Electronic Text

Reading and Writing Electronic Text (Schedule Spring 2019)

Syllabus here. Readings should be generally available on the web, unless otherwise indicated. Some readings will only be accessible when connected to an NYU network. Please contact me if you have trouble accessing any of the readings.

Items marked as “intertexts” are related work (artworks, poems, etc.) that are in dialogue with the readings and concepts presented in class. You’re encouraged to review and engage with these works.

Please use this form to turn in your homework assignments.

Session 01: What is text?

Date: 2019-01-31.

Assignment #1

Due at the beginning of session 02.

Transcribe and/or digitize a text that has never existed in digital form before. The resulting transcript should be in plain text format (i.e., a .txt file). The goal of this project is fidelity: try to make your transcription as true to the source material as possible. Examples of things to transcribe:

  • An audio recording of a conversation
  • A recording of a political speech
  • A television program or YouTube video
  • Advertisements (online or in print)
  • Street signs
  • Handwritten notes
  • A text that has been scanned (as images) but doesn’t have a plain text OCR conversion, or where the OCR version is very poor (there are many hundreds of thousand of these on the Internet Archive)

This is not a programming assignment. The primary activity you should be engaging in while doing this assignment is typing. We’ll create a centralized collection of the text files produced from this assignment for potential use in future assignments.

Readings assigned

To be discussed in session 02.


Session 02: Strings and expressions

Date: 2019-02-07.

Make sure to download this ZIP file of example text files and extract it into the same directory as your notebooks.

Assignment #2

Due at the beginning of session 03.

Many well-known poetry generators, especially those from the beginning of the computational era, work by drawing randomly from a limited vocabulary of strings and composing those strings using straightforward string manipulation techniques (like concatenation, splitting, joining, indexing, etc.). Create your own poetry generator using these techniques. Use one of the generators implemented in this notebook as a starting point for your creation. It’s okay if at this point you’re just copy-and-pasting code! You should be able to identify the parts of the code you can change without breaking things. (But also don’t be afraid to break things.)

In your documentation, discuss the poetry generator you created and how it differs from the code it was based on. Why did you choose the vocabulary that you chose? Does your generator succeed in creating output that surprises you?

Session 03: Lists and lines

Date: 2019-02-14.

Reading assigned

To be discussed in session 04. These readings concern the concepts of randomness, surprise and juxtaposition. Do you agree that “juxtaposition” is one of the foundations of poetic composition? How (if at all) is randomness uniquely suited to creating surprising juxtapositions in poetry? How does a procedural technique reflect the intentionality of its creator? What effect does the choice of source text have on the “output” of a procedural technique?

  • Hartman, Charles O. “Start with Poetry.” Virtual Muse: Experiments in Computer Poetry, Wesleyan University Press, 1996, pp. 16–27.
  • Hartman, Charles O. “The Sinclair ZX-81.” Virtual Muse: Experiments in Computer Poetry, Wesleyan University Press, 1996, pp. 28–37.
  • Lexia 126 through 185 from Trettien, Whitney Anne. Computers, Cut-Ups and Combinatory Volvelles: An Archaeology of Text-Generating Mechanisms. MIT, 2009,
  • Poetry and Pleasure from Mac Low, Jackson, and Anne Tardos. Thing of Beauty: New and Selected Works. University of California Press, 2007.

Supplemental readings:


Session 04: Keys and values

Date: 2019-02-21.

Assignment #3

Due at the beginning of session 05.

The digital cut-up. Create a notebook program that reads in two or more texts and stores portions of them in Python data structures. The program should create textual output that creatively rearranges the contents of the text. Use functions from the random module as appropriate. You must use lists as part of your procedure. Choose one text that you created with your program to present in class.

Session 05: Data

Date: 2019-02-28.

More notes:

Reading assigned

To be discussed in session 06. These readings concern the relationship of form, content, and affordance. What is a poetic form? To what extent are form and content independent? Does a particular subject matter or phenomenology demand a particular form? What kind of forms are procedures effective at implementing (or emulating)?


Session 06: Grammars

Date: 2019-03-07.

Assignment #4

Due at the beginning of session 07.

Devise a new poetic form and write a computer program that generates texts that conform to the poetic form you devised. Your poetic form could be something as simple as “Each line must begin with the letter ‘A’” or something as sophisticated as Mac Low’s diastics. Your documentation for this project should include the name of your poetic form, and a thorough description of how it works, along with a number of “poems” that your program generated (at least three).

Consider the following when evaluating your work:

  • How well does the output of your computer program conform to your invented poetic form? Could a human do it better?
  • How does your choice of source text (your “raw material”) affect the character and quality of the poems that your program generates?

Session 07: Natural language

Date: 2019-03-14.

Reading assigned

To be discussed in session 08. These readings concern authority and appropriation: the ethical dimensions of entering into conversations with people procedurally and using other people’s language. Under what circumstances is it acceptable to language or text created by another person? What does authorship mean when the “output” of a procedure originates in appropriated text? Why choose one text over another for a particular analysis or generative procedure?

Session 08: Predictive text

Date: 2019-03-28.

Assignment #5

Due at the beginning of session 09.

Use predictive models to generate text: either a Markov chain or an RNN, or both. How does your choice of source text affect the output? Try combining predictive text with other methods we’ve used for analyzing and generating text: use RNN-generated text to fill Tracery templates, or train a Markov model on the output of parsing parts of speech from a text, or some other combination. What works and what doesn’t? How does RNN-generated text “feel” different from Markov-generated text? How does the length of the n-gram and the unit of the n-gram affect the quality of the output?

Session 09: Vector representations of semantics

Date: 2019-04-04.

Reading assigned

To be discussed at the beginning of session 10. These readings address how the way words sound can be deployed for poetic and rhetorical effect. Borroff’s close reading highlights Frost’s use of assonance, alliteration and rhyme. Bök’s description of/manifesto about his Cyborg Opera situates the piece in the history of futurist and dadaist sound poetry. To consider: what is sound symbolism, and is it “universal”?


Session 10: How words sound

Date: 2019-04-11.

Assignment #6

Due at the beginning of session 11. You have two options for this assignment (or you can combine them both!)

(1) Use proximity in vector space as the basis for a creative composition. You can use spaCy’s built-in word vectors or some other vectors (e.g., the xkcd color vectors or my phonetic similarity vectors.

(2) Use the CMU Pronouncing Dictionary (or some other system for getting phonetic information about words) to rework a previous homework assignment with an eye toward phonetic cohesion and symbolism.

Session 11: Applications

Date: 2019-04-18.

Session 12: Workshop

Date: 2019-04-25.

  • Workshop final projects

Some performances of procedural, appropriative or otherwise difficult poems to watch and listen to:

Session 13: Final projects day 1

Date: 2019-05-02.

Session 14: Final projects day 2

Date: 2019-05-09.