Academic Enhancement Program

February 15th, 2008, 12:37 pm PST by Greg

For the last few semesters, we have been piloting a learning skills program in our first and second year classes. The program is called the “Academic Enhancement Program” (AEP), simply because we felt it had to be called something.

The deal is: each class that is touched by AEP (CMPT 120/126, 150, 225, MACM 101) dedicates one week of labs (or equivalent) and a couple of percent to a learning skills session.

On Wednesday, I went down to Surrey to facilitate sessions for CMPT 120 there. Diana Cukierman usually does the sessions (with somebody from Learning Commons), but she couldn’t go. I’m maybe the only other one who know the CMPT 120 session well enough to lead it. Thus, I had to miss CMPT 376, as I said earlier.

To give you an idea, the session for CMPT 120/126 is a bit of a sampler platter (since it’s the first one students typically see) and contains:

  • time management: where does the time go, basic time management skills
  • study skill scenarios: “Beth is a CS student who can’t… What is your advice to Beth?”
  • learning hierarchy: levels of learning (recall, understand, apply, analyse, evaluate, create)

A lot of first year students get caught on these things. Time management is, of course, an issue for everybody. There’s no magic bullet, but we can give some tips.

The learning hierarchy stuff is more interesting (to me at least). A lot of struggling students get stuck on the first few levels of learning: “I understand what a for loop does.” But then, we ask questions at the higher levels: “Create a program that…”. The gap between the levels is really hard to bridge for a lot of students. The hope is that some students will realize that they’re living at the wrong level and start to step up.

There are different sessions for the other courses. The idea is that all students get four(ish) different learning skills lessons by second year.

I will admit that I was sceptical when Diana started doing these sessions. The turning point for me was realizing that the point isn’t to give an hour and a half of material that’s relevant for all students. If we can ramble on for an hour and a half and have most of the students take away one thing that’s relevant to them, then the whole thing is a huge success. There are a lot of students who are a few study skills away from an extra grade point.

I’m hoping we can turn some marginal students into reasonable students, and some reasonable students into good students. The top students are going to be good no matter what, and the bad students are going to suck no matter what: the ones in the middle might be able to benefit.

So there you go. I did, in fact, miss 376 for a socially responsible reason. Hopefully we can put the whole program into policy in the next few months.

What’s 376 for?

February 11th, 2008, 7:49 pm PST by Greg

Since my recent blogging spree is for CMPT 376 (Technical Writing, etc, etc), I have been thinking about the course. It seems to me that a lot of people probably don’t actually know why we suddenly have a writing course in CMPT.

A couple of years ago, the University introduced requirements for all SFU students (that started after a certain time). Now, if you want to get a degree from SFU, you have to have taken:

  • Two writing (W) courses. One of these has to be in the upper division (300 or 400) and probably in your own discipline.
  • Two quantitative (Q) courses. These are math-like courses, but don’t have to be MATH.
  • Eight breadth (B) courses: 2 humanities, 2 social science, 2 science, 2 others. These are courses outside of your discipline.

That sounds like a lot, but you can double-count all you like. So, a philosophy course could count as both W and B-Hum. These courses can also count towards degree requirements: a CMPT student that takes MATH 151 fulfills a degree requirement, and gets Q credit.

Anyway, back to CMPT 376. Since CMPT are good members of the University community, we introduced this as a “discipline specific” writing course. That will let our students fulfill the University’s upper-division writing requirement in a way that’s (presumably) relevant to them.

There was talk of making CMPT 320 (social issues) a W course. That course has a lot of problems of its own. We ended up deciding to go for a dedicated, functional writing course, rather than a disfunctional course that did two things badly. Plus, a lot of our students could use a full three credits dedicated to improving their writing.

Because Ted’s a good person, he agreed to design and (initially) teach the brand-shiny-new writing course. So far it has been quite interesting. Ted is a very different kind of instructor than I am. Usually when I say that about somebody, it’s not meant to be complementary, but in Ted’s case, though, I’m really enjoying the course.

I keep oscillating on whether or not I would want to teach the course. Some days, I’m excited to give it a try. Some days, the very idea terrifies me: what the hell makes me think I know anything about writing?

Five things I hate about Python

January 29th, 2008, 10:15 pm PST by Greg

A while ago, I stumbled on somebody else’s blog entry Five things I hate about Python. The game (apparently) is to pick your favourite programming language and pick five things you don’t like about it.

This seems most common among the Python crowd: Python 2, Python 3, Python 4. It’s probably because everybody loves Python. But, I did manage to find a few others: C,
Vista, Linux.

