Internet, Web & Cloud Systems

Instructor: Wu-chang Feng
Contact and discussion: Office hours: here
TA: lchoi at pdx dot edu (DM @leslie on pdx-cs.slack.com)
Lab: Fridays 2pm-4:20pm in FAB 88-10.

Resources
Course Description This class provides an overview of networked computing systems including their history and evolution. Topics covered include Internet protocols, virtual machines, containers, web servers, web applications, and databases as well as their deployment in the cloud. The course is intended as an overview course that will allow students to better choose from elective courses that provide more in-depth coverage of each topic. Aside from lecture material, the coursework consists of hands-on lab exercises, a lab notebook, and a final project that students may work in pairs to complete. In addition, there will be homework assignments that students are to complete individually.

Schedule

Week Topic Assignments Tools
1 Internet overview, ARP
DHCP, IP addressing
01_Labs_HW1
  • HW #1
  • Labs: ARP
Google Cloud, AWS, DockerHub Bitbucket, Slack, VirtualBox
git, ssh keys
arp, ifconfig, netstat, Wireshark
2 NAT, VPN/VPC/SDNs, ICMP, UDP, TCP, TLS
HTTP/1, HTTP/2, QUIC, DNS
  • Labs: Network
  • Labs: Transport
  • Labs: HTTP
  • Labs: DNS (dig)
netsim, nmap, ping, traceroute
netstat, nc, iperf
Browser tools
dig
3 CDNs
Web programming languages
MVC, web frameworks
  • Labs: Network recap
  • Labs: CDN
Deployment Manager, Instance Groups, Load Balancing
4 Python/Flask applications
Databases (SQL/NoSQL, ORMs)
Web APIs (JSON/REST/gRPC/GraphQL)
02_Labs_HW2_HW3
  • HW #2: MVC/MVP web app
  • Labs: WebDev
  • Labs: Databases
Python virtualenv/pip/Flask
nginx/wsgi, LetsEncrypt (certbot)
Cloud SQL, AWS RDS
5 NO CLASS: 10/28
Virtualization, VMs, Containers, Unikernels
Cloud Computing overview
  • Labs: Containers
docker, DockerHub
6 Cloud Security
Storage
Infrastructure as a service
Databases as a service
Platform as a service
03_Labs_HW4
  • HW #3: Web app container
  • Labs: Storage
  • Labs: Compute
  • Labs: Security 1
  • Labs: Serverless databases
  • Labs: Serverless platforms
Cloud Storage, gsutil, AWS S3
IAM
Compute Engine, AWS EC2
Cloud Datastore
AppEngine
7 NO CLASS: 11/11
Functions and containers as a service

  • HW #4: Web app serverless
  • Labs: Serverless containers
  • Labs: Serverless functions
Cloud Run, Cloud Functions, AWS ECS, AWS Lambda
8 Infrastructure as Code
Machine learning APIs
  • Labs: IAC Kubernetes
  • Labs: Security 2
04_Labs
  • Labs: APIs, ML APIs
Final project (see GDrive)
Kubernetes


Cloud Vision, Speech, Translate, Video Intelligence, NLP

9 Backend as a Service
  • Labs: Firebase 
Firebase
10 Data processing (MapReduce/Spark)
Data warehouses, Data notebooks
  • Labs: Data
  • Labs: BigQuery, DataNotebooks
Cloud Dataproc, Dataflow
BigQuery, Cloud Datalab (Jupyter)
Final project
Code (in Bitbucket & D2L), URL added to site. Tuesday, Dec. 10 (11:30pm)

Live demo (in class) Wednesday, Dec. 11 (12:30pm-2:20pm)

Screencast (in MediaSpace) Saturday, Dec. 14 (11:30pm)

Assignments

Labs and notebook
Lab assignments will be given each class covering the course material. You  will perform each one, while maintaining a lab notebook that documents your progress through the exercises and answers any questions that are included in them.  Include screenshots and ensure that they include either your OdinID or your Google Cloud Platform project identifier in them.  Labs are organized into multiple parts.  Submit each part of the notebook as a PDF via the associated D2L Dropbox.  The notebook will be graded based upon the following rubric:
  • Neatness and organization
  • Completeness
  • Inclusion of OdinID or project identifier in screenshots
Homework
Throughout the term, homework assignments will be given that are to be done individually and submitted via a private Bitbucket repository and a public DockerHub repository. The assignments will be graded based upon the following rubric:
  • Overall functionality
  • Code documentation (such as Docstrings, comments)
  • Code readability and modularity
  • git repository activity (commits, commit messages, tags)
Final project
You (or a partner if working in pairs) will implement a Python/Flask AppEngine web application to utilize Machine Learning APIs of your choice (Vision, Natural Language Processing, Speech, Video Intelligence, Translate, etc) or other APIs you choose (e.g. Maps, Knowledge Graph, Yelp, LiFX, etc.). The web application can either build off of the previous homework or be a completely new application. During the scheduled finals week exam period, you will demo your application and then, via a narrated screencast due in MediaSpace at the end of Finals week, you (and your partner if working in pairs) will repeat the demo and perform a code walk-through that explains how the application works. Detailed instructions on the project can be found in the course's Google Drive. For graduate students, a minimum of 2 API integrations per student must be implemented. For undergraduates, a minimum of 1 API integration per student must be implemented.

Course objectives

  • Understand Internet networking and how it has enabled the cloud.
  • Perform web development and construct web applications backed by databases.
  • Utilize virtual machines and containers as building blocks for constructing services.
  • Adapt applications to models of service and storage supported by cloud computing providers.
  • Utilize cloud tools for data analysis and machine learning applications
 

Policies

Grading
Attendance and participation 10%
Homework
  • HW1=5%
  • HW2=40%
  • HW3=10%
  • HW4=45%
30%
Lab notebooks
  • Labs01=20%
  • Labs02=20%
  • Labs03=40%
  • Labs04=20%
40%
Final project in-class demo and screencast walkthrough 20%
Attendance and participation
To encourage collaboration and to establish a positive learning community, attendance and participation throughout the term will be graded. In addition, mutual respect, tolerance, and encouragement are expected, while comments seeking to demean, embarrass, or otherwise disrupt others' ability to learn are not. Specific examples of participation include asking questions, helping other students out, and identifying mistakes in the course content either in class or on the Slack channel.
Academic misconduct
  • Includes allowing another student to copy your work unless specifically allowed by the instructor.
  • Includes copying blocks of code from external sources without proper attribution
  • Results in a grade of 0 for the assignment or exam.
  • Results in the initiation of disciplinary action at the university level.