Bryan Ma - bma@newschool.edu
In Data Poetics, we build upon our skills developed in Code 1 by moving beyond the image. We will take a closer look at the capacity of computers to process, interpret, visualize, and generate information, while studying everything from avant garde computational literature to the sociocultural implications of contemporary big data.
Through our study of the applications of regular expressions, Markov chains, web scraping, data visualization, and semantic networks, we’ll write client and server-side Javascript, creating browser extensions, Twitter bots, and our own custom APIs, drawing from speculative and critical design to investigate the connections between culture, technology, and information.
1 - Demonstrate knowledge and application of fundamental front-end and server-side programming skills in Javascript, using P5.js and Node.js.
2 - Demonstrate skill with the command line and github.
3 - Publish work on the internet via custom-built websites, browser extensions, and bots.
4 - Manipulate data and text critically, via APIs, databases, and regular expressions.
5 - Critically discuss and create work drawing from historical precedents of computational literature, critical design, and data visualization, as well as understanding the internet as a site for potential intervention.
Class Participation - Participation in this class is vital. This includes being on time, asking questions if you need help, being engaged with the material, and seeking out solutions or help when you run into difficulties. If I have to pursue you in order to get you to turn in work or address chronic low effort, absences, or tardiness, it’s a bad sign. No phones, social media, etc. in class. Use common sense - I’ll be present and engaged and I expect you all to be too.
Homework - Homework will be assigned on a weekly basis and will typically be an application of whatever was covered that day, to be turned in the evening before the next class via publishing on your github.io site. Grading for work will be based on if technical goals for the work is met, with a penalty for tardiness or incompleteness. Work can be made up and extra effort on correcting mistakes will be noted.
Midterm - The midterm is an extended, 2-week homework assignment that will be assessed along the same criteria as homework, with added emphasis on quality of execution beyond technical completeness. Midterms must be presented in class on time to receive full credit.
Final - The final project will be a polished work drawing from one or more of the topics of the course, that illustrate both conceptual and technical competency with the material. Finalized constraints will be discussed in class. Grading of the final will reflect the success of a project in relation to the learning outcomes, assignment constraints, in-class presentation, and effort/being on time.
Extra Credit / Special Considerations - Discuss with me if you have any special considerations (for example, if you’ve covered this material before). Extra credit may or may not be distributed based on effort and class participation.
Class Participation - 10%
Homework - 40%
Midterm - 20%
Final - 30%
Week 1 - January 23
- HTML DOM manipulation in developer tools
- Terminal, Git, Github.com review
- Homework: Set up github.io site, Terminal/HTML/CSS review and experimentation
Week 2 - January 30
- Introduction to Javascript
- Sublime Text, Package Control, GitGutter, Markdown preview
- P5.js, differences between Processing and P5.js
- P5 app vs. manual P5 app setup, SimpleHTTPServer
- Homework: P5.js sketch, Eloquent Javascript Ch. 1-2
Week 3 - February 6
- Basic string manipulation methods
- HTML canvas element, HTML DOM interaction
- SublimeLinter for JS linting
- Homework: DOM interaction with P5.js sketch, Eloquent Javascript Ch. 3-4
Week 4 - February 13
- Oulipo, DADA and the cut-up method, Erasures
- String and text manipulation in Javascript
- Text analysis, readability index
- Homework: Text generation/analysis
Week 5 - February 27
- Regular Expressions
- Browser extensions part 1
- Homework: Start midterm
Week 6 - March 6
- Browser extensions part 2
- Poetic forms
- Concordances
- Homework: Complete midterm
Week 7 - March 13
- APIs in P5.js, JSON, data visualization
- Wordnik, New York Times, openweathermap
- Text Generation, markov chains, n-grams, grammars
- Rita.js, Project Gutenberg
- Node.js, NPM, Express
- Homework: Server-side text generation
Week 8 - March 27
- Twitter bots (polling)
- Heroku, AWS, now.js
- Homework: Twitter bot
Week 9 - April 3
- Twitter bots (streaming)
- Databases, mongodb
- Homework: Database test
Week 10 - April 10
- Custom APIs, data models
- Homework: Custom API and data model
Week 11 - April 17
- Web scraping
- Homework: Start final project
Week 12 - April 24
- Other JS frameworks and tools
- D3, three.js, two.js, Angular, React
- Homework: Continue final project
Week 13 - May 1
- In-class work
- Homework: Continue final project
Week 14 - May 8
- In class work
- Homework: Complete final project
Week 15 - May 15
- Final project presentations
(Adjustments TBA)
- Eloquent Javascript - Marijn Haverbeke
- A User’s Guide To Détournement - Guy Debord, Gil J. Wolman
- Uncreative Writing, Chapter 2, Language as Material - Ken Goldsmith
- Programmed Visions, Computers That Roar - Wendy Hui Kyong Chun
- Virtual Muse: Experiments in Computer Poetry - Charles Hartman
- Introduction to Electronic Literature: A Freeware Guide