- Syllabus
- Instructor: David Tang
- TA: Shreesh Yadav
- Final project requirements (due Sunday, 4/28 at 11:59pm)
(4/23) Week 16 - Conclusion (not recorded)
- Final project extra credit
- Review written exam
- Working as a SWE, salaries, interviews, financial independence
- Final project requirements (due Sunday, 4/28 at 11:59pm)
(4/16) Week 15 - Building an API in Node.js
- Assignment 8 solution
- Extra reading: Callbacks, Promises, and
fetch
- Recommended reading: Understanding JavaScript Promises (free version)
- Recommended reading: Understanding JavaScript Promises (full version)
- Node.js theory (slides)
- Demo
(4/9) Week 14 - Intro to Node.js, Written exam
(4/2) Week 13 - Building a REST API
- Assignment 7 solution
- What is an API? (slides)
- Insomnia app
- Demo
- Laravel documenation: Resource controllers
- Laravel documentation: Route model binding
- Laravel documentation: Eloquent Serialization
- Laravel documentation: Eloquent API Resources
- The JSON:API Specification
- Action item before next class: Install Node.js with Volta (preferred) or directly from the Node.js site
- Written exam next week at 6pm (in person)
(3/26) Week 12 - Laravel - Consuming third-party APIs, Caching
- What is an API? (slides)
- Demo
- Laravel documentation: Cache
- Laravel documentation: HTTP Client
- Assignment 7 (due on 4/2 at 5pm)
- Written exam on 4/9 at 6pm)
- Final project (due Sunday, 4/28 at 11:59pm)
(3/19) Week 11 - Cancelled
(3/12) Week 10 - Spring recess
- No class
(3/5) Week 9 - Mail and Queues
- Midterm review
- Review Assignment 5 solution
- Demo
- Laravel documentation: Mail
- Laravel documentation: Queues
- Assignment 6 (due in 2 weeks on 3/19 at 11pm)
(2/27) Week 8 - Midterm practical
(2/20) Week 7 - Writing migrations and custom middleware
- Review Assignment 4 solution
- Demo
- Laravel documentation: Migrations
- Laravel documentation: Middleware
- Midterm practical next week on 2/27
- Assignment 5 (due in 2 weeks on 3/5 at 5pm)
(2/13) Week 6 - Running migrations, authentication, built-in middleware
- Demo - Authentication
- Laravel documentation: Migrations
- Laravel documentation: Authentication
- Laravel documentation: Authentication Starter Kits
- Laravel documentation: Middleware
- Upcoming midterm practical exam on 2/27
- No assignment
(2/6) Week 5 - Object-relational mapping (Zoom)
- Review Assignment 3 solution
- ORM slides
- Laravel Debugbar
- Demo 1 - Eloquent playground
- Laravel documentation: Installing Composer Dependencies for Existing Applications
- Demo 2 - Refactoring the invoice pages from Week 3
- Laravel documentation: Eloquent
- 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
- Review Assignment 2 solution
- CSRF slides
- Demo
- HTML for album form
- Assignment 3 (due 2/6 at 5pm)
- Reading: Protecting Web Applications Against Cross-Site Request Forgery (CSRF) Attacks
- Laravel documentation: Flash Data
(1/23) Week 3 - Introduction to Laravel
- Review Assignment 1 solution
- MVC Slides
- Demo
- Essential Laravel Sail Commands
- Video: PHP Namespaces in under 5 Minutes
- Assignment 2 (due 1/30 at 5pm)
- 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)
- Demo
- Assignment 1 (due 1/23 at 5pm)
- Markdown and
README.md
files - Action item: Create a Laravel application called "music-app"
- Recording
(1/9) Week 1 - Class introduction, Git, GitHub, and GitHub Classroom
- Slides: Course introduction
- TA introduction
- USC Viterbi Slack
- How to ask me code related questions on Slack
- Introduction to Git and GitHub
- How to submit code through GitHub Classroom
- Demo assignment
- Download TablePlus database GUI
- Accessing this SQLite database via TablePlus
- Cheatsheet for accessing SQLite from the CLI
- Install and configure MAMP
- Demo: PDO connection to SQLite database
- Action item: Familiarize yourself with this SQLite database
- Action item: Familiarize yourself with OOP