Directed as a workshop, this course will focus on students' writing from the perspective of a producer. We will pay special attention to a variety of media -- digital, social, print -- and the ways they translate to an individual's writing practice. Guest lectures, off-site/online events, and weekly reading will be determined by the instructor and student interests.
This course introduces students to the history and practice of procedural poetry: poems made by rules, constraints, appropriation and chance. In particular, the course focuses on teaching students how to use the Python programming language to create computer programs that produce poetry. Programming tutorials will be interspersed with readings from well-known practitioners in the field, focusing on technique, historical context and theory. No previous programming experience is required.
This is a creative writing course. After a fashion. It might be more accurately termed a creative reading course: specifically, how can we write computer programs that give digital texts interesting readings? What interesting artifacts might we thereby create?
This course is about learning how to program computers. In specific, you'll be learning how to program in Python. Why Python? Because it's easy to learn, it's elegant, and it makes text processing easy. It is also awesome. Course sessions generally take the form of technical tutorials.
This course incorporates performance. 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. When critiquing one another's work, students must read or otherwise perform aloud the piece in question.
Attendance at Creative Writing Events
As part of their participation grade for this course, students are asked to attend the following three creative writing-related events at Fordham's Lincoln Center campus:
- Wed, October 8, 7pm–8pm: New Media Colloquium. (Featuring your instructor and Benjamin Samuel, Editor at Large at Electric Literature)
- Mon, November 24, 7:00pm–8:30pm: Poets Out Loud. (Featuring Erica Doyle and Angela Jackson)
- Wed, December 3, 7:00pm–8:30pm: Creative Writing Program Reading.
All three events will be held here: 113 W. 60th Street, New York, NY (12th Floor Lounge).
|Attendance and participation||25%|
|Homework assignments||35% (9% × 4)|
This course has two required texts:
(These are NOT available in the University bookstore—I missed the deadline. Sorry about that. Please acquire them from Amazon or your favorite independent bookseller.)
Reading material will be assigned on alternate weeks. Readings that aren't in the official textbooks will be made available either as links to documents on the web or as handouts. Generally, the first twenty to thirty minutes of alternate class meetings will be devoted to a discussion of the reading.
Other recommended reading material:
- Nissenbaum and Friedman. Bias in Computer Systems
- Wardrip-Fruin, N. Authoring New Processes
- An Annotated History of Character Codes
- Aarseth, Espen. Cybertext: Perspectives on Ergodic Literature
- Bird, Klein and Loper. Natural Language Processing with Python
- Goldsmith, K. Uncreative writing (also a book)
- Montfort, N. On Reading
You are expected to maintain a blog for this class. You'll use this blog for posting documentation of your homework assignments and projects. If you use an existing blog, please make sure that entries relating to this class are specifically marked as such (by, e.g., tags, categories, etc.). If you've never set up a blog before, we'll go over how to do it in-class. Once you have everything set up, send me a link.
There are a total of four homework assignments, which in aggregate are worth over one third (35%) of your grade. 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 the program does;
- what kind of input the program expects; and
- what the output of the program looks like.
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.
There are two projects in this class, the midterm project and the final project. Both projects are free-form (i.e., you can choose what you want to do), but must consist of Python programs that produce textual output, with a deeper conceptual and technical investment than is expected in the homework assignments. (Further details about project parameters will be made available)
You will be asked to present your projects in-class. You must also document your projects on your blog, and send links to your documentation to the instructor.
The midterm and final projects have two different components: presentation, and documentation. Here are the details:
- 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 5-10 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.)
You will need to have access to a computer running a desktop operating system (like Mac OS X, Windows, or Linux) in order to do the work for this course. I expect most students will bring laptops to class and follow along with the tutorials as I give them. Every effort will be made to supply written or screencast copies of the tutorials after they're presented, for those who are unable to (or prefer not to) bring a laptop to class.
Attendance and lateness policy
You are expected to attend all class sessions. Absences due to non-emergency situations will only be cleared if you let me know a week (or more) in advance, and even then only for compelling personal or professional reasons (e.g., attending an important conference, going to a wedding). If you're unable to attend class due to contagious or incapacitating illness, please let me know (by e-mail) before class begins.
Each unexcused absence will deduct 3% from your final grade. If you have five or more unexcused absences, you risk failing the course.
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.
Laptops must be closed during class discussions, and while your fellow students are presenting work. You're otherwise welcome to use laptops in class, but only to follow along with the in-class tutorials and to take notes.
Week 1: September 5th
Syllabus and schedule review. Course methodology.
READING #1: To be discussed September 9th. 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.)?
- Padgett, R. Excerpts from Creative Reading.
- Glazier, L.P. Grep: A Grammar. In Witz 7.1 (Spring 1999). Examples of Glazier's "grep works" can be found here. (You only need to read the "Grep: A Grammar" section from this PDF, not the other articles.)
- Borsuk, Amaranth. The Upright Script: Words in Space and on the Page
Week 2: September 9th and 12th
Relevant work. Introduction to the UNIX command-line.
ASSIGNMENT #1: Due September 16th. Create a poetic work using UNIX command-line tools. Use some of the texts discussed in class as source material, or find your own source material.
Week 3: September 16th and 19th
Python: First steps (installing and running, using the interactive interpreter). Making poems with expressions.
OPTIONAL PROGRAMMING EXERCISE: Do all of the problems labelled "EXERCISE" in the notes above.
READING #2 (to be discussed September 23rd). Questions to guide your reading: 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? Read Mac Low's description of the PFR-3 poems. Can you figure out how you would implement a similar system? How do you feel about the output of Mac Low's algorithm, knowing a little bit about how it was constructed?
- Hartman, chapters 1-3 (pp. 7-37).
- Mac Low, pp. 137-148 ("PFR-3 Poems") and pp. 181-191 ("Words nd Ends from Ez")
- Burroughs, W. The Cut-Up Method of Brion Gysin
Week 4: September 23rd and 26th
Python: expressions and strings, continued.
Notes: Writing Python programs
ASSIGNMENT #2 (Due September 30th): Write a simple Python program that behaves like one of the UNIX utilities discussed earlier in class. Use your program to transform some source text into something new.
Week 5: September 30th and October 3rd
Python: Writing simple programs that make decisions about lines.
READING #3 (to be discussed October 7th)
- Hartman, chapter 4 (pp. 38-53).
- Mac Low, pp. 80-94 (the Asymmetries).
- Hartley, G. "Listen" and "Relate": Notes Towards a Reading of Jackson Mac Low
Week 6: October 7th and 10th
Python: Simple programs continued. Lists and loops. Midterm project pitches.
Notes: Lists and loops.
MIDTERM PROJECT ASSIGNED. Due October 17th.
Week 7: October 14th and 17th
Midterm project presentations. More on lists and loops.
READING #4 (to be discussed October 21st).
- Hartman, chapters 5 and 6 (pp. 54-72).
- Mac Low, pp. 178-180 ("French Sonnets"), pp. 49-80 ("Stanzas for Iris Lezak")
- Morris, J. How to Write Poems with a Computer. (From Michigan Quarterly Review, Winter 1967.)
Week 8: October 21st and 24th
Python: Lists and loops continued.
ASSIGNMENT #3 (due October 28th): The digital cut-up. Write a program that reads in some input (possibly from more than one source), breaks the input into chunks (of some kind), then creatively re-arranges those chunks and prints the output. Use the list data structure and the split and join methods.
- a program that does random word replacement: read in all of the words, then at random replace a word from a random word in the list.
- make a program that works like mac low's asymmetries: start with a seed text, then find the resulting words in the text.
- a program that makes poems out of a random one letter word, followed by a random two letter word, followed by a random three letter word, followed by a random four letter word
- a program that prints out stanzas from words that start with the same letter (choose a letter)
- make a program that prints out each line of a text, but with the words in alphabetical order.
Week 9: October 28th and 31st
Python: Working with multiple files.
READING #5 (to be discussed November 4th):
- Hartman, chapters 7-9 (pp. 71-109); appendix (pp. 110-152).
Extra credit worksheet (worth 3 points), due November 4th: Worksheet #1. Modify this program as stated in the instructions for each task. E-mail me your completed worksheet as a file attachment.
Week 10: Noveber 4th and 7th
Python: Multiple files, continued.
ASSIGNMENT #4 (due November 11th): The digital cut-up, part two. Write a Python program that reads in (at least) two different text files using the `open()` function. The program should creatively re-arrange and juxtapose the contents of these two files. Use lines, words, or characters as your basic unit of re-arrangement.
Extra credit worksheet (worth 3 points), due November 11th: Worksheet #2. Modify this program as stated in the instructions for each task. E-mail me your completed worksheet as a file attachment.
Week 11: November 11th and 14th
READING #6 (to be discussed November 18th):
- Goldsmith, K. It's Not Plagiarism. In the Digital Age, It's 'Repurposing.'
- Rubenstein, R. Gathered, Not Made: A Brief History of Appropriative Writing
- Montfort, N. On Reading.
- Perloff, M. Conceptualisms, old and new
Week 12: November 18th and 21st
Python: More on dictionaries!
Extra credit worksheet (worth 3 points), due November 25th: Worksheet #3
Come prepared on the 25th with an idea and (rough) prototype for your final project.
Week 13: November 25th
Final project pitches. Python: Working with external libraries.
Notes: Making Things With Twitter
READING #7 (to be discussed December 2nd): Spend some time over Thanksgiving break reading Mac Low's "Stein Poems" (pp. 376-420).
Week 14: December 2nd and 5th
Python: TextBlob. Lab/workshop day.
Week 15: December 9th
Final project presentations.