Skip to content

taking three different novels, shuffling and formatting their words to create a computer produced poem.

License

Notifications You must be signed in to change notification settings

EvelynGriffith/Computational_poetry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Course Project

Please note that all of the deadlines listed below are hard deadlines. This means that you need to meet them. Given the short nature of this course, the time I have to evaluate your work is likewise truncated. Turning things in on time is the only way that I have to make sure that I can meet my deadlines and be fair to you.

  • Assigned: 4 February, 2021
  • Due: 11 February, 2021, 11:59 PM

Table of Contents

Overview

This semester, in the course of learning fundamental computational concepts using Python, you've been using structured, semi-guided exercises to explore topics. This project invites you to explore and expand your knowledge in greater detail by applying your skills to a different kind of "problem": one of creating a text work.

What do I mean when I write "text work"? The term is, like so many we use, necessarily ambigious. It could be a translator that turns all words in a text into variations of the word "meow"; it could be a graphic novel generator that uses Flickr images and some image magic to create visual detective comics; it could even be someting madlib-like that tells us what some random fictional, nameless person in a random place is doing as the clock rolls on.

Heck, it could be a list of fake names of people on a list to go to the Moon (that has a narrative quality to it).

Your goal is deceptively complex: come up with an interesting concept and figure out how to make that concept happen -- in code. You could figure out a way to extract every word beginning with the letter p from Pride & Prejudice. You could choose 20 of your favorite (public domain) texts and select random words from each randomly until you've finished the requirements. Heck, you could even create a graphic novel about ellipses, rectangles, and polygons trying to avoid being erased by using PIL to generate shapes and paste text.

Supporting readings

These readings will be the subject for our activity to close out this week. Concentrate on the Kazemi reading and one or two of the projects there and one or two of the projects I've provided.

They are all much less complex than they seem. Don't focus on the code, though (I provide it as a reference), focus on the process you think the author useked to make them. This is less about "load a file and read a line" and more about thinking (using Generative Detective as a sample):

  1. I would find a picture and do something to it to make it look like a comic book
  2. I would find some detective novel or text that's interesting
  3. I would randomly take a line from that text using some keywords
  4. I'd then paste that line at the bottom in a box that looks like comic book descriptions
  5. I will not care if it only vaguely makes sense, but it's better if it does

This post from notoriously great internet person Darius Kazemi should help break down some of the "OMIGOSHICAN'TDOTHATWUT" that tends to accompany the first time you do someting like this:

More examples

Evaluation

Type Point value
Documentation 120 pts.
Working code and output 80 pts.
Total 200 pts.
20% of course

Being a 100% arbitrary measure, your creative intent with this project is the goal.

Simply put, the outcome of this project should be one of the following:

  • A single text file containing the complete output of one run of your program, or
    • This text file must contain at least 500 individual words
  • A series of at least 6 images, named according to the order to "read" them
    • These images must contain some text -- be it caption or speech "bubble"

But those general goals are a bit too easy. I have more requirements.

Requirements

Component Due Date Weight
Idea 5 February 40 pts.
Progress report 8 February 40 pts.
Final report 11 February 40 pts.
Final code and output 11 February 80 pts.
Total 200 pts.

For this assignment, I will not accept any adventure games. I am glad to discuss my reasoning with you.

This project assumes a very high level of autonomy. Meeting due dates is a key way to demonstrate that you're on track and that you're doing well with this kind of "free-range" project. I advise you to work iteratively (that is, in pieces over time) to complete the work and not let the due date sneak up on you. A project like this is no fun if you start it the night before.

Plus, by that time, you've already missed a bunch of deadlines.

The docs

Each of these documents already exists in the docs directory. It is up to you to complete them.

  • An idea of no fewer than 100 words which:

    • Proposes a tentative/working/permanent title for your project
    • Describes the project you intend to create
    • Your motivation or interest in doing so
    • Potential roadblocks or perceived challenges
    • A description of the ideal outcome/output
  • A progress report of no fewer than 200 words that:

    • Describes the state of your project: where are you at? What do you still need to complete?
      • This should take the form of a Markdown list of outstanding tasks and a brief paragraph describing your progress
    • Summarizes your current challenges: where are you stuck? What could you use help with?
    • Celebrates your successes: surely you have some.
  • A final report of at least 300 words which:

    • Contains the final title
    • Summarizes your end-of-project thoughts: how do you feel about the outcome of your project?
    • Describes how your project changed over time -- did you need to make it more complex? Simpler? How/why?
    • Contains a "post-mortem" which thinks about:
      • what worked?
      • what didn't?
      • what would you have done differently?
      • what was the biggest challenge that you overcame? How did you do it?

The code

This section refers to custom or self-written modules. Using a self-written module is highly encouraged, but not required.

This code should be written in the main.py file in the src folder and write all of its output to the output folder. With respect to the last objective, you'll find using ../output as the beginning of your file path helpful.

Any data source that you use should be placed in the data folder. Like the above output folder example, loading these files in main.py should use the ../data prefix to the path.

Your code should:

  • Contain at least one function
    • If your project uses a custom module, functions like __init__, et al. do not count
  • Use at least one kind of data structure (list, tuple, dictionary)
  • Reads at least one file as input
  • imports (and uses) at least one additional module
    • If you write your own module, this counts
  • Contains at least one for or while loop
    • Though, I trust you'll have to use more
  • Use a productive number of single-line comments
    • Here, the number is at least 15, though I imagine you'll need many more
  • Be completed in a *.py file
    • I am, however, open to projects which think about Jupyter notebooks as a storytelling device
      • Think about this one; it could be interesting
      • You need to tell me that's what you want to do, though
  • If your program requires input, you will need to provide an example of each prompt's input in the src/inputs file.
A note on external libraries and modules

You do not have the ability to install additional libraries on the server. However, if you request an additional module, I can. I reserve the right to choose not to install a requested module and provide a reason why. We do have some additional functionality already on the server:

  • markovify
  • PIL
  • opencv
  • spaCy
  • textwrap3

Some of these we haven't seen or discussed. Odds are, if there's a module you'd like to use, we haven't. Though I am glad to talk with you about using any "non-standard" modules, it's up to you to really integrate them into your project through exploration or trial-and-error. I suggest reviewing documentation as a start.

This project can be completed with interesting output using only the modules we already have.

The repository

Because this work should take place iteratively, this repository requires at least 10 commits.

Some resources

Struggling for what to do with a text or with images? Here are two resources which may help:

About

taking three different novels, shuffling and formatting their words to create a computer produced poem.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages