Week One

Node.js Fundamentals

Agendas

Monday, January 10

  1. Online class.
  2. Welcome & introductions
  3. Course policies
  4. Course calendar

Wednesday, January 12

  1. Online class.
  2. Professional development for life: Learning with intention
  3. Git as a learning tool
  4. Node.js fundamentals
Week Two

JavaScript Refresher; Asynchronous Patterns

Agendas

Monday, January 17

  1. No class. Martin Luther King, Jr. holiday

Wednesday, January 19

  1. Online class.
  2. JavaScript refresher (questions)
  3. Asynchronous JavaScript
Week Three

Node.js and Data Stores

Week Four

Shaping and Sketching; System-Design Fundamentals and Strategies

Agendas

Monday, January 31

  1. Introduce Project One
  2. Lo-fi prototyping and shaping
  3. Fat-marker sketches
  4. Refining your systems-design thinking

Wednesday, February 2

  1. Online class.
  2. Determining architecturally significant requirements
  3. Establishing project boundaries
  4. Arriving at narrowly defined problems
Week Five

Web Standards Refresher; Frontend Prototyping

Week Six

One-on-One Conferences; Working Remotely in Teams

Agendas

Monday, February 14

  1. No class. Individual Project One remote consultations with instructor.

Wednesday, February 16

  1. Grooming a Git-centric development environment
  2. Refresher: Git remotes and pull requests; enforcing code reviews
Week Seven

ExpressJS; Documentation

Week Eight

Code Quality; More ExpressJS

Agendas

Monday, February 28

  1. No class.

Wednesday, March 2

  1. Setting up ExpressJS to serve HTTPS
  2. Working with environment variables
  3. ExpressJS: code organization, routing essentials
Week Nine

Scraping, Scripting, and Linting; More Git

Week Ten

Spring Break

Agendas

Monday, March 14

  1. No class.

Wednesday, March 16

  1. No class.
Week Eleven

Web-System Construction and Test-Driven Development

Agendas

Monday, March 21

  1. Working on feature branches; staying up to date with git rebase
  2. Properly squashing and merging commits in a PR
  3. Handling merge conflicts like NBD

Wednesday, March 23

  1. Crafting releases on GitHub
  2. Web-system construction and code organization (ExpressJS example)
  3. Writing tests on HTTP requests and responses with Supertest
  4. Driving development with tests
  5. Building tests into the Git lifecycle with hooks
Week Twelve

Databases

Agendas

Monday, March 28

  1. Relational databases (MySQL and friends)
  2. Applications and use cases
  3. Implementing relational databases: SQLite example
  4. Configuration and connection: what to commit, what to obscure (ENV variables)
  5. Seeding SQL-style databases (SQLite example)
  6. Document-based databases (NoSQL and friends)
  7. Applications and use cases
  8. Implementing document-style databases: MongoDB example
  9. Configuration and connection: what to commit, what to obscure (ENV variables)
  10. Seeding NoSQL-style databases (MongoDB example)

Wednesday, March 30

  1. Online class
  2. Or work day? Alpha project due 3/31…
Week Thirteen

Readying a Production Server; Shifting from Alphas to Betas

Agendas

Monday, April 4

  1. No class.

Wednesday, April 6

  1. Developing a production mindset
  2. Thinking about betas and production readiness
  3. Server setup and security (Linode example)
  4. Key-based authentication over SSH
  5. Basic firewall (ufw)
  6. Basic checks to ensure server security
Week Fourteen

Web-Server Setup

Agendas

Monday, April 11

  1. Online class.
  2. Setting up a shell and Git on the server
  3. Using Git to manage configuration files
  4. Selecting and configuring a web server
  5. Opening up ufw to web traffic

Wednesday, April 13

  1. Online class.
  2. Researching and implementing an Nginx server-block configuration
  3. Setting up https with Certbot
Week Fifteen

Deployment and Monitoring

Week Sixteen

Work Week

Agendas

Monday, April 25

  1. No class.
  2. Stolley available for one-on-one help

Wednesday, April 27

  1. No class.
  2. Stolley available for one-on-one help

Course Information

Instructor