I Have The Best Job In The World

January 4th, 2010, 3:55 pm UTC by Greg

… and it’s days like today that I have to say that out loud to remind myself. I am not mentally or physically prepared to be done my Christmas break or resume teaching.

I have posted some pics from Vegas. The trip was good: to give you an idea, we gambled a total of $100 between us because there was too much other stuff to do.

A warning: when going to Vegas, plan to spend $100–200 per person per day on miscellaneous stuff. By the time you have a nice dinner and go to a show, $100 is gone, and that only entertains you for the evening.

The highlight for me was probably the Gun Store (not-even-subtly-racist targets aside). When else am I going to shoot an assault rifle? I should have upgraded the package to shoot a handgun too.

Other than that, we had a good set of the standard holiday stuff (including our open house, which I haven’t done the time lapse video for yet). All of that went well, but all happened much too fast.

Exam craziness

December 11th, 2009, 9:32 am UTC by Greg

Yesterday, I had both of my CMPT 165 exams (on-campus and distance) back to back. The exams were different enough that students talking for the few minutes between exams wouldn’t get anything useful from it, but no more than that.

Six hours is too goddamn long to be in exams. I can think of no way to describe the day other than a list of happenings:

[tl;dr Go for 2b, 3ab, 4b.]

  1. Pre exam:
    1. The first exams start at 8:30. At 7:45, not one but two of my colleagues were still trying to photocopy their exams for big sections. Office photocopier was jamming every two seconds; grad photocopier was down.
    2. Critical mobile phone usage #1: realizing Amanda would already be in her office, I phoned her and got one colleague into the photocopier in the Dean’s Office.
    3. “Wait… did I tell that student she could start a half hour early? Where was she going to meet me?” Send TA running to the room with an exam paper, just in case. (No student.)
  2. On campus section:
    1. Before the exam, a girl flagged me down and told me she “had cancer before” and had been feeling lightheaded this morning. If she had to leave during the exam, that was why. I tried to get her to Health Services right away, but she insisted on staying. At the end of the exam, I convinced her to at least go and get her blood pressure taken or something.
    2. Two minutes into the exam, after sitting there for three or four minutes before it started, looking at the exam cover sheet (which says “CMPT 165″) and me, a student put up his hand and said “this isn’t CMPT 120″ and left.
    3. Freakin’ piles of questions, including “can you give me a hint” and “what time does the exam end”. Many more questions than the distance section.
  3. Distance ed section:
    1. About 10 minutes into an exam, one of the kids that had run in a few minutes late flagged a TA over and said “I feel like I might pass out.” I talked to him for a few seconds and he was not entirely conscious: able to answer yes or no questions, but that’s about it. He probably couldn’t have walked out of the room at that point.
    2. Critical mobile phone usage #2: phoned SFU security for a medical emergency. To the credit of security: they came quickly and handled it quietly and with a minimum amount to spectacle to distract everybody else. They took the student to Health Services.
    3. After all this, I start to realize that I have been getting lightheaded when standing up: I’m hungry and totally dehydrated from four hours running up and down hot lecture halls. A litre of water and snack later, I’m feeling much better.
    4. A guy came in 45 minutes late after “car problems”. A girl came in about 1:15 late after a car accident on the way from Abbotsford.
    5. With an hour left in the exam, passed-out student came back! He wanted to finish his exam and was pretty sure he could get it done. I took this as a sign of not yet being fully capable of making decisions and sent him to the distance ed office to schedule an alternate time.
    6. Critical mobile phone usage #3: phoned distance ed and told them the story so they’d deal with this kid appropriately. Apparently he wrote the exam later in the afternoon anyway (but at least he had the full three hours).
  4. After the exams:
    1. I’m barely standing at this point.
    2. I was talking to Anne, and told her the story of my day. Anne is preparing to teach a course like 165 in Uruguay (since she is currently on study leave). She was translating the course outline to Spanish and kept asking me things like “what wording do you like better?” I must have said three times: “Anne… you know I don’t speak Spanish, right?!”
    3. I might have eventually just wandered out of her office while she was still talking. I don’t really remember.

There was probably more. That’s all that’s coming to mind at the moment.

Spring plan: DDP projects

December 1st, 2009, 11:15 pm UTC by Greg

As I said before, I’m not teaching CMPT 383 in the spring (but I will be doing it in the summer). The alternate plan involves the “capstone” project that our dual-degree students have to do.

