Reading and Writing Electronic Text (Schedule Spring
2026)
Essential information
Syllabus with course description, policies,
resources, etc.
All readings are available online, unless otherwise indicated. If
you’re having trouble accessing a resource, try the NYU
Library Proxy (it’s very easy to set up). Please contact me ASAP if
you have trouble accessing any of the readings.
Unit A:
Disarticulation and juxtaposition
Python basics; how to break a text down into its component pieces and
put it back together.
Please install Python
on your computer. Once Python is installed, use the pip
command to install Jupyter
Notebook. Note that this will probably require doing a little bit of
work at the command line (Terminal on macOS, PowerShell on Windows).
Make sure that you can launch Jupyter Notebook on your machine before we
begin next session.
NOTE: If you already have a working installation of
Python 3 on your computer, you don’t need to install it again! Just use
the version that you already have installed.
Linux users and users of other UNIX-alikes: In this class, you can
probably get away with using your distribution’s default Python 3.
However, you may want to research a tool like pyenv or asdf to make it easier to have multiple
versions of Python available on your machine at once (e.g., your
distribution’s Python alongside the latest version of Python).
Another option for many platforms is Anaconda (though please
read the licensing terms).
Note that (as far as I know) there is no satisfactory option for
installing Python on iOS or Android. If you only have access to iOS
and/or Android, you may be better off using a web-hosted service like Python Anywhere (you
will need their $5/mo service, which includes access to Jupyter
Notebooks). You can also use Google Colab in a
pinch.
“Creative reading techniques” (ch. 6) from Padgett, Ron.
Creative Reading: What It Is, How to Do It, and Why. National
Council of Teachers of English, 1997.
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.
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 04: Poetics of
grouping
Date: 2026-02-13.
Assignment workshop
What is a dictionary/hash map/associative array/whatever you want to
call it?
What makes computation suited to a particular genre of text, and vice
versa?
Bertram, Lillian-Yvonne, and Nick Montfort, editors. “Tweets and
Microblogging..” Output: An Anthology of Computer-Generated
Text, 1953–2023, The MIT Press, 2024.
The genre study: Choose a genre or form of writing. This can be
anything from a literary genre to a meme format. Gather a small number
of exemplars of the genre and make a list of the characteristics that
are common to all of them. Write a program that produces texts that
emulate a particular form or genre of language.
Unit B: (Tiny) Language Models
How to construct a text by making statistical predictions about the
next token. Good for a laugh, or for convincing investors to give you
hundreds of billions of dollars to build carbon-belching data
centers.
Session 07: N-grams and
Markov chains
Date: 2026-03-06.
Assignment workshop
Lecture/tutorial: Tokens, n-grams and Markov chains
Generate text from a Markov chain-style language model, using
Shoestrings or another implementation, possibly in combination with
other techniques for arranging text that we’ve discussed in the class.
Be intentional about your use of source text and comment on what (if
anything) your generated text demonstrates or reveals about that source
text.
Also, before the next session:
Identify a text to contribute to the “collective corpus” that we’ll
be using together as a class over the next few weeks. This should be a
text of around 1,000 words, written in the English language, and that
the class as a whole is authorized to freely reuse. (This could be text
in the public domain, text of your own composition, etc.)
Unit C: Syntax and semantics
The units of text often occur in particular patterns, which have
hierarchical and nested structures; this is called “syntax.” Units of
text also often appear to mean something, whatever that means;
this is called “semantics.” Here we discuss some approaches to working
with syntax and semantics computationally.
Drucker, Johanna. “Why
Distant Reading Isn’t.” PMLA, vol. 132, no. 3, Modern
Language Association, May 2017, pp. 628–35.
Before the next session:
Using the tagging software discussed in class, tag at least 1000
words.
Session 10: Using tagged data
Date: 2026-04-03.
Reading discussion
Python: Using tagged data
Lecture/tutorial: Quantifications of semantics
Before next class:
Using the tagging software discussed in class, assign values to at
least 500 nouns and adjectives.
Session 11: Vector semantics
Date: 2026-04-10.
Final project proposals!
Python: Using vector data
Python: Distributional semantics and pre-trained vectors
Assignment #4
Rework a previous assignment or prototype to use our hand-tagged
data. For example, take an existing Tracery grammar and have it fill in
parts of speech as tagged in our corpus, or remix a text using adjective
scores to sort or filter the source text.
Unit D: Applications
Final presentations and whatever’s left over.
Session 12: Odds and ends
Date: 2026-04-17.
Assignment workshop
Gather materials for the zine
Extra tutorial, based on student interest
Session 13: Final
project presentations, part 1
Date: 2026-04-24.
Final project presentations.
Session 14: Final
project presentations, part 2
Date: 2026-05-01.
Final project presentations.
On the bench
Here’s a list of readings, tutorials and links previously
incorporated into this class, but not scheduled in the current
iteration. The links might be broken and the tutorials might be out of
date. I’m listing them here in case they’re of interest to students, and
so I can easily find them later if I want to sub them back into the
game.
Hovy, Dirk, and Shannon L. Spruit. “The Social Impact of
Natural Language Processing.” Proceedings of the 54th Annual
Meeting of the Association for Computational Linguistics (Volume 2:
Short Papers), Association for Computational Linguistics, 2016, pp.
591–598.
Brousseau, Chantal. “Interrogating
a National Narrative with GPT-2.” Programming Historian,
edited by John R. Ladd and Tiago Sousa Garcia, no. 11, Oct. 2022. (Using
a large language as a tool for teaching history, by leaning into its
bias instead of trying to eliminate it.)
LaBelle, Brandon. “Gibberish,
Gobbledygook.”Lexicon of the Mouth: Poetics and Politics of
Voice and the Oral Imaginary, Bloomsbury Academic &
Professional, 2014
Bök, Christian. “When
Cyborgs Versify.” The Sound of Poetry/The Poetry of Sound, edited by
Craig Dworkin and Marjorie Perloff, University of Chicago Press, 2009,
pp. 129–41.
Ilbury, Christian. “‘Sassy Queens’: Stylistic
Orthographic Variation in Twitter and the Enregisterment of AAVE.”Journal of Sociolinguistics, vol. 24, no. 2, 2020, pp. 245–64.
(Great example of AAVE language features being deployed stylistically,
e.g., appropriatively, especially phonetic features that manifest
orthographically.) Textual Practice, vol. 18, no. 2, Jan. 2004,
pp. 185–97.
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.