Internet, Web, and Cloud Systems

Instructor: Wu-chang Feng
Contact and discussion: Office hours: here
TA: lchoi at pdx dot edu (DM @leslie on
TA Office hours: 4pm-6pm Thursdays in Fishbowl
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.


Week Topic
1 Internet overview, ARP, DHCP (HW #1 assigned)
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, VPN/VPC/SDNs, UDP, TCP
TCP congestion control, TLS, HTTP/1, HTTP/2, QUIC
Labs: Network Labs #1-3, Transport Labs #1-2, (Netsim, GCP Marketplace/VPC, nmap, netstat, nc, iperf)
Web programming languages, MVC, web frameworks
Labs: HTTP labs #1-2, DNS Labs #1-3, Network Recap Lab #1, CDN Labs #1-2 (Browser Tools, dig, bash tools, GCP Deployment Manager/Managed Instance Groups/Load Balancing)
4 Python, Flask, nginx/wsgi (HW #2 assigned)
Databases and SQL/NoSQL, ORMs, Web APIs, (JSON/REST/gRPC/GraphQL) + Lab time
Labs: WebDev Lab #1, Databases Lab #1, #2 (GCP Cloud SQL), #3 (AWS RDS)
5 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: Container Labs #1-4
6 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, Cloud Security Lab #1, Compute Engine Lab #1, AWS EC2 Lab #1, GCP App Engine Lab #1-2
7 Homework #4: Containerizing and publishing app to Docker Hub due
Databases as a Service, Blockchain (Homework #5 assigned)
Infrastructure as Code, Container orchestration
Labs: GCP (Cloud Datastore, Cloud Spanner, Kubernetes Engine)
8 Homework #5: Deploying app onto App Engine+Datastore due
Final project assigned
Serverless computing, Functions-as-a-Service
Machine learning APIs
Labs: GCP (Cloud Functions, Vision, Speech, Translate, Video Intelligence, Natural Language Processing APIs)
9 Backend as a Service
Labs: GCP (Firebase)
10 Data Warehousing
Data processing, Hadoop/MapReduce/Spark/Beam
Labs: GCP (BigQuery, Cloud Dataproc/Dataflow/Datalab/Jupyter)
Final lecture Machine learning (via TensorFlow, ML Engine)
Finals Final project screencast demo/walkthrough due on MediaSpace


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
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.  Homework assignments should also be uploaded as a zip file via the D2L Dropbox (for timestamp) using the following naming convention:
  • <hw#>-<lastname>.zip
  • Assuming homework directory hw2 and last name Feng, create zip file via:
    • zip -r hw2
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
More later...

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


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.