Giter Site home page Giter Site logo

mashups's Introduction

Mashups: Creating with Web APIs

NYU ITP Spring 2014
Class: Thursdays 6:30 - 9pm
Instructor: Craig Protzel
Email: [email protected]
Office Hours: Thursdays 10:30am - 2:30pm

Class Email List
Class Blog List
Office Hours Sign-Ups

Course Description

Much data and many services are now accessible through public APIs - Application Programming Interfaces - from sites such as YouTube, Google Maps, Twitter, and Xively. But how can we access these datasets and services? How can we transfer, store, initialize, and display this data on our own pages? And how might we use the data to create unique and creative web experiences of our own?

This class is about building interactive single-page web applications that leverage public data from a range of existing web services. The overall goal of the class will be for each student to have 3 functional well-designed single-page web applications by end of semester. Much of class time will be spent reviewing and writing code, mostly Javascript, for front-end (in-browser) web development. We will use a number of frameworks, including JQuery, Underscore, PaperJs, and D3. Where backend work is required, we will use Node-Express. Students should have some programming experience (ICM) as well as a basic understanding of web development (Comm Lab Web). Experience with Javascript is a plus.

Course Goals

  • Develop an understanding of front-end web development and the roles of client-side technologies, specifically HTML, CSS, Javascript, and public web APIs.
  • Develop a basic understanding of Javascript and the world of open source (client-side) Javascript libraries
  • Learn how to work with a variety of data-serving public web APIs
  • Learn how to create web pages in modern browsers that leverage data from web services via public web APIs
  • Gain exposure to server-side web development
  • Be empowered to produce compelling single page web experiences

Course Requirements

  • Sign up for class email list - ITP Mashups Google Group
  • Attend all classes, no more than 2 absences allowed
  • Arrive on time to the start of class or office hour appointment
  • Complete all homework exercises and assignments on time
  • Post homework exercises and assignments to your blog at least one hour prior to class
  • Participate in class through presentations, discussion, questions, and feedback
  • Respect fellow students' work, questions, and comments
  • Communicate with me if you need to miss class, would like extra help, or schedule additional office hours

Grading

25% Attendance & Class Participation
25% Homework
25% Assignments #1 & #2
25% Final Project

Syllabus

  • PART I: Weeks 1 - 5 Client-Side Web + API Fundamentals
  • PART II: Weeks 6 - 9 Client-Side Javascript Frameworks
  • PART III: Weeks 10 - 14 Server-Side Web + Final Project

Week 1 (01/30) - The Web, APIs, & Data

Class Intro
Review Course Info & Syllabus
Student Intros
Lecture: The Web, APIs, & Data
Homework

Week 2 (02/06) - Web Dev 101 - HTML, CSS, & Javascript

Discussion - Week 1 Homework
Mashup of the Day - Spell with Flickr
Workshop - HTML & CSS
  • Setting up your page(s)
  • Adding Elements
  • Basic Styling
  • Pair Programming Exercise
  • Review
Workshop - Intro to Javascript
  • Using the Browser Console
  • Playing with Data Types
  • The Window and the DOM
  • Google Maps API Example
Discussion - Assignment #1 Due Week 5 Class (03/02)
  • Create a single web page experience that, upon user input, responds with data from at least 2 web apis. One possible approach to this assignment would be to design the experience around answering a question for the user. An example of this is doineedanumbrella.com. An example of a mashup that pulls together data from two different apis is the InstaTimes example provided here in the class repo. Ulitmately, it's up to you what you want to build. But (1) a user needs to "trigger" an event, (2) data needs to be requested via AJAX from two APIs, (3) and the page should update appropriately. Your completed assignment should include a .html file, a .css file, and a .js file.
Homework

Week 3 (02/13): Making Things Happen On The Page - Javascript + jQuery

Discussion - Week 2 Homework
Workshop - Javascript + jQuery
Homework

Week 4 (02/20): Structuring Your App + Guest Talk by Josh Begley

Discussion - Week 3 Homework
Workshop - OOP in JS
Josh Begley - Guest Speaker
Homework

Week 5 (03/02): Assignment #1 DUE + Guest Talk by Martin Bravo

NOTE CLASS DATE HAS BEEN RESCHEDULED FOR SUNDAY 03/02 2:30PM
Presentations - Assignment #1
Martin Bravo - "Going From 0 to 1"
Homework

Week 6 (03/06): Data Organization & Management + Guest Talk by Jeremy Scott-Diamond

Managing the Data
Jeremy Scott Diamond - "Working With D3"
Discussion - Assignment #2 Due Week 9 Class (04/03)
  • Create a single web page experience that leverages data from at least one public api and incorporates the use of at least one "interaction" library (i.e. D3, P5, Popcorn, etc.)
Homework
  • Play with D3
  • Look at the P5js & PaperJS libraries

Week 7 (03/13): A Blank Canvas

Animation Tools
Homework
  • Play with an Animation Library
  • Look at the Web Audio API and Video Libraries

Week 8 (03/27): Moving Pictures & Sound

Audio
Video

APIs - Youtube & Vimeo

Homework
  • DUE - Assignment #2

Week 9 (04/03): Assignment #2 DUE + Intro to the Server

Presentations - Assignment #2

Week 10 (04/10): The Server & Storage + Guest Talk by Steve Klise

API - CouchDB

Steve Klise - "TBD"
  • References

Week 11 (04/17): Re-Introduce Ourselves with OAuth + Final Project Proposal

API - Twitter

Week 12 (04/24): Running Wild on Heroku + Guest Talk by Miguel Bermudez

Miguel Bermudez - "TBD"
  • References

Week 13 (05/01): Final Project Workshop & User Testing

Week 14 (05/08): FINAL DUE

Final Presentations

Helpful Links

General Web

HTML

CSS

JS

APIs

mashups's People

Contributors

craigprotzel avatar

Watchers

James Cloos avatar Eozin Che avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.