Course Description
What exactly is "cloud computing"? Ask five people and you'll get eight different answers—but many will agree on the following trends:
- Many meaningful tasks require the processing of larger and larger datasets (so-called "Web-scale" problems). This requires harnessing the power of tens, hundreds, or even thousands of machines.
- Due to economies of scale and the development of virtualization technology, utility computing is an emerging model for provisioning computing resources. In other words, one could "rent" computing cycles instead of buying machines.
- Highly-interactive applications can be delivered from "within the clouds", perhaps replacing traditional desktop software as we know today.
In recognition of these trends, this course will focus on two specific technologies:
- MapReduce, via the Hadoop open-source implementation. MapReduce is a distributed programming model developed by Google; it provides a high-level functional abstraction that allows a one to write programs that are transparently distributed over a computer cluster.
- Ajax (asynchronous JavaScript and XML), a group of interrelated technologies used for creating interactive Web applications.
One way to understand the relationship between these two technologies is to think of MapReduce as the "back-end" of cloud computing—large batch jobs that crunch a lot of data. The results of these analyses would be served to users on the "front-end" through interactive Web applications, and Ajax is emerging as the dominant technology for developing such applications.
What better way to run a "cloud computing" course but in the clouds itself? Thanks to generous support from Amazon, students in this course will be given access to Amazon Web Services, and will be literally working "in the clouds".