The Nature of Code Part 2 (Spring 2017)
Syllabus for Part 2 of Nature of Code: "Intelligence and Learning" at ITP Spring 2017
This syllabus is very much in progress. I'm drawing inspiration from this Coding Train community list of resources.
Class Info
- Daniel Shiffman: [email protected]
- Section 1: Tuesdays, 9:00-11:30am
- Section 2: Wednesdays, 9:00-11:30am
- Office Hours
- Sign up for Mailing List
- Resources and References
Prerequisites?
- Basic familiary with p5.js and Processing.
- Fundamentals of computer programming, equivalent to ICM
- While taking Nature of Code Part 1 is not required, I recommend you familiarize yourself with the following chapters before the first day of class.
- I assume no knowledge whatsoever about AI, machine learning, deep learning and the accompanying math required for the algorithms listed below. After all, I barely know this stuff myself.
Week 1 - Introduction (March 21/22)
- Week 1 Notes
- Week 1 Homework
- Class Intro / Overview
- Algorithms
- Big O notation
- Graphs
- Binary Tree
- Breadth-first Search
- Dijktra's Algorithm
- A* search
- Traveling Salesperson
- plus steering agents!
Week 2 - Genetic Algorithms (March 28/29)
- Week 2 Notes
- Week 2 Homework
- Search
- Evolutionary Design
- Evolutionary Ecosystem
Week 3 - Classification and Regression (April 4/5)
- Week 3 Notes
- Week 3 Homework
- What is Machine Learning
- What is Supervised Learning
- Classification and Regression
- KNN
- Linear Regression and Gradient Descent
Week 4 - Neural Networks (April 11/12)
- Week 4 Notes
- Perceptron
- Multi-Layered Perceptron
- inputs and outputs
- Backpropogation
- Training vs. Testing (MNIST data set)
- What is "Deep Learning"?
Week 5 - Adding Tensorflow: Convolutional Neural Networks (April 18/19)
- Environment Setup
- Week 5 Notes
- Assignment: Project Step 1
- Overview of libraries and frameworks for Deep Learning
- Convolutional Neural Networks for Image Classification (and more)
- Keras and Tensorflow
- Python and Flask
- Flask and p5.js
Week 6 - Recurrent Neural Networks, NeuroEvolution/Reinforcement Learning (April 25/26)
- Week 6 RNN Notes
- Week 6 Bonus NeuroEvolution Notes
- Recurrent Neural Networks for Sequences (text generation)
- Overview of Reinforcement Learning
- Neuro Evolution (evolving ANN weights)
Week 7 - Project Presentations (May 2/3)
Policies
- Submit assignments by the evening before class to the extent possible.
- Come prepared with questions.
- Put away screens during others' presentations.
- Participate!
- Document!
- Grading:
- 40% Class Participation
- 40% Quality of assignments
- 20% Final project
- For a 2-point class, 2 or more unexcused absences is grounds for failure.