Internet, Web & Cloud Systems

Instructor: Wu-chang Feng
Contact and discussion: Office hours: here
TA: TBD (DM @tbd on pdx-cs.slack.com)
TA Office hours: TBD
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
1 Internet overview, ARP, DHCP (HW #1 assigned)
IP
Labs: ARP Lab #1 (arp, ifconfig, netstat, Wireshark)
2 Homework #1 due: GCP/AWS/DockerHub/Bitbucket/Slack accounts, ssh keys, git, Markdown, Ubuntu on VirtualBox
IP addressing, ICMP, NAT, Network virtualization, SDNs, UDP, TCP, TLS, HTTP, DNS
Web programming languages, MVC, web frameworks
Labs: Network Labs #1-3, Transport Labs #1-2, (Netsim, nmap, netstat, nc, iperf)
Labs: HTTP labs #1-2, DNS Labs #1-3, Network Recap Lab #1,  (Browser Tools, dig, bash tools)
3 Python, Flask, nginx/wsgi (HW #2 assigned)
Databases and SQL/NoSQL, ORMs, Web APIs, (JSON/REST/gRPC/GraphQL)
Labs: WebDev Lab #1, Databases Lab #1, #2 (GCP Cloud SQL), #3 (AWS RDS)
4 Homework #2: Python/Flask MVC app due (Homework #3 assigned)
Virtualization and Virtual Machines (Type 1, Type 2), Containers (Docker), Unikernels + Lab time
(Homework #4 assigned) Cloud Computing overview
Labs: Compute Engine Lab #1, AWS EC2 Lab #1, Container Labs #1-4
5 Homework #3: Python/Flask MVC app with sqlite3 due
Cloud Security, Storage, Compute continuum, Infrastructure as a service
Platform as a service
Labs: GCP Cloud Storage Lab #1-2, GCP App Engine Lab #1-2
6 Homework #4: Containerizing and publishing app to Docker Hub due
Databases as a Service (Homework #5 assigned)
Serverless containers and functions (Functions-as-a-Service)
Labs: GCP (Cloud Datastore, Cloud Function Labs #1-3, AWS Lambda #1)
7 Homework #5: Deploying app onto Cloud Run+Datastore due
Final project assignment on Google Drive
Infrastructure as Code (Kubernetes, CloudFormation/CDK, Deployment Manager)
APIs, Machine learning APIs
Labs: GCP (Kubernetes Engine, Vision, Speech, Translate, Video Intelligence, Natural Language Processing APIs)
8 Backend as a Service
Labs: GCP (Firebase)
9 Data Warehousing
Data processing, Hadoop/MapReduce/Spark/Beam
Labs: GCP (BigQuery, Cloud Dataproc/Dataflow/Datalab/Jupyter)
10 Advanced: HTTP/2, QUIC, CDN
Labs: CDN Labs #1-2 (GCP Deployment Manager/Managed Instance Groups/Load Balancing), GCP Marketplace/VPC
X
Final lecture Machine learning (via TensorFlow, ML Engine)
Finals Final project (Due Friday, Dec. 7th at 11:30pm)
  Screencast demo/walkthrough due on MediaSpace
  Source code submitted in repository

Assignments

Labs and notebook
Lab assignments will be given each class covering the course material. You and your partner will perform each one, while maintaining a shared lab notebook (a single Google or Office Doc) 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.  Submit your weekly notebook via the D2L Dropbox using the following naming convention.
  • <week_number>-<lastname>.pdf (or .docx) for individual notebooks e.g. Week2-Feng.pdf
  • <week_number>-<lastname1>-<lastname2>.pdf (or .docx) for group notebooks e.g. Week2-Smith-Feng.pdf
  • For group notebooks, cover page should contain names of both partners.  Only 1 D2L submission is necessary.
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 (and your lab partner if working in pairs) will take a web application and adapt it to be a front-end that utilizes 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, Nutritionix, Yelp, LiFX, etc.). The web application can either build off of your previous homework or be a completely new application. Then, via a narrated screencast, you and your partner will do a demo of the application on Google Cloud along with a code walk-through that explains how the application works. Detailed instructions on the project can be found in the course's Google Drive.

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 30%
Lab Notebook 40%
Final Project Demo and 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.