Reading and Writing Electronic Text
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.
Ethos and practice
This is a creative writing course. The primary act we’re going to engage in over the course of the semester is the creation of interesting texts. We’ll primarily be using computer programs to undertake this task, which does make this class a bit unusual, as far as creative writing classes go.
This course is about the Python programming language. Why Python? Because it’s easy to learn, it’s elegant, and it makes text processing easy, and it’s commonly used by professionals and artists in the field of computer-generated text. Plus, I just like it.
This course incorporates reading aloud. A text has many affordances, and one of those is to be read aloud. Don’t expect the output of your programs to stay on the screen. You may be asked, when presenting your completed homework assignments, to read the output of your program aloud.
|Attendance and participation
|5 x 8% (40%)
Here’s the breakdown of how grades correspond with percentages.
|90 to 100
|80 to 89
|70 to 79
|60 to 69
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.
Reading and materials
Reading material will be assigned on alternate weeks. Readings are typically made available either as links to documents on the web or as handouts. Generally, the first twenty to thirty minutes of alternate classes will be devoted to a discussion of the reading.
Tips for reading
I generally assign forty to fifty pages of reading every two 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):
- Print it out and read it on paper. Write notes in the margins and highlight passages that you think are interesting or helpful.
- Copy out passages of interest longhand (or re-type them). This helps you remember the passage better.
- Keep a file on your computer of “quotes from papers” with the interesting passages you come across. (Think of it as your commonplace book.)
- If you’re reading on a computer, use a program like SelfControl to stop yourself from checking social media.
There are no required books, but here are a few books of interest:
- Lillian-Yvonne Bertram’s Travesty Generator. (Noemi Press, 2019).
- Hartman, Charles. Virtual Muse: Experiments in Computer Poetry. (The full text of this book is also on Project Muse.)
- Mac Low, J. Thing of Beauty (highly recommended!)
- Any and all books from Counterpath’s Using Electricity series
- Bergvall et al., eds. I’ll Drown My Book: Conceptual Writing By Women
Resources for learning Python
We’re going to be thorough with the basics, but we’re also going to move fast. Fortunately, there are many resources out there for learning Python. You might benefit from going through some of them. I recommend:
- Automate the Boring Stuff with Python
- Think Python: How to Think Like a Computer Scientist
- Python from the Very Beginning
- Official Python tutorial
- Learn Python the Hard Way (good but $$$)
Assignment and project expectations
In addition to complying with the parameters of the assignment as outlined in class, 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.
The final project has two different components: the presentation and the documentation. Here are the details:
- The final project presentation should consist of (a) a performance of your piece (3-5 minutes) and (b) a presentation of your methodology (inspiration, goals, technical challenges, etc.). This presentation should last no longer than 10-12 minutes (leaving plenty of time for critique and Q&A).
- The final project documentation should consist of (a) the text of the piece the student plans to read (or equivalent documentation in the form of video, still images, audio recording, etc. depending on the shape the piece takes) along with (b) a discussion of methodology and (c) the Python source code for the project. (Basically, I’m expecting a nice, meaty blog post.)
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!).
I strongly 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 and a particularly critical approach:
- Authoritarian political leaders. Their speech is designed to be over-the-top and absurd. This is a gaslighting strategy, and I’m not convinced that computation can do anything other than draw attention to and amplify it.
- Haiku. There are already dozens if not hundreds of haiku generators out there. (We’ll look at a few in class, including one made in the 1960s.) Unless you have an extraordinarily novel approach, try working on another genre. Villanelles? Tanka?
- Craigslist Missed Connections. Luke and Anna got there first. (Among others.)
- Projects that use the raw output of large language models like GPT-3, the OpenAI API, etc. in an uncritical way, even if creatively prompted. (We’ll talk more about these technologies during the course of the class.)
Work will be evaluated according to the following criteria: compliance, gregariousness, and stubbornness.
- An assignment is compliant if it meets the brief.
- An assignment is gregarious if it makes connections between course content and the rest of the world; e.g. your own interests as an artist, designer, technologist, etc. and/or other fields of research and practice.
- An assignment is stubborn if it provides evidence that its maker was opinionated about what they wanted to accomplish and did not let small setbacks (whether conceptual or technical) deter them this end.
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.
- 0: No evidence of quality
- 1: Meets expectations
- 2: Shows exceptional effort
Each category will be weighted equally when assigning a final score to each assignment.
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.
Attendance, lateness and in-class behavior policies
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.
Procedures should punch up
Read Leonard Richardson’s Bots should punch up. “You can poke fun at yourself (Stephen Colbert famously said ‘There’s no status I would not surrender for a joke’), you can make a joke at the expense of someone with higher social status than you, but if you mock someone with lower status, it’s not cool.” Be sensitive to what your classmates might find offensive, triggering, or violent; be graceful (not defensive) and listen carefully when your work gets called out.
On the use of large language models and automated code generation tools
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. As such I invite you to refer to Vaithilingam et al., whose study shows that LLM-based code generation tools do not “improve the task completion time or success rate,” but do lead to “difficulties in understanding, editing, and debugging” that “significantly hinder” programmers’ “task-solving effectiveness.”
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.
Statement of academic integrity
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.
Statement of principle
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.
Statement on use of electronic devices
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.
Statement on Title IX
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.