Digital Workshop and Tools for Creative Writers

Fordham University, Fall 2014. Tuesdays and Fridays, 11:30am–12:45pm.

Your instructor is Allison Parrish, Digital Creative Writer in Residence. E-mail me.

Office hours: Fridays, 3:30pm-5:30pm LC 403B. (E-mail me to sign up.)


I've gathered a number of links and resources that may be of interest to students in this class. Find them here, on Github.

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.

Course methodology

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:

All three events will be held here: 113 W. 60th Street, New York, NY (12th Floor Lounge).

Grading Policy

Attendance and participation 25%
Midterm project 15%
Final project 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:


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.

Homework Expectations

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:

  1. a description of what the program does;
  2. what kind of input the program expects; and
  3. 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.

Project Expectations

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:

  1. 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).
  2. 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.

In-class behavior

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.)?

Week 2: September 9th and 12th

Relevant work. Introduction to the UNIX command-line.

Notes: Intro 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.

Notes: Python: Expressions and strings

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?

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)

Week 6: October 7th and 10th

Python: Simple programs continued. Lists and loops. Midterm project pitches.

Notes: Lists and loops.


Week 7: October 14th and 17th

Midterm project presentations. More on lists and loops.

READING #4 (to be discussed October 21st).

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.

Some ideas:

Week 9: October 28th and 31st

Python: Working with multiple files.

Notes: Text mashups: Working with multiple files

READING #5 (to be discussed November 4th):

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

Python: Dictionaries.

Notes: Dictionaries

READING #6 (to be discussed November 18th):

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.

Notes: TextBlob

Week 15: December 9th

Final project presentations.