This course focuses on programming strategies and techniques behind procedural analysis and generation of text-based data. We'll explore topics ranging from evaluating text according to its statistical properties to the automated production of text with probabilistic methods to text visualization. Students will learn server-side and client-side JavaScript programming and develop projects that can be shared and interacted with online. There will be weekly homework assignments as well as a final project.
- Daniel Shiffman, Tuesdays, 9:00am-11:30am
- All class dates
- Office Hours
- In addition to the ITP physical class, I am running an online version of the class for Patreon subscribers. ITP students will receive a slack invite should they want to participate. YouTube live stream sessions TBA.
- Join ITP A2Z Google Group. This is for the ITP physical class only.
- Contact me for an invite to the online slack channel.
- Notes and Examples
- Git, Github, Github pages
- DOM manipulation in p5.js
- Strings in JS
- Text input (from user, from file)
- Client-side vs. Server-side programming
- Homework Assignment
- Notes and Examples
- Also
- multiple DOMs + multiple event
- rita.js -- similar and rhyming, etc.
- Regular Expressions
- meta-characters
- position
- single character
- quantifiers
- character classes
- alternation
- capturing groups and back reference
- Regex in atom editor
- Regex in JS:
- Regex:
test()
,exec()
- String:
match()
- Regex:
- Splitting with regex:
split()
- Replace with regex:
replace()
- randexp.js
- meta-characters
- Homework Assignment
- Notes and Examples
- JSON basics
- JavaScript libraries
- Getting data from APIs
- Working with google sheets: tabletop.js
- machine learning as service: clarafai
- Homework Assignment
- Notes on Node
- Notes on Twitter Bots
- Notes on deploy to heroku
- Notes on deploy to amazon ec2
- How to make a Twitter bot
- Start working on Twitter Bot project
- Homework Assignment
- Notes on text analysis
- In class, we'll build a simple concordance together as well as demonstrate and discuss TF/IDF and Bayesian analysis.
- Simple Concordance
- TF/IDF
- Bayesian Analysis
- Node text analysis packages
- Notes on N-Grams and Markov Chains
- What is an N-Gram?
- What is Markov Chain?
- order
- source text and output design
- char vs. word n-grams
- client-side vs. server-side generation
- Homework Assignment
- Notes on Context-Free Grammar
- Tracery by Kate Compton
- Context free grammars
- Homework Assignment
- Notes on API in Node
- Notes on Firebase
- Express
- serving files
- data persistence
- local json files, databases?
- Firebase
- html scraping, request package
- routes
- query string vs. "RESTian"
- CORS
- sending back JSON
- Text APIs
- Your own API (concordance, markov, etc.)
- AFINN-111 sentiment analysis (sentiment node package)
- spellcheck (with node natural)
- Bayesian text classification (with node natural)
Week 13 - User Testing
- Moved to references wiki
- JavaScript: The Definitive Guide
- Eloquent JavaScript, Marijn Haverbeke
- Beginning JavaScript, Paul Wilton and Jeremy McPeak
- CodeAcademy: JavaScript
- How to learn JavaScript properly
- JavaScript the right way
- Code School
- JavaScript garden
- A re-introduction to JS by Mozilla
- JavaScript 101 from JQuery
- Checking code: JSLint / JSHint
- Browser debugging: Chrome Developer Tools (tutorial) / Firebug (tutorial)
- Mobile debugging jsconsole.com
- Sharing code snippets (useful for asking questions): gist.github.com
- You are required to attend all class meetings and submit all weekly assignments and a final project.
- Grading (pass/fail) will be based on a combination of factors:
- Attendance, participation in class discussion, and engagement in other students' projects (25%)
- Quality of assignments (50%)
- Final Project (25%)