Read on and leave a comment
or return to our portfolio.

Archive for September, 2005

18 Sep 2005

by Noel

What is Computer Science?

I love how everyone and their brother has an opinion, and it always stops there. I’d like to take a moment to rant, and point out that opinions do not a curriculum make.

The question of “what is computer science?” has been around for a while. The question of “what goes in a CS curriculum?” has worked the academic circuit for a few years as well. What’s great is that every Tom, Dick, and Harry will come up with an opinion, but not a lot of people work hard at actually trying to come up with a justifiable answer.

Dan Zabonini is a Tom, Dick, and Harry. Over at O’Reilly’s “Policy Center”, he’s posted his half-baked thoughts online (; it isn’t worth an active link. Just before a bulleted list of random thoughts, he qualifies his thinking with this choice quote:

So, what would you include in a modern Computer Science/Software Engineering course? I’ve started jotting some draft notes below (in no particular order, this is just a stream of conciousness…)

“This is just a stream of conciousness…”

If you want some thoughts on the topic that are not just a stream of consciousness, you might start reading the ACM Model Curricula documents; I’ve read them all. They’re complex, they consider a wide variety of issues, and they reflect the state of the discipline at the time they were written. Smart, hard-working people who have given their lives to the study of computing, who spent a lifetime teaching the discipline, crafted these documents.

Curriculum 68 was incredibly math-focused; it proposed a CS curriculum that, among other things, included thermodynamics and quantum mechanics. Curriculum 78 saw a lot of maths drop from the curriculum, much to the dismay of many; this is a theme that can be tracked through the ACM DL from the seventies to today. (Here are afew links to get you started.) The writings of Allen Tucker and Anthony Ralston are both particularly insistent on the role of mathematics in the CS curriculum.

The Joint IEEE/ACM Curricula 91 and CC2001 expand the scope of the discipline; CC2001 is particularly painful, as it defines an incredibly broad disciplinary set, yet sets up evaluation criteria that, 75% of the time, can be met without a student ever learning to program. Granted, in practice, programs are not run this way, but the criteria (as stated) do not explicitly require programming skill. I stress skill, because in most all CS departments, programming is not taught as a scientific practice, but as a skill- or craft-based activity. Again, there’s a literature on these different kinds of knowledge (scientific vs. skill vs. craft), and different theories of teaching and learning associated with each.

The curriculum is under constant revision—often pushed and pulled by industry and technology. Physics isn’t pulled about this way; nor is Mathematics, Chemistry, or Biology. Why is it, for example, that the AP curriculum was switched from Pascal to C/C++, and then (in a just a few short years) to Java? The language was incredibly young, untested, and has a convoluted, involved syntax to do simple things. From a first teaching of programming perspective, it’s an abomination. You don’t think so? Perhaps, then, you’ve never tried to teach 45-year-old returning students how to program in Java then.

If you’re going to walk around suggesting what should or shouldn’t be in a computer science curriculum, then perhaps you should begin by catching up on the arguments that have been made for the last 40 years. While you’re at it, I think it would be good if you understood the fundamental research on reading and writing that’s been done in the last 100 years, the research methodologies that were employed in that exploration, and the significance of the findings made with respect to teaching and learning theory over the last five decades. I don’t claim to have a complete grasp of all of this material, but I’ve made a start—and that’s more than 98% of the people who think, just because they can write some Java to transform XML documents in a servlet container, that they have important insights to offer the world regarding the teaching and learning of programming.

Once you’ve made a start on the literature, then we can have aninformed discussion, which is much more interesting than pissing in the wind.

End of rant.

Posted in General | Comments Off on What is Computer Science?

15 Sep 2005

by Noel

The Birmingham Course: OpenLaszlo to the Rescue!

We needed to deliver a prototype on-line exam quickly. Despite their simple appearance, on-line exams can have some complex interaction modes that are annoying to deal with in a client/server model.OpenLaszlo provided an excellent framework for quickly going from idea to solution.


The Birmingham Course approached us with the idea of
placing online a mock exam for their MRCPsych course. While the time constraints were tight, we thought there was an interesting opportunity in the project, and enjoyed the enthusiasm that The Birmingham Course brought to the table.

I would have liked to do some paper prototyping, and work through the issues that might arise before starting. However, we also wanted students currently enrolled in the course to trial an on-line version of the mock exam. This left us in a bit of a pickle: can you, in one-and-one-half weeks, go from concept to implementation for an on-line examination, and get it right? (I live far enough away from Birmingham that I didn’t have the ability to take a day or two and go up there to meet with the client.)

The mock exam had no data gathering requirements, nor were there any concerns with authentication and identifying users. Therefore, some of the trickier aspects of web-based application development were not concerns. However, we still needed to deliver 133 True/False questions, and 30 multiple-choice questions in a stateful way, so students could easily “go back” and change their answers, as well as get their end-of-exam score.

While there may be AJAX gurus out there who think this would be a piece of cake, I do almost all of this development work in Scheme, and have no particular expertise in HTML/CSS/Javascript interaction on twelve different browser platforms (that’s why I run with a team). I certainly don’t have a lot of patience for developing code in an unstructured and unsupportive environment. Put another way, I think the browser makes a lousy run-time environment; I want my compiler to check for obvious problems up front, and I want my runtime environment to be rich enough that I can go about debugging a running application. Your typical AJAX app fails on these counts far too readily for me to think that any AJAX code I develop in a hurry will be reliable. (I’d like to point out that I’ve never even given AJAX enough of my time to decide if my biases and opinions are right; I’ve only read code and stories from others, and I don’t like what I see.)

Enter OpenLaszlo. It has a compiler, that tells me when I make silly mistakes. It has a rich run-time environment, which includes an interactive debugging REPL. I can create a window as easily as saying

<canvas><window>Hi there!</window></canvas>

It uses JavaScript 1.5 as it’s scripting language, and has a really sweet little constraint engine built in. The upcoming 3.1 release has some very swish enhancements on the way as well.

I was able to quickly prototype ideas for the customer, push them to the WWW, and let them interact with the application. While it is possible to do all kinds of RPC from OpenLaszlo, I chose to employ another really nice feature of the environment: SOLO application deployment. If you’re willing to give up some (not all) connectivity with remote hosts, OpenLaszlo apps can be compiled to a single, static Flash file. This means that any user with Flash 6 or better can interact with a very rich net-based app, and get a very desktop-like experience.

The end-product of a one-week mad dash can be seen online; I was quite pleased with it. I know I made some choices that were less than optimal, but the code can be refactored and improved in a future iteration of the project. I was also happy working with OpenLaszlo as a development tool—putting together GUIs was no more complex than writing a webpage, the event model and constraint system are both well-behaved and useful, and being able to deliver a static Flash document as an application means I don’t have to worry about a timeouts on client/server interactions, nor do I have to wonder if IE4/IE5/IE6/Opera/Firefox/Mozilla/Safari is going to choke on my particular choice of HTML, CSS, and Javascript idioms. If you’re some kind of “purist” who abhors Flash, then… I can’t help you. But it’s widely deployed, and much better behaved than a gaggle of browsers.

Food for thought. Point is, I liked it. And the customer loved it; the app behaved just the way they wanted. I don’t know what else I can say.

Posted in Javascript, Web development | Comments Off on The Birmingham Course: OpenLaszlo to the Rescue!

15 Sep 2005

by Noel

eBay acquires Skype

eBay to acquire Skype for over 2 billion (euros or USD). That is a lot of biscuits. I think you have to take this as a sign that war is about to erupt in the VoIP market, given Google’s recent entry. Now, who’s left for Yahoo to buy?

Posted in Business | Comments Off on eBay acquires Skype

12 Sep 2005

by Noel

New Apple Products

While I was away on holiday Apple released two new products, the iPod Nano, and an iTunes equipped phone in collaboration with Motorola. Apple is currently the biggest innovator in hardware design so it is worth looking at what they come up with.

In the case of the iPod Nano this is one sleek device. It takes the existing iPod design and makes it smaller and sexier. I suspect this product is driven more by improvements in storage technology allowing a smaller device than any plan to evolve the iPod design, but it sure looks nice.

The iTunes phone though disappoints me. iPods have smooth surfaces, with a minimum of visual noise. This phone is a brick, with all sorts of unnecessary fuss such as the two-tone colour scheme and the raised M on the front. It doesn’t look anything like an iPod, and so dilutes, rather than strengthens, the iconic iPod brand. I’d like to know the inside story of the design of the phone; I suspect it has a lot more involvement from Motorola than Apple.

Posted in Design | Comments Off on New Apple Products

12 Sep 2005

by Noel

Firefox 1.5 Beta 1

Firefox 1.5 beta 1 is out. I’ve been tracking Deer Park (the pre-beta releases of Firefox) for a while now so I’m excited to see this new release. I’m particularly enthusiastic about the canvas support as I’m having fun playing around with vector graphics. The Firefox canvas is much more complete, though slower, than Apple’s buggy implementation in Safari. The other new features don’t excite me as much, as the web applications I develop run on the general Internet. If you have a closed environment they will be more useful. In such an environment, XULRunner becomes very interesting.

Posted in Web development | Comments Off on Firefox 1.5 Beta 1