So, here are my five things:

  1. No parallelism. The Python interpreter has a global lock that makes it impossible to parallelize execution. My processor has two cores, multiple pipelines, and a vector unit. Wouldn’t it be spiffy to use those? I have used the Parallel Python module to get around this (by spawning multiple interpreters), but it’s a hassle, and only applicable in certain cases.

    To be fair, this is a common problem in imperative languages, which force the programmer to precisely specify how thing are calculated. It’s much easier for a compiler to parallelize things in functional language, which have the programmer specify only what is calculated. Maybe Haskell is the answer to all of our problems? Hey… why are all the 383 students looking at me like that?

  2. Late Binding. This is the mechanism that allows the beauty of duck typing, so it’s probably a net win. It comes up in situations like this:

    def add(a,b): return a+b

    Until the function is called, there’s no way for Python to know whether the + there is addition, string concatenation, or something else. So, when each statement executes, Python has to decide what operators (or whatever) to use at that moment. The net result is slowing the language down a lot.

    Apparently PyPy has some improvement here, and Pyrex allows extension modules with early binding.

  3. Type confusion. I don’t know if it’s the duck typing or weak typing, but beginning programmers (aka CMPT 120 students) often have problems getting the type that a particular value has. I very often see students converting a type to itself. For example:

    name = str(raw_input("Name: "))
    count = int(0)

    That indicates some serious confusion about what’s going on. Or maybe I’m a bad teacher. I’d accept that as an explanation.

  4. GUI libraries. The standard Python install comes with only a Tk binding for GUI development.

    I really wish wxPython came with the default install. Then, we could all use it and assume it would be there. It would make Python a pretty serious contender for cross-platform GUI development.

  5. Standard library. One of the principles of Python is that “the batteries are included”. In other words, the libraries you need are there by default.

    That’s usually true, but there are a few things I wish were always there. The Python modules that I seem to have to install the most often are: Biggles, Imaging, Numarray/Numeric, Parallel Python, PyGame.

    As an aside, maybe if the Imaging and PyGame modules were accepted into the standard library, there would be some pressure to get some good documentation going for them.

On Teaching

January 25th, 2008, 12:33 pm PST by Greg

Well, it’s Link Friday again. I thought I had a lot of links to share, but I don’t have nearly as many links backed up as straight-up blog topics. Maybe Link Friday won’t be every Friday.

Anyway, for this week I have some links related to teaching. I teach stuff to people all the time, and suppose I must know something about it. Believe it or not, there are people that have made observations that even I haven’t had.

First are a couple of things my students should read. Everybody below about 85% in CMPT 120 should read How NOT to go about a programming assignment (Google cache link). Part of teaching a first year programming course is seeing each and every one of these things. Repeatedly.

This prof’s Top Ten No Sympathy Lines are really interesting. In particular, his answer to “There Was Too Much Memorization” was really insightful.

For the last several years, I have been trying to minimize the textbooks required for my classes: the pricing is criminal and they usually aren’t all that good. My rule has been to only require texts if they are really good and if I’m going use them very heavily. Otherwise, they are only recommended. So, this guy is my hero: UVSC prof. quits books.

I’m not sure that Taylor Mali on what teachers make particularly applies to me, but it makes me think that the high school teachers I know are a lot cooler.

Finally, the… um… darker side of teaching. Apparently, according to a peer-reviewed article, Teaching may be hazardous to your marriage. And the complementary article: If College-Themed Porn Were Real.

The Task at Hand

January 15th, 2008, 12:15 am PST by Greg

I have decided to sit in on Ted‘s writing course, CMPT 376. This is the first time the course has been offered. I would like to be the kind of person that can teach a course like this, and this seems like a good way.

Notice the careful wording in the last sentence. It didn’t say “I’d like to teach this course in the future.” That’s a stronger statement that I’m just not willing to make yet.

After one lecture, I have learned one important thing: CMPT 376 is like Burning Man. There are no spectators, only participants. My plan all along was to participate in lectures, so I’m not too worried there.

The work I had planned on ignoring was the writing exercise for each class. (Thrice-weekly? Lecturly? There needs to be a word for that.) But, after a lecture, I have decided to give it the old college-try. But, there’s not much point in printing out what I write and giving it to Ted. I don’t need the marks.

So, I’m going to try to post here three times a week, approximately on Monday, Wednesday, and Friday. My own version of NaBloPoMo.

Like everything else in 376, I make no promises about making it all the way to the end of the semester. Some of the posts may lack my usual wit and sparkle, in favour of volume, but you’ll deal.

Lawl

October 31st, 2007, 2:57 pm PDT by Greg

So, I’m sitting in my office, putting icing on cupcakes for our Halloween potluck. (It’s way easier to transport un-iced cupcakes.) It’s my office hours, but nobody ever comes anyway.

Which brings me to the reason for this post…

There is a list of things that a student expects when they arrive at an instructor’s office hours. The instructor turning around and saying (cheerily) “Cupcake?” while shoving one in their direction? Let’s say that’s probably pretty far down the list.

It was all I could do to keep it together until he finished his question and left. So somewhere, there’s a CMPT 120 student who is very confused, but has a cupcake.

Work… what else is there?

October 24th, 2007, 9:54 pm PDT by Greg

