Summer Bridging Program?

March 30th, 2009, 11:22 am PST by Greg

In the last couple of years, I’ve been on the receiving end of a couple of queries from high school students that all boil down to “is there some way I can get involved this summer?”

Last year, I managed to work with two students on demos that our recruiters could use at career fairs, etc. The thought has occurred to have somebody this year work to help set up a high school robotics competition (which I have had in mind for a while, but never had a chance to implement).

To be fair, I have only had four such inquiries, but based on the metric standard ratio of asked to unasked questions, I’m going to assume those four questions represent 40 people out there somewhere who are actually interested. These have been students finishing grades 11 and 12, who are planning to study CS, and want some outlet for their interest before they show up as a first year student.

Can anybody picture a good way to set up something like a “bridging program” for such students? Imagine a half dozen grade 11/12 students who plan to study CS, can program in some minimal way, and want to (let’s say) volunteer a few weeks of their time to get some good CS experiences.

I feel like there’s a good idea in there somewhere, but I just can’t quite see it. Thoughts?

Ada Lovelace Day Post

March 24th, 2009, 3:52 pm PST by Greg

Okay… it’s Ada Lovelace Day and the goal is…

I will publish a blog post on Tuesday 24th March about a woman in technology whom I admire…

Having just been (gently) ambushed to post something, I have only been mulling this over for a few minutes. It’s a tall order.

Old profs? All I’d really have to say is “she taught that course well” (and I don’t have many examples since I was a math major in undergrad and took relatively few CS courses). Colleagues? I certainly admire some of the women I work with, but it would be a little weird to write about them.

It took be a while, but I finally figured it out: the SFU WICS girls (but only if I can apply the label “WICSies” to them).

I have hung around university student groups in one capacity or another for the last 15 years. I have seen ups and downs, highs and lows, frantic activity and stagnation. I have never dealt with a group like WICS before.

The whole group is uniformly positive and constructive. They all understand the group’s mission and have a huge variety of ways to work towards it. I count many former members as friends and as some of my most interesting students.

I certainly wish we had 50% women in CS. Still, I can’t help but thinking that if we did, WICS wouldn’t be as wonderful as it is, and I’d be a little sad about that.

Everything that’s wrong with Java

March 22nd, 2009, 4:52 pm PST by Greg

I’m in the process of learning the Java Spring web framework (motto: there’s nothing another XML configuration file can’t fix). This has turned out to be a bit of an exercise in frustration: I have always had trouble dealing with Java tech because of their jargon-filled docs. Actually, it’s not even the jargon per se, it’s that the jargon is all Java-specific.

An example: the term “servlet container”. A “servlet container” is a web server that can run a servlet. That’s all. There’s no need for a new term: just say “web server that can run a servlet” or even “servlet implementation” and you’ve removed a whole layer of jargon that people have to learn.

As I was exploring Hibernate (which can integrate with Spring) today, I went to the Hibernate home page and realized I had another example of why I hate the Java ecosystem. Their front page contains this description of what Hibernate is:

Hibernate is a powerful, high performance object/relational persistence and query service. Hibernate lets you develop persistent classes following object-oriented idiom – including association, inheritance, polymorphism, composition, and collections.

Well… I suppose that’s pretty informative if you’re willing to parse through the overly-dense sentence structure and already know how the Java world uses all those terms. And, the page contains this diagram:

hibernate_stacks

Riiiiight. That totally clears things up. Perfect for first-time visitors.

Now, compare a similar (but admittedly less-powerful) Python technology: the home page for SQLObject. They have this description:

SQLObject is a popular Object Relational Manager for providing an object interface to your database, with tables as classes, rows as instances, and columns as attributes.

I’d be hard-pressed to come up with a more clear and concise description of ORM than that. It’s followed by a dozen-line code example of how to work with SQLObject in Python which more-or-less demonstrates exactly what the tool does, how it does it, and what it can be used for.

Basically, the message I get from the Hibernate front page: “boy, this sure looks enterprisey“. From SQLObject: “oh, I see what this tool is for”.

Just to be a little constructive, let me take a shot at rewriting the Hibernate intro:

Hibernate is a powerful Object-Relational Mapper for Java: it lets you save object instances as rows in a relational database, and retrieve them later. Hibernate supports most object-oriented programming techniques, including association, inheritance, polymorphism, composition, and collections.

Okay, that’s off my chest. Bring on the Java fanboys…