Course Page for CSCI 39548 Practical Web Development - Spring 2023
Course Overview
- Course syllabus and logistics
- Join Slack
- Note: The above information is available on Blackboard.
Full-Stack Web Development
- Intro to full-stack web development (slides)
Git and GitHub
-
Intro to Git and GitHub (slides)
-
Guide on How to Set Up SSH Keys for Git and GitHub (document)
-
Description of Git Feature Branch Workflow Operation (document)
-
Guide on How to Set Up Team Repository on GitHub (document)
Demo
- Create a simple website GitHub repository, implement Git version control, and deploy repository to GitHub Pages (demo-website)
- Work with feature branch workflow (feature-website)
Resources
- Git Textbook
- Git Reference Manual and Complete List of Git Commands
- Git Cheat Sheet
- Video: Git Tutorial 1
- Video: Git Tutorial 2
- Simple Git Guide
- HTML Tutorial
- CSS Tutorial
Intro to Assignment 1
Demo
- Demo starter website for Assignment 1 (assignment1)
JavaScript
- Intro to JavaScript (slides)
- Eloquent JavaScript Chapter 3: Functions
- Sections: Defining a Function, Bindings and Scopes, Functions as Values, Declaration Notation, Arrow Functions, Optional Arguments, Functions and Side Effects
- Chapter 3: Functions (summary)
Node.js
Supplemental Materials
Watch for next class
Continue: JavaScript
- Eloquent JavaScript Chapter 4: Objects and Arrays
- Sections: Data Sets, Properties, Methods, Objects, Mutability, Array Loops, Further Arrayology, Strings and Their Properties, Rest Parameters, JSON
- Chapter 4: Objects and Arrays (summary)
- Eloquent JavaScript Chapter 5: Higher-Order Functions
- Sections: Abstraction, Abstracting Repetition, Higher-Order Functions, Transforming with Map, Summarizing with Reduce
- Chapter 5: Higher-Order Functions (summary)
Intro to Assignment 2
Demo
- JavaScript property and method examples (javascript-property-method-examples)
Document Object Model (DOM)
- Intro to DOM (slides)
Demo
- DOM examples (dom-examples)
Supplemental Materials
- Additional reference on intro to DOM (MDN: Intro to the DOM)
Work on Assignment 2 - JavaScript Methods
Continue: Document Object Model (DOM)
Demo
- Manipulate DOM in JavaScript (DOM manipulation)
Supplemental Materials
- Eloquent JavaScript Chapter 13: JavaScript and the Browser
- Eloquent JavaScript Chapter 14: The Document Object Model
- Eloquent JavaScript Chapter 15: Handling Events
Intro to Assignment 3
Demo
- Grid Maker application
Watch for next class: required videos (watch all in the series)
React
- React Docs: Create a New React App
- React App Structure and Data Flow (summary)
- React Docs: Main Concepts of React (Sections 1-5)
- Sections: Hello World, Introducing JSX, Rendering Elements, Components and Props, State and Lifecycle
- Install Node.js and NPM: Install via Download or Install via Package Manager
- NPM (Node Package Manager), NPX (Node Package Execute), NVM (Node.js Version Manager)
Demo
- A simple React application - Hello World
Extra Practice
- React tutorial: Intro to React (building a Tic-Tac-Toe game)
- React tutorial: Getting Started with React
Supplemental Materials
Watch for next class: required video
React, Asynchronous Programming, and API
- React Application Examples (Components 1-5): React components, async/await, API
- FolderComponent, TextAreaComponent, FormComponent, ApiDataComponent, SearchComponent
Demo
- React application example codes (Components 1-5)
- FolderComponent, TextAreaComponent, FormComponent, ApiDataComponent, SearchComponent
Web browser extensions used in class
Supplemental Materials
- React Docs: Main Concepts (Sections 6-12)
- Promises, async/await, asynchronous JavaScript
- In-depth article on async/await
- Video: async/await
- Eloquent JavaScript: Asynchronous Programming
- MDN: Fetch API
- MDN: Promise
- Axios tutorial
- Video: Axios Crash Course
- Video: HTTP Crash Course
React Router
- Single-Page Application, Client-Side Routing, React Router (summary)
- Intro to React Router (slides)
Intro to Assignment 4
- Example (starter) code for Assignment 4 (website deployed to GitHub Pages)
- Assignment 4 - Bank of React (Starter Code) Overview (summary)
Recommended materials for next class
- Redux: comprehensive tutorial by Dan Abramov, the creator of Redux (Part 1) (Part 2)
- Article on Thunks in Redux
- Coding example using Thunks
Work on Assignment 4 - Bank of React
Redux
- Redux: Manage state in React applications using Redux (summary)
- Intro to Redux (slides)
- Intro to Thunk Middleware (slides)
- Use Redux in "Ticking Clock" React application (react-ticking-clock-app using Class Component and react-redux-ticking-clock-app using React Redux)
- React Application Examples (Component 6): Redux and Thunk
Demo
- Use Redux in "Ticking Clock" React application (using Class Component vs. React Redux)
- React application example code (Component 6)
Work on the following items
- Practice of React application example (Component 6)
- Assignment 4 - Bank of React
Intro to Final Project
Demo
- Final Project starter application
Front-End Application (Final Project)
- Build front-end application (client starter code)
PostgreSQL and Postman
Supplemental Materials
RESTful API, Express, and Sequelize
Back-End Application (Final Project)
- Build back-end application (server starter code)
- Final Project: Server-Side (Back-End) Application Starter Code (summary)
Demo
- RESTful API and test using Postman
- Express routing feature examples (express-routing)
Supplemental Materials
- Tutorial: Setting up a simple Node application with Express/Sequelize
- Relational database concepts
- Intro to Object-Relational Mapping
- psql commands
- Sequelize documentation
Resources
Continue: Back-End Application (Final Project)
- Continue: Build back-end application (server starter code)
Demo
- Postgres psql
Work on Final Project - Full-Stack CRUD Application
Review for Course Assessment Test (optional extra credit)
- Review document and example questions/answers for Course Assessment Test
- Note: The above information is available on Blackboard.
Work on Final Project - Full-Stack CRUD Application
Course Assessment Test (optional extra credit)
- Complete the optional Course Assessment Test on Thursday, 5/11.
Work on Final Project - Full-Stack CRUD Application
- Final Project is due on Wednesday, 5/17, at 11:59 PM.