Reading and Writing Electronic Text: ITP Spring 2016 (schedule)

Please send me an e-mail if you're having trouble accessing any of the readings.

Session 01 (2016-01-29)

  • Course goals, syllabus
  • Introduction to UNIX and the fundamentals of digital text

Reading assigned

To be discussed 2016-02-05.

Questions to guide your reading: Padgett's techniques for "creative reading" are distinctly analogue. Which of his techniques could be adopted for digital text? What ideas about how text work are "built in" to the grep command? What do you think about Glazier's "grep works"? What's more important to the outcome, the procedure or the source text? How to UNIX utilities rely on or reinforce the substance of digital text (ASCII, lines, etc.)? Why is the "line" an important unit in poetry and text in general? What effect does lineated text have that text typeset as prose does not (and vice-versa)?

Programming exercise A

Exercise A: Command-line text processing

Session 02 (2016-02-05)

  • Reading discussion
  • A tour of the literature (electronic text and procedural text)
  • The source text: choosing texts to mashup and munge
  • Python I: Making decisions about lines


(Note: in the notes below, ignore references to a "sandbox server"—you'll be doing your programming locally, on your own machine. We'll discuss what this means in class.)

Homework assigned

Due 2016-02-12.

Homework #1. Create a Python program that behaves like a UNIX text processing program (such as cat, grep, tr, etc.). Your program should take text as input (any text, or a particular text of your choosing) and output a version of the text that has been filtered and/or munged. Be creative, insightful, or intentionally banal.

Choose one text that you created with your program to read in class.

Bonus: Use the program that you created in tandem with another UNIX command line utility.

Session 03 (2016-02-12)

  • Homework presentations
  • Python II: Lists and loops (simple models of text)


Reading assigned

To be discussed 2016-02-19.

Do you agree that "all writing is in fact cut-ups"? Consider Hartman's concept of "juxtaposition"—what does it mean for texts to be juxtaposed procedurally? How does that affect the quality and interpretation of the work? Is there a fundamental difference between the analogue/pre-digital techniques of Gysin, Acconci, and Goldsmith and digital "data-driven" techniques?

Programming Exercise B

Exercise B: Strings and lists

Session 04 (2016-02-19)

  • Reading discussion
  • Python III: Sets, dictionaries, and tuples (simple models of text)


Homework assigned

Due 2016-02-26.

Homework #2: The digital cut-up. Write a program that reads in and creatively re-arranges the content of one or more source texts. What is the unit of your cut-up technique? (the word, the line, the character? something else?) How does your procedure relate (if at all) to your choice of source text? Feel free to build on your assignment from last week.

Your program must make use of at least one set, dictionary, or list.

Choose one text that you created with your program to read in class.

Bonus 1: Use a method of a list, set, or dictionary object that we didn't discuss in class.

Bonus 2: Use a list comprehension somewhere in your program.

Session 05 (2016-02-26)

  • Homework presentations
  • Sets, dictionaries, tuples (continued)

Programming exercise C

Exercise C

Reading assigned

To be discussed 2016-03-04

Session 06 (2016-03-04)

  • Reading discussion
  • Poetic forms
  • Python IV: Appropriating text from the network


Programming exercise D assigned

Programming exercise D

Midterm project assigned

Midterm projects to be presented 2016-03-25.

This project has two steps. You must:

  • Devise a new poetic form.
  • Create a computer program that generates texts that conform to new 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 presentation and documentation for this project should include the following:
  • The name of your poetic form, and a thorough description of how it works
  • The source code for the program you used to generate poems that follow your form
  • A number of "poems" that your program generated (at least three), one of which you will read aloud during your presentation
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 08 (2016-03-25)

  • Midterm presentations

Session 07 (rescheduled, 2016-03-26)

  • Python IV: Appropriating text from the network (continued)
    • URLs
    • http requests
    • json
    • wordnik
    • installing libraries
    • twitter


Homework assigned

Due 2016-04-01.

Homework #3: Appropriating text from the network. Devise and implement (in Python) a procedure to cut up and creatively re-arrange text. At least one of your texts should come from a network-based source (e.g., Wordnik, the New York Times API, etc.). To consider: How does the presence of data appropriated from the network change the nature of your process and your output?

Session 09 (2016-04-01)

  • Homework presentations
  • Python V: Modularity and reusability
    • functions
    • modules


Homework assigned

Due 2016-04-08.

Rewrite some portion of an earlier assignment to make use of functions. For example, you could do one or more of the following:

  • Identify some pattern in your program that is repeated multiple times. Create a function that performs this task, then replace each instance of the pattern with a function call.
  • Identify a group of patterns in your programs and move them into functions that live inside of a module. Rewrite an existing program using this module.
  • Rewrite your midterm project so that all of the code is located inside of a module. Attempt to do this so that replicating your entire midterm project output can be done with code that resembles the following: import your_midterm_module; your_midterm_module.generate("input_file.txt")

Session 10 (2016-04-08)

  • Reading discussion
  • Techniques I: N-gram analysis and Markov chain generation


N-grams and Markov chains

Programming exercise E assigned


Reading assigned

To be discussed in class 2016-04-22

Session 11 (2016-04-22)

Note: We will not be holding class on 2016-04-15! That session is rescheduled for Saturday, 2016-04-23.

  • Reading discussion
  • Techniques II: Natural language (with TextBlob and/or pattern)


Natural Language Basics with TextBlob

Session 12 (2016-04-23)

  • Interfaces: Simple web applications with Flask (or something else??)


Web applications with Flask

Session 13 (2016-04-29)

Final project presentations 1

Session 14 (2016-05-06)

Final project presentations 2