NETS 212: Scalable and Cloud Computing (Fall 2016)
Location: 560 Levine Hall
Office hour: Fridays 1:00-2:00pm
|Time and location||Tuesdays/Thursdays 4:30-6:00pm
Spencer Lake (firstname.lastname@example.org)
Office hour: Mondays 5:00-6:30pm (6th floor bump space)
Graham Mosley (email@example.com)
Office hour: Tuesdays 6:00-7:30pm (Levine 612)
Jeffrey Silver (firstname.lastname@example.org)
Office hour: Wednesdays 5:30-7:00pm (Levine 612)
Timothy Clancy (email@example.com)
Office hour: Thursdays 6:00-7:30pm (5th floor bump space)
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.
|Topics covered||Datacenter architectures, the MapReduce programming model, Hadoop, cloud algorithms (PageRank, adsorption, friend recommendation, TF/IDF), web programming basics (servlets, AJAX, Node.js/Express, Bootstrap), higher-level programming (Hive, Pig Latin), ...|
|Format||The format will be two 1.5-hour lectures per week, plus assigned readings. There will be regular homework assignments and a term project, plus a midterm and a final exam.|
CIS 120, Introduction to Programming
CIS 160, Discrete Mathematics
Co-requisite: CIS 121, Data Structures
|Texts and readings||
Hadoop: The Definitive Guide, Fourth Edition, by Tom White (O'Reilly) (ISBN 978-1-4919-0163-2; read online)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer (Morgan & Claypool) (ISBN 978-1608453429; read online)
Additional materials will be provided as handouts or in the form of light technical papers.
|Grading||Homework 30%, Term project 30%, Exams 35%, Participation 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.
can have serious consequences.
We will be using Piazza for course-related discussions.
|Term project||In two-person teams, build a small Facebook-like application using Node.js and Amazon's SimpleDB. Based on network analysis, the application should make friend recommendations; it should also visualize the social network.|
|Facebook award||As in previous years, Facebook is sponsoring an award for the best term project. You can learn more about the winners from previous years in the Hall of Fame.|
|Assignments||Homework assignments will be available for download; you can submit your solution here. If necessary, you can request an extension.|
|Lab sessions||The TAs may occasionally hold lab sessions to provide additional help with topics related to the class.|
Below is the tentative schedule for the course: