NYU ITP, Spring 2026. Instructor: Allison Parrish. Send me e-mail.
Important links: Schedule, example code and notes, homework form
This course introduces the Python programming language as a tool for reading and writing digital text. This course is specifically geared to serve as a general-purpose introduction to programming in Python, but will be of special interest to students interested in language and computer-generated text. Among the topics we’ll discuss are: the history and aesthetics of computer-generated writing in literature and the arts; computational linguistics; ethics and authorship in the context of computer-mediated language; poetic structure and sound symbolism; performance and publishing. Programming topics covered include: data structures (lists, sets, dictionaries); strategies for making code reusable (functions and modules); natural language processing; grammar-based text generation; predictive models of text (Markov chains and neural networks); and working with structured data and text corpora. Weekly programming exercises and readings culminate in a final project. Prerequisites: Introduction to Computational Media or equivalent programming experience.
Class schedule with readings, assignments and due dates.
You should expect to spend, on average, six to eight hours per week on work for this class (excluding time spent in the classroom).
This is a creative writing course in which we use computational techniques to produce poetic texts that draw on experimental writing traditions. Class sessions will combine components of seminar, workshop, and tech tutorial. The course follows the structure of a conventional computer programming class: we start with foundational concepts, then gradually learn how to build on those foundations to create more complex applications. Technical concepts are paired with concepts from the literary arts; students are asked to synthesize the two to produce poetic artifacts that could not be composed except with computational techniques.
A text has many affordances, and we’ll explore many of these affordances in class. For example, students may be asked to read their generated texts out loud, or experiment with putting them on the (physical) printed page.
We’ll be using the Python programming language. It’s easy to learn, and elegant, and is particularly suited to text processing. No previous experience with Python is required.
The overall goal of the course is to introduce computation as a useful tool in the literary arts, and to promote literacy and a critical point of view regarding the interpretation and production of computation-mediated text. By the end of the course, students should expect to have a familiarity with the building blocks of computational text processing, and beginning to intermediate-level proficiency in applying computational text processing techniques to texts. Students will also become familiar with historical and contemporary experimental writing techniques that exercise computation, or draw from computational techniques, as one example of how computational text processing might be applied in the literary arts. Additionally, students will become familiar with theory and criticism surrounding the aesthetics and politics of writing produced with computation.
Students will need to have access to a computer that is capable of running a recent version of Python (the mainline CPython version) and Jupyter Notebook on a mainstream desktop operating system (Windows, macOS, Linux). (This does not need to be an especially “recent” computer—I’ll be teaching the class on a decade-old MacBook Air). You’ll probably want a gigabyte or two of free local storage on your machine for software and data sets. Ideally, you’ll bring this computer to class with you, so you can follow along in real-time with my tutorials. Let me know if these requirements don’t line up with what you’re able to provide; we can almost certainly find a way to provide you with what you need, or some other kind of workaround.
Any assigned readings will be made available electronically (generally as documents hyperlinked from the schedule).
| Component | Percentage |
|---|---|
| Attendance and participation | 25% |
| Assignments | 4 x 10% (40%) |
| Zine contribution | 10% |
| Final project | 25% |
Here’s the breakdown of how grades correspond with percentages.
| Grade | Percentage |
|---|---|
| A | 90 to 100 |
| B | 80 to 89 |
| C | 70 to 79 |
| D | 60 to 69 |
| F | Below 60 |
For students taking the class as pass/fail (i.e., all ITP students), anything below a B (79% and below) will be graded as a fail. More information on ITP’s grading policy here.
In addition to complying with the parameters of the assignment as outlined in class and the schedule. You are expected to post (to your blog) documentation of your assignment. This documentation should include a description of what goals you set out with, what you accomplished, what your next steps would be if you were to continue to follow this line of investigation, and what works (art, poetry, literature, research, etc.) you understand your work to be in dialogue with. For assignments that require programming, your documentation should include a link to your code.
Students may be called upon (and are encouraged to volunteer) to present their homework assignments in class.
Homework assignments will not be accepted after their respective due dates. (Exceptions may be made for accessibility reasons or extenuating circumstances, but only if we’ve agreed on the exception beforehand.)
The final project has two different components: the presentation and the documentation. Here are the details:
We’re going to produce a zine together! We’ll discuss the details of this in class (including format and due dates), but you’ll be required to contribute several pages of material drawn from work you’ve done in the class over the semester (your choice!).
Work will be evaluated according to the following criteria: compliance, gregariousness, and stubbornness.
Each assignment will be assigned a score of 0, 1 or 2 in these categories, in accordance with the extent to which the assignment demonstrates the properties described.
Each category will be weighted equally when assigning a final score to each assignment.
Many assignments and projects in this class may involve making use of text written by other people, as direct source material or as the basis of a statistical model. We’ll call such texts source texts or corpora (singular corpus). I ask that in this class you use only source texts that you are authorized to use.
Unfortunately, authorization, in this context, can’t be defined in an unambiguous fashion: we’ll need to approach each case ad hoc, on its own terms. Indeed, discussing questions of authorization will be a central activity of the class. But generally, I expect you to follow these principles:
Again, none of these principles are absolute, and every instance of text reuse is unique. Nevertheless, I think these principles are a good place to start when considering the relationship between you, the text, its authors, and its other contexts.
(“Hey, Allison,” you might be saying to yourself right now. “Don’t these principles sort of make it impossible to use large language models in a way that is ‘authorized’?” Wow, you catch on quick!)
If I asked you a question to your face, it would be rude to use an automated tool to produce a response. Same goes for your blog posts and assignments—they’re not there just for show; they’re a way for you to communicate with me (and the rest of the world).
This class is about computation; I’m teaching you the code so you know how it works, not just so you can do stuff with it. When we’re going over your code in class, I might ask you to explain how it works. Relying on large language models undermines your capacity for reaching this level of understanding.
Large language models do not produce facts, and anything fact-like that they seem to produce is cut off from the chain of provenance that lets us verify information and participate in discourse with others involved in the topic area. If a large language model “says” something, you always need to actually find out if it’s true.
Also: here in the roaring ’20s, we’ve been living with generative tools for some time, and the fact that something was produced from a generative model no longer automatically makes it interesting.
I discourage you from making use of the following corpora, subject matters and techniques as part of your work in this class, unless you have a strong reason for doing so, and a specific, critical approach:
In addition to the homework assignments described above, students will be assigned a number of programming exercises (in the form of digital worksheets) designed to challenge and confirm their understanding of the technical concepts under discussion in the class. Completion of these exercises is optional, but recommended, especially for students who judge themselves to be better learners when they’re “on the hook” to complete directed work. (I’m one of these students, for what it’s worth.) We won’t review these exercises in class, though I’m happy to answer questions about them by e-mail.
You are expected to attend all class sessions. If you’re unable to attend class, please let me know (by e-mail) before class begins.
Be on time to class. If you’re more than fifteen minutes late, or if you leave early (without my clearance), it will count as an unexcused absence.
I made a list of free/open source resources for learning Python, useful for supplementing course content.
I generally assign forty to fifty pages of reading every three weeks. The bulk of the reading is literary criticism, mixed in with some academic papers from social science, papers from computer science, technology criticism, and actual works of poetry. The goal of these readings is to suggest links between computational text analysis and text generation with the broader context of experimental literature, and to give students the tools they need both to contextualize their work in this broader field, to suggest techniques they can use in their own work, and introduce them practitioners they can draw inspiration from.
The primary tip I would give for these readings is to look up things that aren’t familiar to you and follow interesting references. If there’s something in the text that you’ve never heard of before, look it up on the Internet (or send me an e-mail). If there’s a footnote for a paper that looks interesting, find it on the web (try using Google Scholar) and read it too. Plan on using about 50% of your reading time looking stuff up and following references.
Other things to try (these are things that I do):
Do not use generative AI tools (ChatGPT, Gemini, NotebookLM, etc.) to summarize readings. Language models do not produce summaries—they produce an artifact that statistically resembles what a summary of a text might look like. The purpose of a text is not to contain information, but to produce readings of it; what is important is your reading of the text, not its “contents.” Every reading is unique and your eye will be drawn toward something in the text—a particular phrasing, a personal connection, a typo, whatever—that has never drawn attention before.
The class has no required texts, but here are a few recommended texts of interest:
Plagiarism is presenting someone else’s work as though it were your own. More specifically, plagiarism is to present as your own: A sequence of words quoted without quotation marks from another writer or a paraphrased passage from another writer’s work or facts, ideas or images composed by someone else.
The core of the educational experience at the Tisch School of the Arts is the creation of original academic and artistic work by students for the critical review of faculty members. It is therefore of the utmost importance that students at all times provide their instructors with an accurate sense of their current abilities and knowledge in order to receive appropriate constructive criticism and advice. Any attempt to evade that essential, transparent transaction between instructor and student through plagiarism or cheating is 212-998-4980. Please let your instructor know if you need help connecting to these resources.
Laptops will be an essential part of the course and may be used in class during workshops and for taking notes in lecture. Laptops must be closed during class discussions and student presentations. Phone use in class is strictly prohibited unless directly related to a presentation of your own work or if you are asked to do so as part of the curriculum.
Tisch School of the Arts to dedicated to providing its students with a learning environment that is rigorous, respectful, supportive and nurturing so that they can engage in the free exchange of ideas and commit themselves fully to the study of their discipline. To that end Tisch is committed to enforcing University policies prohibiting all forms of sexual misconduct as well as discrimination on the basis of sex and gender. Detailed information regarding these policies and the resources that are available to students through the Title IX office can be found by using the following link: Title IX at NYU.