So, it’s been a while. I’m in the middle of a crazy-busy semester, as I mentioned before. Certain things have become luxuries: hobbies, a personal life, leisure time. Other than that, things are going well.

One of my big stress things happened last Friday. We (and by “we”, I mean “I”) hosted a day of professional development activities for IT teachers. This is like the third one of these we have done. My plan is always the same: get them in a room and talking about the good ideas they have had for their classes. Bounce ideas around with just enough structure to keep things moving.

This time, Richard came and we talked about robotics projects and ideas. Richard really knows his shit (which I guess shouldn’t be a surprise, since it is his research area), and I think the teachers came away with some ideas that never would have occurred to them otherwise. The feedback I’ve had has been really good.

Anybody else that wants to take my quiz is welcome to: consider the phrase “High School Robotics Competition”. Form a mental image of what that looks like. Tell me about it.

I just finished putting together my CMPT 120 midterm for Friday. I hate making up exams like a five year old hates eating asparagus. I whine, bitch, moan, procrastinate, and complain about how horrible my life is until it’s finally done. It’s done, so I’ll be much happier until the final exam comes around.

One of the other things I need to do for 120 is create the last assignments. I have always had the last assignment as an open-ended problem that the students don’t have a hope of “finishing”. The goal is for them to work on it, think about algorithms, and get some good stuff done. This lets the just-okay students accomplish something, and really pisses off the good students who work their asses off, learn a lot, but still don’t “finish”.

I was on the bus tonight and finally had the idea I’ve been waiting for. Their assignment is going to be programming the behaviour of a NPC (non-player character) in some kind of game. I haven’t worked out the game, but I’ll create a library to play the game, and their code will have to control the NPC(s) to be good opponents. The game will have to be fairly simple.

Any of the CS types want to help me work that out in exchange for lunch?

Almost… there…

December 11th, 2006, 11:58 pm PST by Greg

It has been a long semester. I’m teaching two courses and trying to figure out how to be undergrad chair. Really, it made Kat being away less of an issue: I wouldn’t have had much time to do anything anyway. I’m guessing I averaged around 60 hours per week this semester.

I just finished marking the 470 projects. They were bimodal, as the class has been all semester. Apparently, my 120 exams are marked and I’ll get them tomorrow morning. With some luck, all the final grades will be done tomorrow. Realistically, Wednesday morning.

The CS Xmas party is tomorrow afternoon. Hopefully it will go well: as the chair of the Social committee, I had a hand in it. It pretty much followed Greg’s event organizing pattern: phone a restaurant and tell them about 100 people are coming, ask grad students to organize entertainment, done.

Update 12/12: I just approved my first final grades (one of the duties of the undergrad chair). That was exciting.

Games night

October 21st, 2006, 10:12 am PDT by Greg

The CSSS had a games night last night. Not having much else to do, I went up to hang out for a while. Besides seconding one of the rooms in the lab so we could play Gran Tourismo on the projector, the games part was relatively uneventful.

But, there is an active group of first-year students. Here’s a quiz for everybody in the audience who has been in residence in first year (as many of them are): first year students + any excuse of a party = ???

That’s right! “Sloppy drunk.”

All of them disppeared and went back to res, drank too hard and too fast, and somehow managed to make it back to the ASB. Keep in mind that most of them are in my CMPT 120 class.

There’s something about watching your students yak into garbage cans that can really make your evening. Watching them draw on the passed-out one (and perhaps having some influence on the process) was just icing on the cake.

Just before I left, one of them came-to. He had purged most of the alcohol from his stomach and was in reasonably good shape. He looked at me, worried that I might hold something against him, and asked if I knew his name. I answered “no,” just to expedite the conversation. I thought about “no, [firstname],” but decided he was sober enough to catch that.

There are two interesting assumptions in this kid’s worry: (1) that I have some kind of individual control over his marks, and (2) that I would think a first-year student hurling the better part of a mickey of cheap booze is a horrible thing. Both assumptions are false and amuse me for different reasons.

Wow

September 11th, 2006, 2:50 pm PDT by Greg

People, such as myself, who have spent approximately 1000 hours talking in front of a room of people start to think they know the score. I figured I had dealt with enough weird questions that I couldn’t be suprized by anything short of this.

But today, 30 seconds into my 470 lecture:

Me: “HTML… web… computers… ”
Some girl: “Excuse me, isn’t this native studies 100?”
Me: “No.”
Girl: “Did it change rooms?”
Me: “Nope, we’ve been here all semester.”
Girl: “Today’s Thursday, right?”
Me: “Buh… Monday.”
Girl: “Oh, okay.” Leaves.

If she had said “Tuesday”, I could have moved on with my life, but Thursday? That’s three days off. The best explaination I have: She did a lot of drugs last Wednesday and just came-to this morning. She didn’t really seem like the heavy-drug-use sort, though.

PS: Yes, 1000 hours is my approximate lifetime total lecturing. If you didn’t click on the link to YouTube above, you should.

« Previous Entries   Next Entries »