More DDP Fun

September 24th, 2009, 4:02 pm PDT by Greg

Partially (but not entirely) because of my my last adventure with the DDP (Chinese Dual Degree) students, I have started to feel a certain affection for the group.

Today there was a welcome reception for the ones that just got here this semester. They were a surprisingly talkative group (considering we were talking in English), and it was nice to have the chance to welcome them.

A common question from me: “What have you done in Vancouver so far?” Most are pretty new and haven’t done much. But one answer stood out:

DDP Girl: “We have gone to UBC, and we went to the beach.”
Me: “Oh, which beach?” (grabs for convenient map of Vancouver)
DDP Girl: “The one *giggle* at UBC.”
Me: “… oh!” [For those not in the know, Wreck Beach is the local clothing-optional beach.]

The implication was that they just saw a sign for “beach” and thought they’d have a look. That’d be quite a shock: five minutes off the plane from China, and being surprised by some fat naked white guy walking down the beach.

So, that was the funniest image I had had in my head for a while.

Then five minutes later:

Different DDP Girl: “Oh, I haven’t done much yet, but I want to go to UBC and the beach.”

You know that feeling when you’re trying not to laugh, but can’t even look like you’re trying not to laugh? I swear pulled a muscle in my face to keep from smiling.

Apparently Wreck Beach is the first stop for DDP students showing up in Vancouver.

I’m back, baby!

September 14th, 2009, 10:12 pm PDT by Greg

I woke up last Tuesday to the cold realization that my study leave was over: there was no choice but to admit that I was back at work. My first lectures were Wednesday: one hour of CMPT 165 and three of CMPT 470.

After the 165 lecture, Diana stuck her head into my office. She hadn’t been teaching in the summer semester, so she was also coming back to teaching. “Did you have your first lecture yet? Were you… excited?” Apparently she was so excited to get back to teaching that she was a little befuddled in her first lecture. This is why I love Diana.

I don’t know that I was particularly excited before my lectures, but now that I’ve done a full week, I’m feeling good about being back.

There’s something about being in front of a lecture room that feels right, especially with 165 and 470. Those courses are really the equivalent of comfort food for me and I think I’m going to have fun this semester.

So, I guess a year of study leave really does help one’s attitude. At least for the first week.

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.

What I’ve been doing lately

July 24th, 2009, 11:59 pm PDT by Kat

This has been what I’ve been staring for the past month – almost constantly for last two weeks. I’ll be glad when I can get back to the lab full-time.

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!

« Previous Entries   Next Entries »