DDP Kayaking

August 17th, 2009, 12:40 pm PDT by Greg

A while ago, Ted and I had the brainwave to take some of the DDP kids kayaking. (If you don’t know what DDP is, just think “Chinese exchange students” and you’ll be close enough to follow along.)

So yesterday, we showed up at Rocky Point with something like 28 students, approximately 27 of whom had just seen a kayak for the first time that day, and certainly never been in one. Try to picture me, Ted, and two guys from the kayak rental place trying to quickly explain “hold the paddle like this; that end is the front; sit in it; go!”

I re-learned that Chinese people don’t have a keenly developed sense of “let’s get together and do this activity as a group.” This, along with the baseline inability to control a kayak on your first time out, meant that getting the group to all head in one direction to get somewhere was hopeless.

More than anything, I wish I could get time-lapse video of the bay we were in for those two hours. It would have looked like Brownian motion. As a group, I think we went maybe 500 metres in the whole time. Ted and I each paddled miles in a futile effort to sheepdog the group.

There were two students who tipped out of their kayaks during the day, which is probably pretty good all things considered. It’s a good thing Ted was there: I have never done a deep water kayak rescue. (But I could do a deep water canoe-over-canoe rescue with my eyes closed.) It turns out the principles are the same: empty the boat, bring it alongside you for stability, and get the person to kick-and-pull their way up out of the water.

For the second rescue, I was alongside Ted. (My kayak, then Ted’s, then the empty one, and the student in the water on the far side.) The kick-and-pull out of the water wasn’t going so well. (It takes either a strong swimmer or a lot of upper-body strength.)

I learned everything I know about patience from my father. So, while the student was kicking, I grabbed him by the life jacket, hauled him up (hard enough that he made a little squawking noise), and deposited him face down into Ted’s lap. Hey, the goal was to get him out of the water, and I achieved the goal, right? And, once he found himself laying across Ted’s lap, he was pretty quick to hop back into his kayak too, so it was efficient all-around.

I hope the students had a good time: I suspect they would have told me they did no matter what. I was in the water in a small boat, so I had a blast.

Edit: It should be pointed out that I wasn’t aiming for Ted’s lap; that’s just how it played out. Overall the day was a lot of fun, and I’d do it again next weekend if everybody else wanted to go too.

CMPT 383, or “Why I Hate Ted”

July 7th, 2009, 1:56 pm PDT by Greg

As many of you know, one of the goals for my study leave has been to prepare to teach CMPT 383, Comparative Programming Languages. The calendar says this course is:

Various concepts and principles underlying the design and use of modern programming languages are considered in the context of procedural, object-oriented, functional and logic programming languages. Topics include data and control structuring constructs, facilities for modularity and data abstraction, polymorphism, syntax, and formal semantics.

I took a similar course in my undergrad, and I think it was really useful in helping me see the broader picture of what programming is.

I have been thinking about the course off-and-on for more than a year. I had been forming a pretty solid picture of what the course I teach would look like and things were going well, despite never having devoted any specific time to it or really writing anything down.

Then I talked to Ted. Ted has taught the course before, and has thought a lot about it. His thoughts on the course differed from mine. In particular, he opined that “logic programming is dead, so why teach it?” (Okay, maybe that’s not a direct quote, but that’s what I heard.) So that leaves functional programming as the only new paradigm worth talking about.

He also convinced me that covering too many languages in the single course puts students into a situation of too many trees, not enough forest. (That is, they get lost in syntax and don’t appreciate the core differences between languages.)

Basically Ted did the most annoying thing in the world: he disagreed with me and he was right.

But, there is a lot of stuff that I hadn’t considered before, but might be worth talking about:

  • Type systems: static/dynamic, strong/weak, built-in data types, OO (or not), type inference, etc.
  • Execution/compilation environment: native code generation, JIT compilers, virtual machines, language translation (e.g. Alice → Java → execution), etc.

So, what the hell do I do with all of that? Any ideas how to put all of that together into a coherent course that students can actually enjoy?

Summer Bridging Program?

March 30th, 2009, 11:22 am PDT 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 PDT 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 PDT 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…

Turd Polishing

February 24th, 2009, 9:38 pm PST by Greg

I spent the weekend trying to get together a paper for WCCCE 2009 (Western Canadian Conference on Computing Education). WCCCE is a fairly small, local conference. I always like going: the people who go pretty much all know each other, and it’s a good chance to talk to people from other schools.

What I wanted to do was look at the Subversion version control repositories from the last few semesters of CMPT 470. I figured I could make a good story out of it somewhere: there’s a lot of data in there. I assumed there would be some correlation between the way the repository was used and students’ marks or peer evaluation or something.

There wasn’t. Bupkis.

Anyway… I could have tried to sell a paper along the lines of “hey, look how unquantifiable this marking thing we do is”, but that’s pretty unsatisfying. I thought I was going to have to give up on the whole thing, or at least wait until next year and take some time to analyze things in a less frenzied way.

But, just before I sent the email calling the whole thing off, a thought occurred and I proposed a workshop instead:

Using Subversion in Your Class

