Clouds and Power-Aware Computing
General Information
Spring 2011

Course at a glance


"Cloud Computing" is one of the hottest topics in the media lately. Exactly what is it? How does it relate to you? What can one do with clouds?

In this course, we will take a broad view of cloud computing and look at everything, from how to program a cloud application, to how one constructs a cloud, to the business cases for using (and not using) clouds for common tasks. There is no textbook, and we will be greatly depending upon the web to both deliver articles for our study and to motivate the discussion.

Some lessons learned from last time:

See /comp/150CPA/articles/couch-35-03-shamanism.pdf (only available on the local disk, not on the website) for a brief, pointed, and perhaps humorous commentary on the last run of the course.

Get ready for a wild ride, like no other course you have taken. We are going "where few have gone before".

Your professor

It is important to realize that I am learning about this as I go. Even though this is the second run of the course, the field has changed so much in a single year that I have plenty of catching up to do. For me, this is exciting; there has never been a sub-field that is evolving so quickly.

Therefore, I do not consider you as students, but rather, as "partners". Rather than "leading" you, I would rather think of the course as taking a walk together and exploring this topic together. Your responsibilities in this format include keeping me on track, challenging me when you think I'm wrong, and guiding me toward the aspects you consider most interesting.

For those of you who have not had me as an instructor before, it may take some acclimatization to get used to me. Please remember that:


The formal prerequisites are either Comp40 or EE14, and optionally, Comp111. The informal prerequisites include an open mind, resourcefulness, and curiosity. In doing my assignments, you may use any printed source on the entire internet to help. To excel here, you must be an explorer, and take responsibility for your own learning. I'll give you links to get you started, but that is only the beginning.

Note also that this is your course. You might be surprised that all it takes is a brief mention of a cool new technology to get a lecture on it. If anything catches your eye, or befuddles you, mention it!

Class structure

A course on a creative and ground-breaking topic deserves a creative approach. In this course, you are allowed and encouraged to work in small groups of students for many parts of the course. The smallest useful group is 2, and the largest is 5 people. Activities called "exercises" are intended for groups rather than individuals. There are also "exams", "quizzes" and "assessments" (take-home exams) that are intended to be completed individually. These will be clearly marked.

There are several unique and experimental components to the structure of this class.

The reason for these changes might not be obvious except to an education researcher (one of whom is my spouse). Discussion is one of the best possible ways to learn material. This course's core material is entirely contained in the lectures, so immediate discussion of each lecture is the best possible way to remember it. Most professors use each exercise for both reinforcement and assessment. By splitting these up, I intend to encourage as much interaction as possible, while making the objective of each activity clear to you.


The definition of ethics in this course differs slightly from that in other courses. In some cases, you are expected to work in groups. In this case, ethical behavior means disclosing the members of your group when you submit the project. It is unethical to sign as a member of a group when you did not participate, and equally unethical to involve some other person outside the group as a "ringer" without mention of that involvement.

In other cases, you are explicitly not allowed to work in groups, e.g., on exams, quizzes, and assessments. In this case, ethical behavior means working alone, as well as disclosing the resources you utilized to complete the assessment. On assessments, you may use any resources on the internet to help, but may not converse with other people in any form (e.g., blogs, web publishing, sms, email, twitter(!), etc) to solve the problem. Search engine results count as "published" material.

Grading and lateness

Exercises and assessments are typically graded on a scale from 0 to 10. Exercises receive grades of 7 to 10 based upon participation and effort. Assessments receive grades of 0 to 10 based upon correctness. An (automatic) lateness penalty applies for homework turned in late; this is typically one point deducted (10%) for each week late or fraction thereof. If an exercise or assessment is due Wed at 11:00 pm, then one point is deducted if it is turned in after 11:00 pm on Wed and before 11:00 pm the next Wed. Two points are deducted if it is turned in after 11:00 pm on the next Wed and before 11:00 pm on the following one.

Complaints about grading must be accompanied by working code and/or corrected solutions:)

Computer Language

First and foremost, this is a programming course, though the definition of "programming" might be different than you initially imagine. Among other effects of the cloud, it is redefining what programming means, as we will see in a series of progressively more bizarre exercises. At the beginning, programming will look much as you imagine it now, but by the end, we will have rethought completely what programming means, and you'll have some glimpse of the "programmer" of the future.

For better or worse, the language of the contemporary cloud is Java. I do not consider myself an expert on Java, and I will be learning a few of the finer points with you. One thing that will save us from ourselves is that the Java of the cloud does not depend upon massive libraries that take years to absorb, and the cloud-based libraries are by contrast smaller and easier to learn. For the most part, homework will be in Java, though there are going to be some homework in which configuration in XML -- and not coding in Java -- is the central issue.

Of late, however, python is making a good showing in the cloud, and we will be making some forays into python when it is easier to use than Java for a particular problem.

Programming Environments

While I will not "decree" any specific programming environment, assignments will typically be crafted to be easier in the Eclipse programming environment. The best possible way to do assignments is to have your own copy of Eclipse on your laptop or desktop computer; it's free. For every assignment, there will be a need for custom configuration of Eclipse to do it, including add-ons.

In the second part of the course, we will be working inside complete instances ("sandboxes") of an operating environment, which can be executed as programs using VirtualBox, VMWare player, etc. Thus it helps to be able to load a very large image onto your personal machine.

Thus the course assignments are much easier if you have access to a laptop or desktop with a lot of free space, e.g., 50 GB.

If you don't have such a beast, I will make arrangements for you to have access to a local virtual machine within the department, for use for your assignments. This machine doesn't physically exist; it is a virtual instance in our VMWare infrastructure. Please let me know quickly if this is the case.