Systems Crash Course

Instructor: Wu-chang Feng
Contact and discussion: Office hours: here
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 (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.

Schedule

Week Topic Slides Notes
1 Overview and History

2 Virtualization and Virtual Machines (Type 1, Type 2)
Containers (Docker)

3 Internet networking (Wireshark, dig, traceroute, iperf, custom networks on ComputeEngine)

4 Web sites and apps (nginx, web frameworks with Python/Flask, certbot, nginx-uwsgi)
Databases (NoSQL/mongoDB, MySQL, sqlite)

5 Cloud Computing (GCP setup)
Infrastructure as a service (via ComputeEngine)
Containers and container orchestration (via ContainerEngine, Kubernetes)

6 Platform as a service infrastructure (via AppEngine)
Databases as a Service (via CloudSQL, Cloud Datastore, BigQuery)
Data science tools (via Cloud Datalab)
7 Data processing (via Hadoop/MapReduce, Cloud Dataflow)
Machine learning (via TensorFlow, Jupyter)
Machine learning APIs (via Cloud Vision API)
8 Serverless computing (via Cloud Functions)
Final project selection
9 Additional topics, Final project

Final project
10
Additional topics, Final project
Final project
Finals Final project demos
Lab notebook due in D2L