bdinh / info441-wi19

syllabus and assignments for INFO 441

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

INFO-441 Server-Side Development

This is the homepage for the UW iSchool Winter 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: Nigini Oliveira

TA's: Anirudh Kumar Subramanyam & Bao Dinh

(The team wants to thank Dave Stearns for making his material available as a base for this course!)

Communication

All communication should happen through Announcements and Discussions on Canvas.

Schedule

Below each day are a set of required sources that I want you to read/watch before coming to class. These will orient and prepare you for our in-class coding exercises. If you don't do these, you'll get lost rather quickly.

Date Material
1/8 Welcome to the Server-Side
The HyperText Transfer Protocol
Environment Variables
Introduction to Go
The Go Language
Go Web Servers
LAB How to 411?
1/10 Go Web Services
Go Slices and Maps
Go Structs and JSON
Cross-Origin Resource Sharing
1/15 Docker
Containerizing with Docker
Dockerfile Best Practices
Docker restart policies
LAB Docker Practice
1/17 Deploying & Encrypting
Communicating Securely with HTTPS
Deploying to Digital Ocean
Deploying to Amazon Web Services (AWS)
1/22 Automated Tests
Automated Testing in Go
The Cover Story
LAB Automated Testing Practice
1/24 Tracking Sessions
Tracking Sessions
Redis Datatypes
Docker Networks
1/29 Persisting Data
Talking to Databases from Go
Sharing Values with Go Handlers
Authenticating Users
LAB Docker and RDBMSs
1/31 REST APIs
REST APIs
2/5 Middleware
Middleware Patterns in Go
LAB Middleware Practice
2/7 Trie Indexes
The Trie Data Structure
Protecting Data Structures with Mutexes
2/12 Microservices
NGINX 7-Part article series on Microservices
Fast Delivery Talk by Adrian Cockcroft
Migrating to Microservices Talk by Adrian Cockcroft
httputil.ReverseProxy
LAB Service Discovery
2/14 Node.js Microservices
Node.js Microservices
Express.js Basic Routing
Node.js MySQL Driver Overview
2/19 Java Microservices
Undertow documentation
LAB Java Microservices
2/21 Python Microservices
The Flask Mega-Tuorial Chapters 1 (Hello World), 4 (Databases), and 7 (Error Handling)
2/26 Message Queues
RabbitMQ Tutorial for Go
RabbitMQ Tutorial for Node.js
LAB Homework Time
2/28 Web Sockets
Gorilla Web Socket Package
Writing WebSocket Client Applications
3/5 Concurrent Programming with Channels
Rob Pike on Concurrency is not Parallelism (slides from talk)
Rob Pike on Go Concurrency Patterns (slides from talk)
Concurrency
LAB Homework Time
3/7 Benchmarking and Security
3/12 Buffer
3/14 Buffer

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.

Late Work

Turning things in late disrupts everyone's lives, including your own, so the challenges are due when they are marked as due. Since each challenge builds upon your solution for the previous one, it's imperative that you keep up. To encourage you to keep on schedule, 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 4 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.

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

Plagiarism

We encourage collaboration, but "collaboration" doesn't mean copying other people's code and trying to pass it off as your own. Collaboration means talking through your approach to a problem, or showing someone how you make something work. You can borrow approaches or techniques, but I want you to write your own implementation.

Although professional web developers often reuse code they find on the web, they also take the time to understand what that code is doing, customize it to their specific context, and cite the source so that they can find it again later. If you want to use code you find on the web, please include the source URL in a comment above the code, and take the time to understand why it works. Otherwise you won't learn anything.

If we receive multiple solutions with nearly identical code, we will notice. Remember that git records a log of every commit, so we can see exactly what you committed and when. If we see you commit code that is virtually identical to code a fellow student committed earlier, it's not too difficult to figure out who is copying from whom.

If we determine that you plagiarized code, you will get an automatic zero on the assignment, and we will file an academic misconduct report with the Associate Dean of Academics. We will also have a very unpleasant conversation about your future in the Information School, so just don't do it. If you've simply run out of time, use your late days.

Calculation of Final Grades

Canvas tracks grades on a percentage scale, but the UW requires us to convert those to a 4.0 scale when reporting grades at the end of the course. We will use iSchool's standard grading scheme to convert your percentage grade to the 4.0 scale. Fractional percentages will be rounded using normal numeric rounding rules before conversion.

About

syllabus and assignments for INFO 441


Languages

Language:HTML 100.0%