In this interactive workshop, we will explore the use of the Subversion version control system in a class, particularly one that involves group work. Topics will include the basic usage of Subversion, creation of shared repositories given various technical restrictions, resources for students, and discussion of how instructors can enhance their teaching using a version control system. Participants with laptops will be invited to explore a shared repository as part of the workshop.

That’s a lot better than some dodgy paper: it’s something the people at the conference might actually want to hear about.

The lesson: Everything has a good idea in it somewhere. Unfortunately, you might spend your weekend fruitlessly doing statistics before you find it.

The Downside of Study Leave

February 12th, 2009, 12:02 pm PST by Greg

I’m starting to really see the mixed-blessing of having a study leave (or “sabbatical” if you like). As I mentioned before, the purpose of the leave is essentially to do stuff that you didn’t have a chance to while teaching.

Here’s the problem: I can always find time to do most of the stuff I really want to do. What’s left are tasks that I had been putting off because I didn’t really want to face them.

Case in point: This month is pretty much dedicated to CMPT 165 distance ed revisions.

The old 165 distance has gotten a little crufty, and needs some attention. I had already done the work on the course content and Study Guide. Now just have to do the assignments, exams and final admin stuff. What parts of teaching do I hate most? Yup. Those.

And the kicker is that I know that no matter what I do, half of the students taking 165 are going to hate it and me anyway. They want an easy no-work credit and are still going to find that if they don’t know any tech anything, it’s going to be a University course worth of work (but realistically, no more than that).

Feh!

Sabbatical Plan

August 23rd, 2008, 9:53 am PDT by Greg

Many people have asked what I am doing on my sabbatical (officially “study leave“). I guess I should say a little more. According to the University,

The purpose of study leave for Lecturers… is to provide a period of time during which the individual is relieved of his/her employment duties in order to complete a project or course of study which will enhance his/her work at the University in the future.

Sounds good. What I officially proposed to do to make the world a better place is:

  • Learn more about programming language design and implementation, so I can teach CMPT 383 (Comparative Programming Languages) and possibly CMPT 379 (Principles of Compiler Design) in the future. This is something I have always been interested in, but one of the gaps left by not doing a full undergrad in CS. (I was mostly math.)
  • Revise the distance ed version of CMPT 165 (Intro to the Internet and WWW). The old version is a little crufty and has been shoved into a “breadth course” role that it wasn’t intended for.
  • Finish the distance ed version of CMPT 120 (Intro to CS and Programming). That has been almost done for a couple of years, and needs to be polished off.
  • Get back to the biological modeling stuff that has been shoved to the side of my desk for two years while I have been undergrad director.
  • Continue to participate in the School’s recruitment and outreach activities.

And the unofficial stuff:

  • To get to the “more about programming languages” stuff (and because it will be interesting), I intend to learn a programming language a month.
  • I’m trying to convince Amanda that she needs a CMPT faculty member to do international recruiting and partnership stuff. (Her new title is “Manager of International Recruiting and Partnerships”.) Basically, I don’t care where she needs me to go: I’m willing to literally go to the ends of the earth for the University… as long as the University foots the bill and I can take a few extra days to tourist-it-up.
  • A few games may be played, particularly for the first two weeks. I haven’t taken more than a few days off (to go to North Carolina) for about 20 months. I’m not going to feel even the slightest bit bad about a couple of weeks of god-game addiction.
  • I probably should figure out what I want to be when I grow up. In particular, does that involve getting a PhD, or climbing some administrative ladder, or some other career entirely?

Woot!

August 19th, 2008, 12:12 am PDT by Greg

I am finally finished the marking of the CMPT 470 projects. It usually takes me a week (or maybe a little more) to get them done. This semester, the world conspired against me. They were in for a week before I even looked at them.

But in exchange for my lack of 470-mindshare, I live in a nicer place, we had a successful Shad Valley intern for two weeks, we have a new manager (in Amanda’s old position), two co-op students have been hired, and none of our staff quit. It has been a really rough couple of weeks. This quote from Fear and Loathing in Las Vegas has been on my mind a lot:

The possibility of physical and mental collapse is now very real. No sympathy for the Devil, keep that in mind. Buy the ticket, take the ride.

I bought the ticket, and I took the ride. I’m sure I’m a better person for it. But mostly, I’m ready for my sabbatical.

I finished the marking about 20 minutes ago, and if I’m to be honest, I’m already fairly drunk. Hold on… I can still do that “close your eyes, hold out your hand, and touch your nose” thing. It’s probably because the last drink hasn’t hit my bloodstream yet, though.

Missed opportunity

July 2nd, 2008, 9:34 pm PDT by Greg

In my 470 lecture today, I was making comment about MySpace. To point out that I wasn’t a MySpace user, I said

Since I’m neither a 14 year old nor a musician, I don’t have a MySpace account.

Moments later, I realized that what I should have said was

Since I’m neither a 14 year old, nor a musician, nor a pedophile, I don’t have a MySpace account.

I’m very disappointed in myself. George Carlin would be disappointed as well.

Update: Now I’m stuck watching George Carlin on YouTube. Best curse ever: “Holy jumpin’ fuckin’ shitballs!” [@0:53]. Also my favourite Carlin rant: Airport Security (which happened well before September 2001, and rings true even in our stupid, stupid post-911 world).

« Previous Entries   Next Entries »