I’m going to be supervising a group of students on the technical side of their project. Since I’m me, the plan is to do a web project. I thought about this for about 8 seconds before I realized what I must do… there’s an obvious set of web projects that I understand, students understand, and need to me done.

We have some very old and clunky web tools around the School that work, but aren’t pretty and don’t have much hope of improving in the future. Students will know our gradebook and assignment submission tools, but there are a bunch more that aren’t student-facing.

My plan: replace as much as possible with modern, integrated, functional tools. The plan goes (or at least start) like this:

  • Global: Unified CAS authentication. A useful “dashboard” for everybody displaying recent activity relevant to them (upcoming due dates, recently posted grades, recent assignment submissions, etc). Instructors should be able to copy an old offering to a new one (copying grading info, due dates, etc).
  • Gradebook: the basics as currently implemented, with calculated columns, released/unreleased columns, AJAX-y sorting and display of class lists, email notification of new grades (?).
  • Submission: Per-assignment configuration (e.g. assignment 1 requires submission of a text file for part 1, and a .java file for part 2; both are submitted as distinct files).
  • Marking: Instructor sets up a marking key for TAs; TAs give grades and comments; info returned to students and grades automatically put into gradebook.

Additional functionality suggestions welcome. I have some cool “maybe” features to throw in if things go well.

I’m going to be treating whatever group I have as a development team, not a class. So, I’ll be whipping them much more to get good-quality code, not a class project.

There’s certainly a possibility of catastrophic failure, but I’d say a reasonable chance of success. We’ll see what happens.

No CMPT 383 for me

November 6th, 2009, 1:53 pm UTC by Greg

I know the schedule for the spring semester was announced with me teaching CMPT 383, but that is no more. I have been moved from 383 to something else that I’m sure I will have much to say about later.

Yarolsav Litus will (likely) be taking over the spring 383 offering.

I should be teaching CMPT 383 in the summer, though.

My latest project: web lint

October 15th, 2009, 11:30 pm UTC by Greg

I have alluded to this in a status update, but I think it’s time to look more widely for feedback…

A while ago, I started thinking about all of the annoying things my CMPT 165 students do in their HTML, and then started thinking about ways to get them to stop. I started working on an automated checker to give them as much personalized feedback as possible without me actually having to talk to them.

They already use an HTML validator which checks documents against the HTML/XHTML syntax, but it’s amazing what kind of things actually pass the validator. In the list: resizing images with width/height on <img />; saving their source as UTF-16 (no idea how they do it); putting spaces in their URLs; using class names like “red” instead of “important”; not specifying the natural language/character encoding of the document; etc.

As the list became longer, the thing became sort of a general HTML lint: the thing you go to after your code is valid to check for other common problems, annoyances, and omissions. The more I look at it, the more I think it’s a useful tool for CMPT 165 students as well as a good way to make others think a little more about the code they are producing.

I’m now at the point of wanting some feedback. There are still some missing strings and help text, but hopefully you get the idea. I don’t want to guarantee that this link will exist forever, but have a look at my web lint.

As with any “lint”, the goal here probably isn’t for authors to get zero warnings, but just to think about why they are ignoring the warnings that remain. (No, I don’t need you to tell me that some of my pages produce some warnings.)

At this point, I’m most interested in:

  • Links to input that causes an exception (500 Internal Server Error) or other truly broken behaviour.
  • Feedback on the warnings presented and their “level”. I have deliberately hidden levels 4 and 5 in the default display: I’m aware that the tool is pretty anal-retentive.
  • Are there things you can thing of (that could be automatically-checkable) that should get a warning but don’t? I have a few more on my list, but the core is in there.
  • I don’t think the URL validation (for <a>, <link>, <img>) is perfect: I still need to go back to the RFC and check the details. Any cases you notice that don’t pass but should would be appreciated.
  • Any spelling/grammar errors?
  • I’m trying not to duplicate functionality of the HTML validators: they already do their job well. But, notice the links to “other checkers” on the right. Didn’t know about all of them, did you? Any others I should include?

My intention is to GPL the code and CC license the text, but let’s take one step at a time.

More DDP Fun

September 24th, 2009, 4:02 pm UTC 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 UTC 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 UTC 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 UTC 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 UTC 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?

« Previous Entries   Next Entries »