Internet 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. 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 mostly of hands-on lab exercises, a lab notebook, and a final project. Students may work either individually or in pairs throughout the course. First offering scheduled for Spring 2018.


Week Topic Slides Notes
1 Internet protocols and history, ARP, DHCP, IP, ICMP, NAT, SDNs, TCP
Labs: Netsim, nmap, iperf+tracing TCP in Linux, custom networks on Google Cloud

Labs: Wireshark, Developer Tools for HTTP, dig, HTTP load balancing on Google Cloud

3 Web programming languages, MVC, web frameworks, Python/Flask, nginx/wsgi, Web APIs (JSON/REST/gRPC)
Lab: Python/Flask MVC app

4 Databases and SQL (NoSQL/mongoDB, MySQL, sqlite), ORMs
Lab: Python/Flask DB app

5 Virtualization and Virtual Machines (Type 1, Type 2), Containers (Docker), Unikernels
Lab: Docker building, running, and registering containers

6 Cloud Computing (GCP setup)
Cloud security (IAM)
Infrastructure as a service (via ComputeEngine)
Containers and container orchestration (via ContainerEngine, Kubernetes)
7 Platform as a service infrastructure (via AppEngine)
Serverless computing (via Cloud Functions)
8 Databases as a Service (via CloudSQL, Cloud Datastore, BigQuery)
Data science tools (via Cloud Datalab)

9 Data processing (via Hadoop/MapReduce, Cloud Dataflow)

Machine learning (via TensorFlow, Jupyter)
Machine learning APIs (via Cloud Vision API)

Finals TBD
Lab notebook due in D2L