Archive for the ‘School’ Category

State of the art history

Tuesday, September 29th, 2009

I’ve seen a lot of mail fly by lately on the Python edu-sig mailing list about clean code snippets that are easy for students to digest. That made me wonder whether it’s appropriate to shelter students from the complexity of code in the wild throughout most of their university career.

Teaching people how to dissect a huge, largely undocumented code base into more manageable bits was (and still is) the most time-consuming task for me as a professional programmer. That certainly wasn’t taught at any school I’ve attended; I’d be curious if any universities do.

Here’s my take on how such a course could be structured; abstract and link to outline below. I’d be grateful for feedback.

Budding scientists study the well-established experimental techniques of their predecessors. English majors study the works of great writers like Shakespeare. Following this tradition of analyzing the approaches and designs of significant historical figures in the field, this course focuses on the art history of software.

The open source movement has made it possible for anyone to study large, industrial-strength software. Mature code bases have a rich history full of design decisions and trade offs. This course covers why modern software is built the way it is, as well as the design patterns that emerged, while drawing upon the code bases of many open source projects.

Here’s a preliminary outline of the topics I’d want covered. I’m still 5 lectures short by UofT standards—then again, I’m not sure if I’m alloting enough time for the material I’ve already listed.

The wonderful thing about Tiggers…

Saturday, February 7th, 2009

This comic reminded me of why most published research findings are false.

Strange correlation

Wednesday, February 4th, 2009

This popped up on my feed while I was doing some readings for my Empirical Research Methods course. I nearly fell off my chair :)

A little cluster goes a long way

Wednesday, December 3rd, 2008

In one of my recent assignments, I had to write a program that identified and corrected spelling errors in a set of 1200 sentences. It was about a hundred lines of Python that took 6 minutes to run.

The algorithm was parameterized such that the number of false positives and false negatives could be loosely controlled. Problem was, decreasing one meant increasing the other. The goal of the assignment was to minimize both.

To plot the false positive/negative trend, I needed a table of values. More data points, the better. However, each data point took 6 minutes to compute, and I didn’t know which range of values to focus on.

Four terminal windows and about half an hour later, I was able to generate 20 data points. It was 2 hours worth of data crunching compressed into a quarter of the time, thanks to the quad core rig sitting under my desk.

Paper shredding

Monday, September 15th, 2008

Had our first paper discussion session of the year over lunch today. I think I focused too much on the negatives this time. It’s hard to overlook poorly formulated arguments, especially when it’s backed by inconclusive data.

I should have tried harder to tune into the signal while filtering out the noise. Would’ve been more constructive to think about some of the new contributions (if any—see? Negative again) those studies brought to the field.

Those papers did shed some insight on the difficulties of conducting experiments in software engineering. Solid numbers about the practical aspect of software engineering is hard to find. The interesting bits are hard to measure (e.g. productivity, reliability, correctness, efficiency).

Even if we could come up with a way to do it, many factors would get in the way of collecting those metrics faithfully and reliably (e.g. how do we get test subjects to “collect” data for us without bogging them down with extra documentation work?).

Round two—fight!

Coffee trap

Thursday, September 11th, 2008

As I was wandering into the grad lounge to brew myself a cup of coffee (note to self: don’t put water in grinds basket or people will laugh at you again), I found myself caught in a grad student’s talk. It was a topic I had little background in, so I had a high chance of getting lost.

I decided to stay for a different reason.

A number of faculty attended this talk and grilled the poor student. These same people will eventually grill me when I have to give a talk or defend my thesis. It was extremely constructive to see it live.

It also helps that the object of grilling wasn’t me in this case :)

There is such thing as a free lunch

Wednesday, September 10th, 2008

Went to my first class today as a graduate student. Lots of smart people, small close-knit groups, and best of all, virtually no exams and tests! All schools should be like this.

Highlights:

  • Stood in five different lines to get five different kinds of yummy free food
  • Spilled two kinds of liquids on myself (both of which can be used as cleaning solvents)
  • Watched a real table shear in slow motion (and see all its contents fall on the floor)
  • Helped design the next killer portable technology over a stand-up lunch (yes, killer portable, not portable killer)
  • Helped come up with an awesome new movie idea—so awesome that you should buy the rights
  • Took a two hour cookie break

Trying a Tri

Friday, September 5th, 2008

I met four people over the past week who’ve been thinking about attempting a triathlon (or a sprint, or a try-and-tri). I’m sharing an office with three of them; our desks, all lined up in a row. Sometimes, I wonder if our supervisor did that on purpose.

The first (indoor) tri is coming up in February. Looks like it’s going to be a good year :)