CIS399/002: Scalable and Cloud Computing (Fall 2010)

Location Towne 305, Tuesday/Thursday 1:30-3:00pm
Instructors Andreas Haeberlen
Location: 560 Levine Hall North (a.k.a. GRW building)
Office hours: Tu 12:30-1:30
Zachary Ives
Location: 576 Levine Hall North (a.k.a. GRW building)
Office hours: Th 12:30-1:30
Course description 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 recommentdation, TF/IDF), web programming basics (HTML5, AJAX), 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.
Prerequisites CIS 120, Introduction to Programming
CIS 160, Discrete Mathematics
Co-requisite: CIS 121, Data Structures
Texts and readings Hadoop: The Definite Guide by Tom White (O'Reilly)
Additional materials will be provided as handouts or in the form of light technical papers.
Grading Homework 30%, Midterm 18%, Term project 30%, Participation 2%, Final 20%
Other resources Course discussion forum:

Miscellaneous links likely to be of use:
Term project In two-person teams, build a small Facebook-like application using servlets and Google's Web Toolkit. Based on network analysis, the application should make friend and "interesting image" suggestions.
Schedule is available here
Assigments are available in (frequently updated) electronic form here