Skip to content

kylethayer/info441-au19

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INFO-441 Server-Side Development

This is the homepage for the UW iSchool Autumn 2019 Server-side development course.

Dive deeply into the world of server-side development. Build your own web application. Deploy it to the cloud. Authenticate users. Authorize and validate persistent data. Build retrieval indexes for fast searching. Notify clients of changes in real-time. Extend your system with a microservice architecture. Put it all together in a sophisticated web applications.

Team

Instructor: Kyle Thayer

TA's: William Kwok & Rico Wang

(The team wants to thank Dave Stearns for making their material available as a base for this course and Nigini Oliveira for his advice and version of the course repo.

Office Hours

Office: MGH 330D Office Hours: Tues. 9-11am, Thur. 2:30 - 3:30pm

Or email or message me to schedule separately

Communication

All communication should happen through Canvas and Microsoft Teams).

Schedule

Below, are the contents for each class day.

Date Material
9/25 Welcome to the Server-Side
The HyperText Transfer Protocol
Environment Variables
Introduction to Go
The Go Language
Go Web Servers
!! Exercise
9/30 Go Web Services
Go Slices and Maps
Go Structs and JSON
Cross-Origin Resource Sharing
Tokenizing HTML Streams
!! Assignment (summary branch))
!! Exercise
10/2 Docker
Containerizing with Docker
Dockerfile Best Practices
Docker restart policies
!! Exercise (docker)
10/7 Deploying & Encrypting
Communicating Securely with HTTPS
Deploying to Digital Ocean
Deploying to Amazon Web Services (AWS)
!! Exercise (deploy)
10/08 Automated Tests
Automated Testing in Go
The Cover Story
CORS slides: pptx, pdf
!!Exercise (testing)
10/14 Tracking Sessions
Tracking Sessions
Redis Datatypes
Docker Networks
Docker Network slides: pptx, pdf
!!Exercise (hmac)
10/16 Persisting Data
Talking to Databases from Go
Sharing Values with Go Handlers
Authenticating Users
!!Exercise (postman)
10/21 REST APIs + Middleware
Middleware Patterns in Go
REST APIs
!!Exercise (middleware)
10/23 Catch-Up + Project Bootstrap
10/28 Protecting Data Structures
Protecting Data Structures with Mutexes
10/30 Node.js Microservices
NGINX 7-Part article series on Microservices
Fast Delivery Talk by Adrian Cockcroft
Migrating to Microservices Talk by Adrian Cockcroft
httputil.ReverseProxy
Node.js Microservices
Express.js Basic Routing
Node.js MySQL Driver Overview
!!Exercise (microservices)
11/4 Message Queues
RabbitMQ Tutorial for Go
RabbitMQ Tutorial for Node.js
Use case: Asynchronous Tasks in Python with Celery and RabbitMQ
11/6 Present / Review Proposals
11/13/26 Web Sockets
TALK: Real-life WebSocket Use Cases and Experiences
Gorilla Web Socket Package
Writing WebSocket Client Applications
11/18 Concurrent Programming with Channels
Rob Pike on Concurrency is not Parallelism (slides from talk)
Rob Pike on Go Concurrency Patterns (slides from talk)
Concurrency
11/20 Homework Time ???
11/25 Homework Time ???
11/27 NO CLASS (day before Thanksgiving)
12/2 Homework Time ???
12/4 Project Presentations!!!

Course Work

This course will be evaluated based on 6 assignments (75% of grade), and a final project (25% of grade).

All assignments will be done in teams of 2-4 people. You will turn in your own copy of the code with your own additional comments to show your understanding of the code. You will be graded on the code, your personal comments on the code, and on your role as a team member. We will evaluate your role as a team member based on the team's feedback and on our own observations. (If you are having any difficulty with your team, let us know early).

Calculation of Final Grades

Canvas tracks grades on a percentage scale. To convert those to a 4.0 scale we will use the standard iSchool conversion chart (though we may curve up if grades in the course are too low).

BTW: Canvas is already configured to calculate your final grade considering the previously described 90/10 grading weights and this conversion scale.

Late Work / missing labs

To encourage you to keep on schedule with projects, we will deduct 10% of the possible points per 24-hour period that your submission is late, with a one hour initial grace period. For example, if the assignment is worth 100 points and your submission is between 1 and 24 hours late, the maximum you can receive on the assignment is 90 points. If your submission is between 24 and 48 hours late, the maximum you can receive is 80 points.

That said, we realize that sometimes life gets complicated and you might need a little extra time to finish a particular challenge. To give you a little flexibility you have 5 free late days that you can spend throughout the quarter. Each late day gives you a free 24-hour extension on the challenge. Unless you specify otherwise, we will use your late days for any work you submit late. After you exhaust all your late days, the normal late penalties will start to accrue.

Additionally we allow you to miss 2 of the lab excersizes and still get full points on that portion of the grade.

If something tragic occurs during the quarter, please let us know and we can work out something.

Course Rules

In addition to the standard iSchool and UW academic policies that apply to all of our courses, the following rules also apply to this course.

About

INFO 441 - UW iSchool - Autumn 2019

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 100.0%