Skip to content

Latest commit

 

History

History
97 lines (83 loc) · 4.74 KB

syllabus.md

File metadata and controls

97 lines (83 loc) · 4.74 KB

Course Syllabus: INFO 6250 - Silicon Valley

Spring Semester 2022 - Thursdays

Instructor: Brett Ritter <[email protected]>

This course covers Web Development, focusing on both the fundamentals and from them modern development practices for the web. The class will use Javascript on both the front- and back-ends of web application development, but the lessons learned will be applicable to many languages.

  • Basic git use as a version control system for shared applications and development
  • How information flows in a web application between various machines
  • Modern JS development for the frontend (both "vanilla" JS and React-based)
  • NodeJS development of a backend end, both server generated content using the express framework (minimal) and service development.
  • Web security fundamental practices, both front- and back-end.
  • The basics of how many development teams breakdown application needs and complete work

What is NOT covered

  • How to program in general
  • HTML and CSS details (The INFO6150 course is a great source of info here)
  • Languages other than Javascript (focus is on concepts)
  • Mobile development
  • Accessibility (a11y), Internationalization (i18n), or Localization (l10n)
  • SQL/NoSQL usage or database architectures/maintenance

Grading: I reserve the right to adjust based on your final demonstration of applied knowledge.

25% Assignments (lowest score ignored)
25% Quizzes (lowest score ignored)
25% Midterm Project 
25% Final Project

Basic Requirements and Expectations:

  • Basic familiarity with CSS and HTML is assumed ( see https://developer.mozilla.org/en-US/docs/Learn )
  • Basic exposure to programming concepts (variables, functions, looping) is assumed
  • You will have to use git and github.com following the instructions given
  • There is no textbook for the class, but a number of online articles will be shared.
  • Many topics will be introduced in class but require you to perform additional research/experimentation
  • Additional software (without cost) is required. Installation and configuration is your responsibility (Mac, Windows, or *nix)
  • Students should ask questions where anything is unclear
  • A great deal of work will be done online, in and out of class

Expected Class Schedule (subject to change):

Section 1: Web Fundamentals

Thu Jan 20, Thu Jan 27, Thu Feb 3, Thu Feb 10, Thu Feb 17, Thu Feb 24, Thu Mar 3, Thu Mar 10,

  • HTTP, servers/webservers, browsers, clients, URL/URI, HTTP as stateless, request/response, headers/body
  • The role of HTML, CSS, and JS
  • Semantic HTML, MDN, The Browser Wars, evergreen browsers, the unreliability of not-that-old information
  • HTML best practices, CSS best practices, JS best practices
  • Absolute vs relative paths/URLs
  • Multiple-page web applications
  • Static vs dynamic assets, client-side/server-side
  • programming languages as communication, idioms, static/dynamic languages, weak/strong typing
  • Javascript syntax, NodeJS, npm/yarn, package.json, global vs local installs, JSON
  • debugging JS, unit tests, testing pyramid, TDD
  • functions as objects, prototypes, 'this'(context), callbacks, threads, try/catch, closures, scopes
  • templates, Model-View-Controller(MVC)
  • HTTPS/SSL, public-key encryption, certificates, Authentication, Authorization
  • Password hashing/salting, JWT, SQL Injection
  • the DOM, cookies, localStorage, indexedDB
  • application state, state in model vs state in DOM

At the end of Section 1 you should be able to write a simple multiple page web application using NodeJS that serves semantic HTML and styles with CSS. You will receive from github repository updates and submit your work via Pull Requests (PRs) in the same fashion that many employers conduct their work.

Section 2: The Recent Web

NOT Thu Mar 17 (spring break), Thu Mar 24, Thu Mar 31, Thu Apr 7, Thu Apr 14, Thu Apr 21, Thu Apr 28

  • asynchronous events (async), Promises, XHR/fetch/AJAX, HTTP verbs (methods), REST, services/endpoints
  • polyfills, minifiers, linters, bundlers, transpilers, CSS preprocessors, builds
  • Progressive Enhancement
  • Application state management, CRUD
  • Frontend frameworks/libraries, React, virtual DOM, JSX, Single Page Applications (SPA)
  • props vs state, Pure components vs stateful components
  • Same Origin Policy(SOP), CORS, XSRF/CSRF, CSP, OWASP
  • as-a-service (PaaS, FaaS)
  • Agile, change management, Software Patterns
  • Mockups, wireframes, prototypes
  • Obfuscation, copyrights, and module licensing

At the end of Section 2 you should be able to write a simple single page web application (SPA) using vanilla JS OR React JS. Your SPA can call RESTful external services, and you can use NodeJS to provide those service endpoints.

Final Projects Due

Wed May 4 (11:59pm PT)

No class Thu May 5 (just Project due on Wed May 4)