- Syllabus
- TA: Luca Todd
- https://itp405spring2020.slack.com
- SQL Playground
- Demos
- Final Project Requirements (due 5/3 at 11:59pm)
(4/27) Week 16 - Token-based Authentication for SPAs with JSON Web Tokens (JWT)
Lecture
- Basics of Single Page Applications (SPA)
- Cross-Origin Resource Sharing (slides)
- Authentication with JSON Web Tokens (JWT)
- Hashing, Encryption, and Digital Signatures Overview
- Token-based Authentication for SPAs Overview
- Demo
- Lecture Recording
Additional Resources
- Ember.js - A framework for ambitious web developers.
- What is CORS?
- Express CORS Middleware
- Writing Express Middleware
- What is JSON Web Token?
- JWT Decoder
- Why is 'Bearer' required before the token in 'Authorization' header in a HTTP request?
- Hashing, Encryption, and Digital Signatures
- The Ultimate Guide to handling JWTs on frontend clients
- REST API Conventions (unrelated to this lecture)
(4/20) Week 15 - NoSQL Databases and MongoDB with Michal Meyers
- Lecture Recording
(4/13) Week 14 - Real-Time Web with WebSockets: Part 2
Lecture
- Chat Demo with Adonis 4.1
- Lab 5 - Relational vs. Non-relational Database Research (due 4/20 at 5pm)
- Lecture Recording
Additional Resources
(4/6) Week 13 - Real-Time Web with WebSockets: Part 1
Lecture
Additional Resources
- Building a Simple Chat Application with Web Sockets in Node.js
- ws: a Node.js WebSocket library
- Object Relational Mapping with Sequelize (pre-recorded lecture for ITP 405 - Spring 2019)
(3/30) Week 12 - Asynchronous Programming with Promises
Lecture
- Common JS Module Demo
- Promise Demos
- Assignment 6 - Building an API with Express and Knex (due 4/6 at 11:59pm)
- Lecture Recording
Additional Resources
(3/23) Week 11 - Laravel Wrap-up / Introduction to Node.js
Laravel Wrap-up
Node.js - Installation, Synchronous vs. Asynchronous Programming, and Callback Functions
- Node Introduction Slides
- Node.js
- Node Version Manager (nvm)
- The Node REPL and running a JS file with Node
- Callback Function Demos
- Building an API with Express (see 1.x pull requests)
- Lecture Recording
Additional Resources
- Switching between multiple Node versions with Node Version Manager
- When and when not to use Node.js
- What the heck is the event loop anyway? - Philip Roberts - JSConf EU
- Asynchronous vs synchronous execution, what does it really mean?
- A Journey into Node.js Internals - Tamar Twena-Stern (Advanced)
(3/16) Week 10 - Spring Break (No Class)
(3/9) Week 9 - Midterm
(3/2) Week 8 - Laravel 4: ORM (continued), Migrations, Middleware, Authentication
- ORM (continued)
- Migrations
- SQLite Cheatsheet
- Middleware
- Authentication
- Single Action Controllers
- Assignment 5 - Laravel 4 (due 3/23 at 11:59pm)
- Code broken down by steps (see 4.x pull requests)
- https://dtang-music.herokuapp.com/
- Midterm on 3/9
- Lecture Recording
(2/24) Week 7 - Laravel 3: Object-Relational Mapping (ORM)
- Eloquent ORM
- ORM Slides
- Assignment 4 - Laravel 3 (due 3/2 at 11:59pm)
- Lab 3 - Project Proposal (due 3/2 at 11:59pm)
- Code broken down by steps (see 3.x pull requests)
- https://dtang-music.herokuapp.com/
- Midterm on 3/9
- Lecture Recording
(2/17) Week 6 - Presidents' Day (No Class)
(2/10) Week 5 - Laravel 2: CRUD, Flashed Session Data, and Validation
- CSRF in Laravel
- CSRF Slides
- Protecting Web Applications Against Cross-Site Request Forgery (CSRF) Attacks
- Query Builder
- Validation
- Old Input
- Controller method naming conventions (see "Actions Handled By Resource Controller" section)
- Assignment 3 - Laravel 2 (due 2/24 at 11:59pm)
- Assignment 3 - Laravel 2 SOLUTION
- Lecture Recording
- Code broken down by steps (see 2.x pull requests)
- https://dtang-music.herokuapp.com/
(2/3) Week 4 - Laravel 1: Intro to MVC
- The Model-View-Controller (MVC) Pattern vs. "Spaghetti Code"
- Laravel – Routes, Controllers, Query Builder, and Views
- Deploying Laravel to Heroku with SQLite
- Bootstrap
- Assignment 2 - Laravel 1 (due
2/102/24 (Monday) at 11:59pm) - Assignment 2 - Laravel 1 SOLUTION
- Lab 2: Research CSRF (due 2/10 at 5pm)
- Lecture Recording
- Code broken down by steps (see 1.x pull requests)
- https://dtang-music.herokuapp.com/
(1/27) Week 3 - PDO
- HTTP Lifecycle
- Database-driven Web Pages Review
- PHP Data Objects (PDO), Prepared Statements, and Parameter Binding
- Sample SQLite Database
- SQLite Cheatsheet
- VSCode SQLite Extension
- Composer
- Deploying a Plain PHP App with SQLite to Heroku
- Assignment 1 - PDO (due
2/32/7 (Friday) at 11:59pm) - Demo (in class)
- Demo (version 2)
- Lecture Recording - Part 1
- Lecture Recording - Part 2
(1/20) Week 2 - MLK (No Class)
(1/13) Week 1 - Course Introduction
- Introduction
- Syllabus Overview
- Join Slack
- Introduction to the command line interface (CLI)
pwd
,cd
,ls
,ls -a
,touch
,open -a 'Visual Studio Code' .
- Install Git
- GitHub
- Git Overview
- Markdown Cheatsheet
- Install PHP
- SQL Review - SQL Playground
- Reading: PHP Object Oriented Solutions – Chapter 1 & 2
- Reading: Object-Oriented PHP for Beginners
- Lab 1: Research Prepared Statements (due 1/27 at 5pm)
- Lecture Recording