ITP 405: Advanced Back-End Web Development

(4/23) Week 16 - Conclusion (not recorded)

  1. Final project extra credit
  2. Review written exam
  3. Working as a SWE, salaries, interviews, financial independence
  4. Final project requirements (due Sunday, 4/28 at 11:59pm)

(4/16) Week 15 - Building an API in Node.js

  1. Assignment 8 solution
  2. Extra reading: Callbacks, Promises, and fetch
  3. Recommended reading: Understanding JavaScript Promises (free version)
  4. Recommended reading: Understanding JavaScript Promises (full version)
  5. Node.js theory (slides)
  6. Demo

(4/9) Week 14 - Intro to Node.js, Written exam

  1. Demo (Node.js)
  2. Assignment 8 (due on 4/16 at 5pm)
  3. Written exam at 6pm (in person)

(4/2) Week 13 - Building a REST API

  1. Assignment 7 solution
  2. What is an API? (slides)
  3. Insomnia app
  4. Demo
  5. Laravel documenation: Resource controllers
  6. Laravel documentation: Route model binding
  7. Laravel documentation: Eloquent Serialization
  8. Laravel documentation: Eloquent API Resources
  9. The JSON:API Specification
  10. Action item before next class: Install Node.js with Volta (preferred) or directly from the Node.js site
  11. Written exam next week at 6pm (in person)

(3/26) Week 12 - Laravel - Consuming third-party APIs, Caching

  1. What is an API? (slides)
  2. Demo
  3. Laravel documentation: Cache
  4. Laravel documentation: HTTP Client
  5. Assignment 7 (due on 4/2 at 5pm)
  6. Written exam on 4/9 at 6pm)
  7. Final project (due Sunday, 4/28 at 11:59pm)

(3/19) Week 11 - Cancelled

  1. Assignment 6 solution

(3/12) Week 10 - Spring recess

  1. No class

(3/5) Week 9 - Mail and Queues

  1. Midterm review
  2. Review Assignment 5 solution
  3. Demo
  4. Laravel documentation: Mail
  5. Laravel documentation: Queues
  6. Assignment 6 (due in 2 weeks on 3/19 at 11pm)

(2/27) Week 8 - Midterm practical

  1. Midterm practical
  2. Assignment 5 (due on 3/5 at 5pm)

(2/20) Week 7 - Writing migrations and custom middleware

  1. Review Assignment 4 solution
  2. Demo
  3. Laravel documentation: Migrations
  4. Laravel documentation: Middleware
  5. Midterm practical next week on 2/27
  6. Assignment 5 (due in 2 weeks on 3/5 at 5pm)

(2/13) Week 6 - Running migrations, authentication, built-in middleware

  1. Demo - Authentication
  2. Laravel documentation: Migrations
  3. Laravel documentation: Authentication
  4. Laravel documentation: Authentication Starter Kits
  5. Laravel documentation: Middleware
  6. Upcoming midterm practical exam on 2/27
  7. No assignment

(2/6) Week 5 - Object-relational mapping (Zoom)

  1. Review Assignment 3 solution
  2. ORM slides
  3. Laravel Debugbar
  4. Demo 1 - Eloquent playground
  5. Laravel documentation: Installing Composer Dependencies for Existing Applications
  6. Demo 2 - Refactoring the invoice pages from Week 3
  7. Laravel documentation: Eloquent
  8. Assignment 4 (due in 2 weeks on 2/20 at 5pm)

(1/30) Week 4 - Inserting data with the query builder, validation, and flash data

  1. Review Assignment 2 solution
  2. CSRF slides
  3. Demo
  4. HTML for album form
  5. Assignment 3 (due 2/6 at 5pm)
  6. Reading: Protecting Web Applications Against Cross-Site Request Forgery (CSRF) Attacks
  7. Laravel documentation: Flash Data

(1/23) Week 3 - Introduction to Laravel

  1. Review Assignment 1 solution
  2. MVC Slides
  3. Demo
  4. Essential Laravel Sail Commands
  5. Video: PHP Namespaces in under 5 Minutes
  6. Assignment 2 (due 1/30 at 5pm)
  7. Action item: Before you leave class, create a Laravel application for Assignment 2 and push it to GitHub

(1/16) Week 2 - Review of Database-driven web pages with PHP and SQL (Recorded)

  1. Demo
  2. Assignment 1 (due 1/23 at 5pm)
  3. Markdown and README.md files
  4. Action item: Create a Laravel application called "music-app"
  5. Recording

(1/9) Week 1 - Class introduction, Git, GitHub, and GitHub Classroom

  1. Slides: Course introduction
  2. TA introduction
  3. USC Viterbi Slack
  4. How to ask me code related questions on Slack
  5. Introduction to Git and GitHub
  6. How to submit code through GitHub Classroom
  7. Demo assignment
  8. Download TablePlus database GUI
  9. Accessing this SQLite database via TablePlus
  10. Cheatsheet for accessing SQLite from the CLI
  11. Install and configure MAMP
  12. Demo: PDO connection to SQLite database
  13. Action item: Familiarize yourself with this SQLite database
  14. Action item: Familiarize yourself with OOP