NETS 212: Scalable and Cloud Computing (Fall 2021)
What is the "cloud"? How do we build software systems and components that scale to
millions of users and petabytes of data, and are "always available"?
In the modern Internet, virtually all large Web services run atop multiple geographically
distributed data centers: Google, Yahoo, Facebook, iTunes, Amazon, eBay, Bing, etc.
Services must scale across thousands of machines, tolerate faults, and support thousands
of concurrent requests. Increasingly, the major providers (including Amazon, Google,
Microsoft, HP, and IBM) are looking at "hosting" third-party applications in their
data centers - forming so-called "cloud computing" services. A significant number
of these services also process "streaming" data: geocoding information from cell
phones, tweets, streaming video, etc.
This course, aimed at a sophomore with exposure to basic programming within the context
of a single machine, focuses on the issues and programming models related to such cloud
and distributed data processing technologies: data partitioning, storage schemes, stream
processing, and "mostly shared-nothing" parallel algorithms.
NETS212 is a required course for the NETS program and a core requirement for the Data Science Minor. It also counts as a project elective for CSCI and ASCS, and as an Information Systems Elective for SSE.
Office hour: Mondays 1:00-2:00pm (Zoom)
The format will be two 1.5-hour lectures per week, plus assigned readings. There will be regular
homework assignments, two midterms, and a term project. We will use Piazza for course-related discussions, and there will be occasional lab sessions.
As of July 2021, the plan is to hold the class in person. The University could change this, however, depending on COVID-19 trends and positivity rates on campus and within the surrounding communities. Please keep in mind that Penn
currently requires everyone to wear masks while indoors; this includes the lectures, lab sessions, and all office hours.
Time and location
Tuesdays/Thursdays 10:15-11:45am (DRLB A1)
CIS 120, Introduction to Programming
CIS 160, Discrete Mathematics
Co-requisite: CIS 121, Data Structures*
(* In Fall 2021, NETS212 and CIS121 are in the same time slot. We will work wround this; it is okay to take NETS212 without CIS121.)
Spark: The Definitive Guide, by Bill Chambers and Matei Zaharia (O'Reilly)
ISBN 9781491912218; read online for free, or buy for approx. $54.
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer (Morgan & Claypool)
ISBN 978-1608453429; read online for free, or buy for approx. $40.
Additional materials will be provided as handouts or in the form of light technical papers.
Homework 30%, Term project 30%, Exams 35%, Participation/quizzes 5%
You are encouraged to discuss your homework assignments with your classmates; however, any code you submit must be your own work. You may not share code with others or copy code from outside sources,
except where the assignment specifically allows it. Plagiarism can have serious consequences.
Recordings and other materials
At this time, we are not planning to record the lectures. All course materials (slides, handouts, framework code, etc.) are solely for your personal, educational use and may not be shared, copied, or redistributed without permission of the instructor. You are not allowed to make your own recordings of class sessions. Unauthorized sharing or recording is a violation of the Code of Academic Integrity.
Project and awards
The final team project is to build a small Facebook-like application using Node.js and Amazon's DynamoDB. Based on network analysis, the application should make friend recommendations; it should also visualize the social network. In previous years, Facebook and Citadel Securities have sponsored awards for the best term project. You can learn more about the winners from previous years in the Hall of Fame.
Homework assignments will be available for download; you can
submit your solution here.
If necessary, you can request an extension.
"What is the Cloud, and why is it interesting?"
Overview of topics
|Sep 2||Classes canceled due to Hurricane Ida|
||The Cloud [Slides]
||What is the Cloud? [Video] [Quiz]
Cloud hardware [Video] [Quiz]
Problems with classical scaling [Video] [Quiz]
Utility computing [Video] [Quiz]
Kinds of clouds [Video] [Quiz]
Virtualization [Video] [Quiz]
Cloud challenges [Video] [Quiz]
|Armbrust: A view of cloud computing
||Scalability and parallelization; Amdahl's law [Video] [Quiz]
Synchronization/concurrency/consistency [Video] [Quiz]
Mutual exclusing and locking [Video] [Quiz]
"NUMA, shared-nothing" [Video] [Quiz]
"Frontend/backend, sharding" [Video] [Quiz]
|Vogels: Eventually consistent
||The Internet [Slides]
||The Internet; packet switching [Video] [Quiz]
Path properties; TCP [Video] [Quiz]
HW1 overview [Video] [Quiz]
||HW0 due; HW1 released
|Sep 14||Last day to add|
||Faults and Failures
||Fault models [Video] [Quiz]
Examples of non-crash faults [Video] [Quiz]
Replication; durability and availability [Video] [Quiz]
Primary-backup replication [Video] [Quiz]
Network partitions; CAP theorem
|Tseitlin: The antifragile organization
||History of cloud computing
Interacting with the cloud
Overview of some other AWS services
|"Cloud computing features, issues, and challenges: a big picture"
KVS and concurrency
KVS and the Cloud
Case study: S3
Case study: DynamoDB
|Cooper et al.: PNUTS to Sherpa - Lessons from Yahoo!'s Cloud Database
||Introduction to programming for big data and Spark
An example big data problem
Parallelizable operations in Java
Programming in Spark
Key-value pair RDDs in Spark
||HW1MS2 due; HW2 released
||Programming in Spark
||Overview of programming in Spark
A simple Spark job: processing CSV data
Spark jobs with multiple stages
Distributed Spark jobs
Distributed programming considerations
||Overview and midterm reminder
Origins of Spark
Cluster storage for Spark and other big data engines
The Spark platform
|Zaharia et al.: Cluster Computing with Working Sets
|Oct 7||First midterm exam|
|Oct 11||Last day to drop|
||Distributed graph algorithms
Graph algorithms in Spark
Single-source shortest path
Naive Bayes learning
|"Lin & Dyer, Chapter 5"
|Oct 14||No class (Fall break)|
Adsorption / label propagation
Bulk synchronous parallelism
Pregel and graph processing
Overview of deep neural nets
HTML and CSS
The Domain Name System
HTTP and HTTPS
|"Cloudflare: HTTP/3: The past, the present, and the future"
||Project handout released
||Motivation: CGI and servlets
Node.js; basic operation
Hello world with Node
Cookies and sessions
|"Node at LinkedIn: the pursuit of thinner, lighter, faster"
||HW3 due; HW4 released
|Oct 29||Last day to designate course as pass/fail|
The Document Object Model
||HW4MS1 due; team formation deadline
AJAX with jQuery
socket.io and async
Working with APIs
|Nov 8||Last day to withdraw|
Data interchange; challenges
Research spotlight: Juneau - Managing & Guiding Data Analytics & Data Science
||HW4MS2 due; fir st project check-in
Working with XML
||HW4MS3 due (on Nov 12)
Attacks and Defenses (Part 1)
Attacks and Defenses (Part 2)
|Current OWASP Top 10
||Second project check-in
||Motivations for databases and data management
"Relational model, data streams"
SQL basics; declarative approach; query optimization
|F1: A Distributed SQL Database That Scales
Partly centralized systems; BitTorrent
Unstructured overlays; epidemic protocols
Structured overlays; consistent hashing; KBR
Case study: Pastry
|Rodrigues and Druschel: P2P systems
||Third project check-in
|Nov 25||Thanksgiving - no class|
||Case study: Bitcoin
Bitcoin and Proof-of-Work
Challenges in Bitcoin
||Fourth project check-in
||Case study: Facebook
Scalability in TAO
Fault handing in TAO
|Bronson et al.: TAO: Facebook's Distributed Data Store for the Social Graph
|Dec 9||Second midterm exam|
|Dec 15 - Dec 22||Project demos; written reports due|