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, 12:10pm-2:40pm
- All class dates
- Office Hours
- Notes and Examples
- Glitch Example
- Git, Github, Github pages
- DOM manipulation in p5.js
- Strings in JS
- Text input (from user, from file)
- Client-side vs. Server-side programming
- Workflow videos:
- 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
- ChatBot Slides
- TwitterBot Slides
- Notes on Node
- Notes on Twitter Bots
- ChatBots
- Voice Synthesis and Speech Recognition
- Conversational Interfaces
- Reading and References
- Homework Assignment
- Notes on text analysis
- In class, we'll build a simple concordance together as well as demonstrate and discuss TF/IDF, Bayesian analysis, and word2vec.
- Simple Concordance
- TF/IDF
- Bayesian Classification Library
- Node text analysis packages
- Word2Vec
- Grammars
- Homework Assignment
- Notes on N-Grams and Markov Chains
- Notes on RNN/LSTM
- 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
- All examples
- Notes on Node
- 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%)