Internet, Web, and Cloud Systems

Instructor: Wu-chang Feng
Contact and discussion: Office hours: here
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 (IaaS, DBaaS, PaaS) using Google Cloud Platform (GCP). 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 protocols and history, ARP, DHCP, IP
Homework #1: GCP/DockerHub/Bitbucket/Slack accounts, ssh keys, git, Markdown, Ubuntu on VirtualBox
Labs: arp, ifconfig, Wireshark
2 IP addressing, ICMP, NAT, VPN/VPC/SDNs, UDP, TCP, TLS, HTTP/1
Labs: Netsim, ping/traceroute/v6, nmap, GCP (Cloud Launcher, Networking), iperf+tcp_probe, netstat, netcat
3 HTTP/2, QUIC, DNS, CDNs, Web programming languages
Lab: Browser Tools, dig, bash tools, GCP (Deployment Manager, Managed Instance Groups, Load Balancing)
4 MVC, web frameworks, Python, Flask, sqlite, nginx/wsgi, Databases and SQL/NoSQL, ORMs, Web APIs (JSON/REST/gRPC/GraphQL)
Lab: GCP (Cloud SQL)
Homework #2: Python/Flask MVC app (Due Thursday, 5/3)
5 Virtualization and Virtual Machines (Type 1, Type 2), Containers (Docker), Unikernels
Homework #3: Python/Flask MVC app with sqlite3 (Due Thursday, 5/10)
Lab: Docker building, running, and registering containers
Homework #4: Containerizing and publishing app to Docker Hub (Due Tuesday, 5/15)
6 Cloud Computing overview, security, storage
Compute continuum, Infrastructure as a service (ComputeEngine)
Lab: GCP (Cloud Storage, IAM, Compute Engine)
7 Platform as a service
Databases as a Service, Blockchain
Lab: GCP (App Engine, Cloud Datastore, Cloud Spanner)
Homework #5: Deploying HW #2 onto App Engine (Due 5/22)
Homework #6: Deploying HW #3 onto App Engine+Datastore (Due 5/29)
8 Infrastructure as Code, Container orchestration
Serverless computing, Functions-as-a-Service
Lab: GCP (Kubernetes Engine, Cloud Functions)
9 Machine learning APIs
Backend as a Service
Final project assigned
Lab: GCP (Vision, Speech, Translate, Video Intelligence, Natural Language Processing APIs, Firebase)
10 Data Warehousing
Data processing, Hadoop/MapReduce/Spark/Beam
Lab: GCP (BigQuery, Cloud Dataproc/Dataflow/Datalab/Jupyter)
Final lecture (Mon. June 11 @ 10:15am) Machine learning (via TensorFlow, ML Engine)
Finals Lab notebook due in D2L (Mon. June 11 @ 10:15am)
Final project screencast demo/walkthrough due on MediaSpace (Sun. June 17 @ 11:59pm)


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 the notebook by creating a directory called notebook in your BitBucket repository. For individual notebooks, the file should be called "LabNotebook-OdinId.pdf" (or .docx). For work with a partner, the file should be called "LabNotebook-OdinID1-OdinID#2.pdf" (or .docx) and only needs to be submitted to one repository only. The notebook will be graded based upon the following rubric:
  • 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 or Dockerhub repository as described by the homework instructions. 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
For your final project, you and your lab partner will take the web application developed as part of your homework assignments and adapt it to be a front-end for utilizing Machine Learning APIs of your choice (one per partner). Code should be submitted in your Bitbucket repository under a directory called "final". As part of submission, include a file called "url.txt" that contains a link to a running copy of your 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.  A detailed discussion of the contributions done by each person should be included if you have done the work as a group. Screencast software and submissions are to be done via PSU's Media Space on the course's channel.  The project will be graded based upon the following rubric:
  • Overall functionality
  • Code documentation (such as Docstrings, comments)
  • Code readability and modularity
  • Thoroughness of walkthrough (including setup)
  • git repository activity (commits, commit messages, tags)
  • Discussion of contributions of each member (if applicable)

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 computation 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 participiation 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.