Internet, Web & Cloud Systems

Location: FAB 10 (Tue/Thu 2pm-3:50pm)
Instructor: Wu-chang Feng
TA: Vincent Liang (OdinID haosheng , DM @Vincent Liang on pdx-cs.slack.com)
  • Office Hours Mon/Wed 10-11am in Fishbowl (FAB 120) or Zoom by appointment
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, homework assignments, and a final project.

Schedule

Week Topic Assignments Due
1 Internet overview, Data-link, ARP
DHCP, IP
Labs, HW1 Homework #1 (Fri)
2 NAT, IPv6, Network virtualization, SDNs, ICMP, UDP, TCP
TLS, HTTP, DNS
Labs Week #1 Labs (Mon)
3 Web programming languages, MVC, web frameworks, Python (to decorators)
Python, Flask, nginx/wsgi, Databases and SQL/NoSQL
Labs, HW2 Week #2 Labs (Mon)
4 Databases (ORMs, Web APIs, JSON/REST/gRPC/GraphQL)
Virtualization and Virtual Machines (Type 1, Type 2), Containers (Docker), Unikernels
Labs, HW3 Week #3 Labs (Mon)
HW #2 (Fri)
5 Cloud Computing overview, Cloud Security, IAM (GCP)
IAM (AWS), Infrastructure as a service, Databases as a Service
Labs Week #4 Labs (Mon)
HW #3 (Fri)
6 Serverless platforms (Platform as a service)
Serverless containers and functions (Functions and containers as a service)
Labs, HW4 Week #5 Labs (Mon)
7 Infrastructure as Code (Kubernetes, Terraform)
APIs, Machine learning APIs
Labs Week #6 Labs (Mon)
HW #4 (Fri)
8 API Gateways, OAuth2
Backend as a Service
Labs, Final project Week #7 Labs (Mon)
9 Data Warehousing
Data Processing, Data Visualization, Data Notebooks
Labs Week #8 Labs (Mon)
10 LLMs
CDNs, HTTP/2, QUIC
Labs Week #9 Labs (Mon)
Finals week Final project   Week #10 Labs (Mon)
Final project (Friday)

Assignments

Labs and notebook
Lab assignments will be given each class covering the course material. You will perform each one, while maintaining a lab notebook in a Google Doc that documents your progress via screenshots with your OdinID in them. The notebook should also include answers to any questions in the labs.  Notebooks should be exported as a PDF file and include a table of contents generated by Google Docs. Submission will be done via adding, committing and pushing the file to your private git repository. Use the following naming convention to submit your notebooks.
  • notebooks/<week_number>.pdf e.g. notebooks/Week1.pdf
The notebook will be graded based upon the following rubric:
  • Neatness and organization
  • Completeness
  • Inclusion of OdinID or project identifier in screenshots
Late submissions
Always turn in what you have done on-time. All late work submitted will have a 20% deduction. If you submit any late work, it will be graded at the end of the last week of class. Late work must be placed in the late directory in your GitLab repository and named according to the due week. Use the following naming convention for late work: late/WeekX.pdf. For example, a late addendum to Week1.pdf should be submitted as late/Week1.pdf. Late work will not be graded beyond the last week of class.

Homework
Throughout the term, homework assignments will be given that are to be done individually and submitted via your git repository and a public DockerHub repository. Instructions and rubrics for each homework will be given as they are assigned.

Final project
A final project will be assigned for you to do individually. It will involve building a web application of your own that utilizes Machine Learning APIs of your choice (Vision, Natural Language Processing, Speech, Video Intelligence, Translate, etc) or other APIs you choose (e.g. ChatGPT, Maps, Knowledge Graph, Yelp, LiFX, etc.). The web application can either build off of your previous homework or be a completely new application. Detailed instructions will be given when the project is assigned.

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 5%
Homework 25%
Lab notebooks 45%
Final Project Demo and Walkthrough 25%
Attendance and participation
Attendance is graded. Participation in the Slack channel and in class is encouraged. You are expected to follow this code of conduct when communicating.
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.