Thinking an academic package for Azure

This year, this is the 4th time that I am a teaching Software Engineering and Distributed Computing at the Ecole normale supérieure (ENS). The classroom project of 2010 is based on Windows Azure, like the one of 2009.

Today, I have been kindly asked by Microsoft folks to suggest an academic package for Windows Azure, to help those like me who wants to get their students started with cloud computing in general, and Windows Azure in particular.

Thus, I decided to post here my early thoughts on that one. Keep in mind I have strictly no power whatsoever on Microsoft strategy. I am merely publishing here some thoughts in the hope of getting extra community feedback.

I believe that Windows Azure, with its strong emphasis on tooling experience, is a very well suited platform for introducing cloud computing to Computer Science students.

Unfortunately, getting an extra budget allocated for the cloud computing course in the Computer Science Department of your local university is typically complicated. Indeed, very few CS courses require a specific budget for experiments. Furthermore, the pay-as-you-go pricing of cloud computing goes against nearly every single budgeting rule that universities have in place - at least for France - but I would guess similar policies in other countries. Administrations tend to be wary of “elastic” budgeting, and IMHO, rightfully so. This is not a criticism, merely an observation.

In my short 2-years cloud teaching experience, a nice academic package sponsored by Microsoft has tremendously simplified my situation to deliver the “experimental” part of my cloud computing course.

Obviously, unlike software licenses, offering cloud resources costs very real money. In order to make the most of resources allocated to academics, I would suggest narrowing the offer down to the students who are the most likely to have an impact on the software industry in the next decade.

The following conditions could be applied to the offer:

  1. Course is setup by a Computer Science Department.
  2. It focuses on cloud computing and/or software engineering.
  3. Hands-on, project-oriented teaching.
  4. Small classroom, 30 students or less.

Obviously there are plenty of situations where cloud computing would make sense, and not fit into these constraints such as bioinformatics class with data crunching project or large audience courses with +100 students … but the package that I am proposing below is unlikely to match the needs of those situations anyway.

For the academic package itself, I would suggest:

  1. 1 book per student on Visual Studio 20XY (replace XY by the latest edition).
  2. 4 months of Azure hosting with:
    • 4 small VMs
    • 30 storage accounts, cumulative storage limited to 50GB.
    • 4 small SQL instances of 1GB.
    • Cumulative bandwidth limited to 5GB per day.

Although, it might be surprising in this day and age of cloud computing, I have found that artifacts made out of dead trees tend to be the most valuable ingredient for a good cloud computing course, especially those +1000 pages ones about the latest versions of Visual Studio / .NET (future editions might even include a chapter or two about Windows Azure which would be really nice).

Indeed, in order to tackle the cloud, students must first overcome difficulties posed by their programming environments. One can argue that everything can be found on the web. That’s true, but there is so much information online about .NET and Visual Studio, and that students get lost and lose their motivation if they have to browse through an endless flow of information.

Furthermore, I have found that teaching basics of C# or .NET in a Computer Science is a bad idea. First, it’s like an attempt to kill students out of sheer boredom. Just imagine yourself listening for 3h straight at someone enumerating keywords of a programming language. Second, you have little or no control on the background of your students. Some might be Java or C++ gurus already; while some might have never heard of OO programming.

With the book on hand, I suggest to simply ask students to read a couple of chapters from one week to the next, and to interrogate them on their reading at the beginning of each session.

Then, concerning the Windows Azure package itself, I suggest 4 months worth of CPU as it should fit for most courses. If the course spread longer than 4 months then I would suggest students to start optimizing their app not to use all the 4 VMs all the time.

4 VMs seems just enough to feel both the power and the pain of scaling out. It brings a handy 4x speed-up if the app is well designed, but represents a world of pain if the app does not correctly handle concurrency.

Same idea applies to SQL instances. Offering a single 10GB instance would make things easier, but  course should be focused on scaling out, not scaling up. Thus, there is no reason to make things easier here.

In practice, I have found that offering individual storage accounts simplifies experiments, although there is little support for offering either lot of storage or lot of bandwidth.

In total, the package would represent a value of roughly $2500 (assuming $30 per book), and, from a different angle, about $100 per student. Not cheap, but attracting talented students seems worth a worthy (albeit long-term) investment.

Reader Comments (2)

Azure pricing/packaging feels like they have been thinking about it for ages, and changing it is harder than moving a mountain (“cast in stone” comes to mind). I have been talking with a MS evangelist and he told me that there are no plans to change Azure pricing in the sohrt term, even pre-paid packages… At any rate, Microsoft has always tried to connect with universities, so I’m sure that if they get some pressure, they’ll start offering something Azure-related for academic courses. It would be a great publicity for them, especially if their cloud was used for large distributed computing projects. March 22, 2010 | Dario Solera

I would definitely agree with that package. First, handing out a book instead of giving a long and boring course describing the language, its features, its constructions and all is just useless – most students will fall asleep before half an hour, half of them won’t return on the next course, and pretty much none will actually even start to grasp the language anyway. Only practice (especially when it comes to such a heavy framework as .NET) will lead to a valuable mastery of the platform, and that’s where the book comes handy. Don’t know what that sample construction is ? Well, just reach the reference index, find the right page, read it, get it, go on. An internet reference based approach could also work, but often involves much more random and wastes way more time than using your mighty reference book. For the whole azure hosting part, 4 vms definitely seems to be a good compromise between cost and profit. Last year we had 20 VMs at some point, but we didn’t suffer from more issues than when we had only 3 or 4 running – 4 is a reasonable number that still enables all the great data corruption issues that comes from parallelism and such, without being extra expensive. Good post and good proposal, imho. April 20, 2010 | Guillaume Seguin