Welcome and Introductions
Week One
Wednesday, January 20 Video
- Welcome & introductions
- Course policies
- Course calendar
Shaping and Sketching; System-Design Fundamentals and Strategies
Week Two
Monday, January 25 Video
- Introduce Project One
- Lo-fi prototyping and shaping
- Fat-marker sketches
Wednesday, January 27 Video
- Refining your systems-design thinking
- Determining architecturally significant requirements
- Establishing project boundaries
- Arriving at narrowly defined problems
One-on-One Conferences; Web Standards Refresher
Week Three
Monday, February 1
- No class. Individual Project One remote consultations with instructor.
Wednesday, February 3 Video
- Introduce Project Two
- An all-too-brief refresher on web standards: semantic HTML, progressive enhancement (CSS & JS)
Working Remotely in Teams; Frontend Prototyping System Architecture
Week Four
Monday, February 8 Video
- Grooming a Git-centric development environment
- Refresher: Git remotes and pull requests; enforcing code reviews
- Working on feature branches
Wednesday, February 10 Video
- Keeping feature branches up to date with
git rebase
- Properly squashing and merging commits in a PR
- Components of frontend prototyping
- Generating self-signed certificates for HTTPS (Let’s Encrypt docs)
- Visual regression testing with BackstopJS
More Prototyping; Refining and Scaffolding System Architecture
Week Five
Monday, February 15 Video
- Inspecting API data and supplementing the documentation yourself
- From sketches to frontend prototypes
- Determining architecturally significant system features via frontend prototyping
Wednesday, February 17 Video
- Emergency Library Education
- Prototyping with asynchronous JavaScript functions and mock APIs
Frameworks and Dependencies; Web Scraping
Week Six
Monday, February 22 Video
- Software as a Service (SaaS) architecture
- API-first design
- Framework selection: starting from No
- Abbreviated tour of an example framework (ExpressJS)
- Tracking dependencies (manifests, semantic versioning)
Wednesday, February 24 Video
- Microservices
- Scraping data from HTML
- Spending plenty of time determining and sketching data structures
Code Quality and Documentation
Week Seven
Monday, March 1 Video
- Introduce ITMD 567–only Project Five
- Working with JSDoc
- Integrating JSDoc output with GitHub Pages
Wednesday, March 3 Video
- Including CLI tools in project setup (
package.json
, the npx
command)
- Linting with eslint
- Stolley’s opinionated eslint configs
- Training your nose for “code smell”
- Isolating business logic
Automated Testing
Week Eight
Monday, March 8 Video
- Evaluating testing frameworks; Mocha
- Beginning to write tests
- Integrating tests into Git workflows
Wednesday, March 10
- No class. University COVID Study Day.
Catch-Up and Work Week
Week Nine
Monday, March 15 Video
- Working with environment variables
- Doing releases through Git and GitHub
- Open Q&A
Wednesday, March 17
- NO CLASS. Work day.
- Stolley available for help and questions on Basecamp, etc.
Data Structures & Stores; Configuring, Securing, and Seeding Databases
Week Ten
Monday, March 22 Video
- Flat-file storage; applications and use cases
- Relational databases (SQL and friends)
- Applications and use cases
Wednesday, March 24 Video
- Introduce Project Three
- Implementing SQL-style databases: SQLite example
- Seeding SQL-style databases
Database Leftovers; Shifting from Alphas to Betas
Week Eleven
Monday, March 29 Video
- Document-based databases (NoSQL and friends)
- Applications and use cases
- Implementing document-style databases: MongoDB example
- Configuration and connection: what to commit, what to obscure (
ENV
variables)
- Seeding NoSQL-style databases (MongoDB example)
Wednesday, March 31 Video
- Developing a production mindset
- Thinking about betas and production readiness
- Review request: organization (repos, code, etc.)
- Review request: progressive enhancement in web apps
Readying for Production: Interconnection, Configuration, Security
Week Twelve
Monday, April 5 Video
- Server setup and security (Linode example)
- Key-based authentication over SSH
- Basic firewall (ufw)
- Basic testing to ensure server security
Wednesday, April 7 Video
- Setting up a shell and Git on the server
- Selecting a web server
- Using Git to manage configuration files
- Basic Nginx configuration
Remaining Server Configuration; Work Week
Week Thirteen
Monday, April 12 Video
- Researching and implementing an Nginx server-block configuration
- Basic git-based deployment with
post-receive
hooks
- Setting up
https
with Certbot
Wednesday, April 14
- No class. Stolley available for questions.
- Team conferences Thursday April 15
Test-Driven Refactoring
Week Fourteen
Wednesday, April 21 Video
- Testing with databases, especially setup and tear-down
- Refresher: progressive enhancement in an app setting
- Web API example: localStorage
Deployment and Monitoring; CI/CD
Week Fifteen
Monday, April 26 Video
- Git-based deployment strategies (custom scripts)
- Nginx proxying
- Deployment packages and libraries
- Robust deployment with pm2
- Simple use of pm2 to start, monitor, and keep an app running
Monday, May 3
- Catch-up day or new topics
- Open Q&A
Wednesday, May 5
- Open Q&A