Intermediate Programming
This course introduces advanced programming concepts through the construction of interactive experiences for the web by building on programming fundamentals learned in the introductory programming course. Students will learn software design patterns, synchronous and asynchronous programming, unit testing, version control, hosting, data formats and how to work with an API. Students will create interactive works using a variety of backend and frontend technologies. Possible projects include interactive data visualization, networked games, and responsive design.
Info
- Woodbury University - Intermediate Programming Spring 2018
- Lee Tusman, Tuesday && Thursday, 4 - 6:30pm
Week 1
- In-class notes
- Class introduction, description of syllabus and projects required for course
- Workflow fundamentals: IDEs - Brackets, SublimeText, Atom, Vim, Codepen, etc
- Review: Javascript fundamentals, Functions and Callbacks, Objects, Classes
- HTML, CSS and DOM events
- A gentle introduction to Javascript ES6
- Event Listeners
- JQuery Library
Week 2
- In-class notes
- Introduction to the Unix filesystem and working in the Terminal
- Introduction to Version Control with Git, Github
- Deploying projects with Glitch (FogCreek Software) and GitHub pages
- Client-side vs server-side
- Authentication
Week 3
- In-class notes
- Broad overview of working with APIs
- Various APIs online
- Assignment: Visualization and queries with API
- Working with data
- Introduction to JSON format
- Reading JSON
Week 4
- In-class notes
- Presentation of assignment 1
- More work with JSON
- Async loading
- API keys/authentication
- Getting around cross-domain problems with jsonp
- Encoding URLS
- example queries with OpenWeatherMap
- Intro to data visualization using API data and JSON
Week 5
- In-class notes
- Intro to NodeJS
- Runtime environment, library
- Installing node, working with a server, working locally
- NPM package manager
- More advanced work with NodeJS
- Modularizing code, using require()
- Built-in APIs for building web applications
- Express framework
Week 6
- In-class notes
- A broad overview of Bots and Assistants
- Introduction to Chatbots, Twitter Bots
- Examples of bots
- Automation rules and best practices
- Ethics of bots, digital assistants and procedural generation
- Text manipulation with Javascript
- Twitter API - Get, Post, Stream
- Deploying bots locally (crontab/Linux) and to remote servers
- Mini Assignment: Creating a Twitter bot
Week 7
- In-class notes
- Studio time and feedback on Twitter Bots
- In-class or stream interview with Bot creators
- Studio time for Alexa skill project
- User testing
- 1-on-1 meetings
Week 8
- In-class notes
- no class Tuesday
- Student Presentation: Twitter Bots
- Deployment to server
- Amazon AWS / Lambda
Spring Break
Week 9
- In-class notes
- Deploy to Amazon EC2
- Public and Private Keys - introduction video
- Voice command/assistance as a “verbal command line”
- Working with the Amazon Alexa Node package
- Project: Creating a Alexa “Skill” application
- Open studio time to work on Alexa Skill
Week 10
- In-class notes
- More work with Amazon Alexa
- Creating a Voice User Interface
- Setting up Amazon Web Services - Lambda functions
- Deploying
- Testing
Week 11
- In-class notes
- Data persistence
- Authentication
- Student presentations on Alexa Skills
Week 12
- In-class notes
- Overview of other Javascript libraries for graphic and games
- Learning/Bootstrapping languages and frameworks- How to Learn!
- Express routes
- CORS
- Creating your own API with Node and Express
Week 13
- In-class notes
- Intro to Persistence
- saving to database/server
- Firebase
- Final project intro work
- Browser Extensions/publishing
Week 14
- User testing
- Last chance for feedback before studio final project due
Week 15
- Student projects and public presentation
- Critique with industry professionals