401 Advanced Javascript

Course Overview

This course is divided into 8 Modules, extending over 2 sections.

The first half of the course (the "Backend Section") is made up of 4 modules:

  • REST APIs
  • Authentication and Authorization
  • Realtime (Sockets, Messages, Queuing)
  • Serverless Applications

The second half of the course (the "Frontend Section") is comprised of 4 modules, focused on React

  • React Basics / Component Based Design
  • Hooks and Context
  • Redux
  • React Native and other Frameworks

Course Goals

Students will be able to demonstrate

  • Mastery of JavaScript Fundamentals
    • Objects, Factories, Classes
    • Standard and Arrow Functions
    • Looping, Iteration, Traversal of Arrays and Objects
    • Recursion
    • Documentation best practices with JSDoc
  • Understanding of core data structures
    • When each structure is most appropriate
    • Real world applications of each structure
    • Looping, Iteration, Traversal
      • Stacks & Queues
      • Linked Lists
      • Trees
      • Graphs
      • Hash Tables
  • Creation and operation of an Express web server
    • Static Routes
    • Dynamic Routes
  • Creation and operation of an Express API Server
    • RESTful, Dynamic Model Management
    • Authenticated Access with RBAC
    • Swagger Documentation
  • Event driven application development using Socket.io and Web Sockets
  • Creation and operation of a Socket.io Message Queue Server and Client Library
  • Creation of a single page web app in React
  • Creation of a mobile app with React Native
  • Deploy a website to AWS, Heroku, Netlify
  • Deploy an API, Database, Lambda Functions, and Queueing Service at AWS

Student Operation

Students will *fork- the class repository

It's advisable that students first make an new organization in Github (perhaps called '401-js-their-name') that these repositories can be created in, to organize things better.

ASSIGNMENTS

  • READING (Due before each lecture)

    • Reading assignments should be done as articles/notes in the *wiki- of their repo fork
  • LAB Assignments (4 per module)

    • 10 Points (graded on the rubric)
    • ~ 3-5 Hours
    • Should be completed in a new repository for each day
    • Generally, these are smaller implementations, refactors, and practice to support the lecture concept. Not necessarily a full-scale application.
    • Code must be tested through GitHub Actions and deployed through either Heroku or AWS
    • JS Code must be documented with JSDoc
    • Students must use the README.md template (from the resources folder) to complete their assignment
    • The README requires working links to deployed code, GitHub Actions tests, functional documentation, test documentation and a UML and/or data-flow diagram.
  • DS&A IMPLEMENTATION

    • 10 Points (complete/incomplete)
    • Installed at the root level of your data-structures-and-algorithms repository
    • These will be used as libraries to solve code challenges
  • DS&A CODE CHALLENGE (4 per module)

    • 5 points (3 points for whiteboard, 1 point for testing, 1 point for working code)
    • Generally requires a working implementation (above) to work
    • TimeBox execution to ~ 1 Hour
  • END OF EACH MODULE

    • New Data Structure (as noted above): Modules 1,2,3 & 6,7,8
    • Project Group Prep: Modules 4 and 8
    • Generally Paired
    • Takes the learnings/components/modules from the previous 4 classes and has the students assemble them into a larger/full-scale application.

Course At a Glance

Module 1 (Project: Dynamic API) Module 2 (Project: Authenticated API) Module 3 (Project: CAPS Delivery System) Module 4 (Project: Serverless)
01: JS Fundamentals 06: Basic Authentication 11: Events 16: Serverless Apps
02: Express, Testing 07: Bearer Authentication 12: Socket.io 17: Lambda & S3
03: REST APIs 08: Authentication / ACL 13: Message Queues 18: Serverless API
04: Data Modeling 09: Authenticated API 14: Event Driven Apps 19: Cloud Events
05: Career Coaching, DS&A 10: Career Coaching, DS&A 15: Career Coaching, DS&A [20: Project Preparation
Module 5: Mid-Term Projects
Module 6 (Project: RESTy) Module 7 (Project: TO DO, Bootstrap) Module 8 (Project: e-Commerce, Material UI) Module 9 (Project: Personal Projects)
26: React Basics 31: Hooks API 36: Redux 41: React Native
27: Testing & Deployment 32: Custom Hooks 37: Combined Reducers 42: React Native
28: Props & State 33: Context API 38: Async Actions 43: UI Frameworks
29: Routing & Composition 34: Login/Auth 39: Redux Toolkit 44: Open Source Contributions .
30: Career Coaching, DS&A 35: Career Coaching, DS&A 40: Career Coaching, DS&A 45: Project Preparation
Module 20: Final Projects