Fall Courses

July 24, 2008 – 8:01 am

I am teaching two courses this fall, and would like you to help me decide what my students should work on.  The first course, “CSC301: Introduction to Software Engineering”, is aimed at third-year students (juniors in American parlance), and covers agile software development processes, design patterns, and other introductory material.  Students work in four-person teams on a course-long project broken into four or five assignments; peer evaluation is part of their grade, and there’s a written exam at the end. This past winter, the project was a to-do list plugin for Facebook; thanks to some technical support from Refresh Partners, all of the teams managed to build something usable.

The second course is “CSC491: Computer Science Capstone”, which has taken the place of the CSC494/495 directed studies projects I used to run (although I still sometimes take students into CSC494/495 if they can’t fit CSC491 into their timetable).  In the past, I’ve matched students up with clients—faculty in other departments, local non-profits, startups, open source organizations—who want something built.  Over the course of the term, the students go through the entire development cycle: requirements gathering, design, construction,  testing, deployment, and post-mortem evaluation.  The range of projects last winter was pretty broad, but all the clients seemed happy with what they got.

So, what should I do with these courses this fall?  Here’s just a few of my options:

  1. Get the Capstone students to move (most of) DrProject to Django. The aim would be to create the “Trac 2.0″ that DrProject was meant to be; I think it’s ambitious, but doable, and would be a great introduction to open source/agile development. The downside is that students wouldn’t be working directly with real clients, which they have enjoyed and valued in the past.
  2. Have the Capstone students do external consulting projects as before. Upside: making real people’s lives better, and strengthening ties between this department and the community. Downside: they don’t get the experience of working in a larger group on a larger code base, and it’s a lot more work for me :-).
  3. Have the CSC301 students build another Facebook app. Upside: Facebook is still hot (well, lukewarm), and I know how to avoid some of last term’s potholes.  Downside: a lot of third-year students haven’t done web programming before, so it’s a far-from-level playing field.
  4. Have the CSC301 students build a desktop GUI application using Swing, wxPython, or something like that. Upside: level playing field. Downside: finding something that’s worth build.

There are lots of other possibilities; if you’d like to add one to the pile, or cast a vote for one of the ones above, I’m easy to reach.

Customer (Non)Support with Yahoo!

July 23, 2008 – 8:02 pm
  1. Logged into Flickr to upload some pictures.
  2. The site tells me my premium account is going to expire in 6 days, and asks me if I want to buy another year.
  3. Go through the usual “confirm your card details” dance.
  4. After clicking the final submit, am told “Sorry, there is a temporary problem. Please try again later. If the problem persists, please contact Yahoo! Customer Care. (15)” (Their red, not mine.)
  5. Repeat steps 3 and 4 a few times.
  6. Call Yahoo!  customer support to find out when Flickr’s going to be up (and whether I’ve bought a dozen one-year accounts—I’ve had that happen before).
  7. Give the customer care associate (no, really, that’s what they’re called) my Yahoo! user ID, tell her what the problem is. Explain what Flickr is. Explain that Yahoo! runs it. Am asked for the last four digits of my credit card. Am then asked for the whole number. And my zip code. Explain that I’m in Canada. Provide my postal code. Am asked if I have any other postal codes. Am asked for my entire credit card number. Tell the customer care associate [tm] that I’m unwilling to hand that over just to find out when the site will be up (at this point, I’ve given up on finding out anything more). Am told that I can’t be given that information until I hand over my credit card number. Go around that loop a couple of times before asking to be put through to a supervisor. Am told that I can’t be put through to a supervisor until I hand over my credit card number. Go around that loop a couple of times, and then the customer care associate [tm] hangs up on me.

If anyone from Yahoo! find this:

  1. I made the call at about 8:55 pm on Wednesday, July 23, 2008, from a Toronto (area code 416) number.
  2. I now understand why the third link in a Google search for “yahoo! customer care” finds a complaint about your customer service.
  3. I now also understand why “Google” has become a verb, and “Yahoo!” has become an also-ran.

*sigh*

Badge of Reproducibility

July 23, 2008 – 7:02 pm

Coming back to the badge meme from earlier this week, John Cook’s new Reproducible Research blog pointed me at this page on the EPFL site advertising a paper called “What, Why and How of Reproducible Research in Signal Processing”. Notice the “Reproducible Research” badge? The “add your evaluation” link takes you to a formlet that lets you choose between:

  1. I have tested this code and it works
  2. I have tested this code and it does not work (on my computer)
  3. I have tested this code and was able to reproduce the results from the paper
  4. I have tested this code and was unable to reproduce the results from the paper

It’s a good start…

What My Students Have Learned This Summer

July 23, 2008 – 5:08 pm

This post from John Cook, summarizing this post from Thomas Guest, is a pretty good description of what our students have spent the summer finding out…

“The Computer Was Threatening to Explode”

July 23, 2008 – 2:24 pm

But the result was worthwhile: you can now view a super-tree showing the evolution of the dinosaurs, or read about its creation.  I think it’s beautiful:

Dinosaur Family Super-Tree

Quick Quiz to Measure What Scientists Know

July 23, 2008 – 7:41 am

Suppose you have a room full of scientists—hundreds of ‘em—and want to find out how they actually use computers in their work. There isn’t time to interview them individually, or to record their desktops during a typical working week, so you’ve decided to ask them to self-asses their understanding of some key terms on a scale of:

  1. No idea what it is.
  2. Use it/have used it infrequently.
  3. Use it regularly.
  4. Couldn’t get through the day without it.

My list is below; what have I forgotten, and (more importantly) how would you criticize this assessment method?

  1. A command-line shell
  2. Shell scripts
  3. Version control system (e.g., CVS, Subversion)
  4. Bug tracker
  5. Build system (e.g., Make, Ant)
  6. Debugger (e.g., GDB)
  7. Integrated Development Environment (e.g., Eclipse, Visual Studio)
  8. Numerical Computing Environment (e.g., MATLAB, Mathematica)
  9. Inverse analyzer (e.g., Inane)
  10. Spreadsheet (e.g., Excel)
  11. Relational database (e.g., SQLite, MySQL, Oracle)
  12. Layout-based document formatting (e.g., LaTeX, HTML)
  13. WYSIWYG document formatting (e.g., Word, PowerPoint, OpenOffice)

Now, you have the same room full of scientists, and you want to find out how much they know about software development. There still isn’t time to interview them or have them solve some programming problems, so again you’re falling back on self-assessment. This time, the scale is:

  1. No idea what it means.
  2. Have heard the term but couldn’t explain it.
  3. Could explain it correctly to a junior colleague.
  4. Expert-level understanding.

and the terms themselves are:

  • Nested loop
  • Switch statement
  • Stable sort
  • Depth-first traversal
  • Polymorphism
  • Singleton
  • Regular expression
  • Inner join
  • Version control
  • Branch and merge
  • Unit test
  • Variant digression
  • Build and smoke test
  • Code coverage
  • Breakpoint
  • Defensive programming
  • Test-driven development
  • Release manifest
  • Agile development
  • UML
  • Traceability matrix
  • User story

Once again, my questions are (a) what have I forgotten, and (b) how “fair” is this as an assessment method?

Reviving the Software Carpentry Mailing List

July 22, 2008 – 6:35 pm

Luke Petrolekas and I are thiiiiis close to having the Software Carpentry notes converted to a wiki. Once they are, I’m going to be working with Tina Yee to update them, do the examples in MATLAB as well as Python, and fix some longstanding bugs.  I’m also going to resurrect the project’s two mailing lists (one for occasional announcements, the other for people interested in developing new material and/or teaching the course).  If you’d like to be on either or both, please let me know.

Belated Barbecue Photos

July 22, 2008 – 6:32 pm

We had our mid-summer student barbecue a couple of Fridays ago, and a good time was had by all. The photos are courtesy of Qiyu Zhu:

In Transit

In transit

This Must Be The Place

This must be the place.

Whozat?

Whozat?

…and then the pickle says to the cow…

Or we could use recursion!

Mmm…

Mmm…

Dancing, Dancing!

Dancing, dancing!

Summer 2008 Logo

July 22, 2008 – 2:43 pm

Our summer students have chosen a logo for their t-shirts.  Yes, that is a hippo wearing a toque (knit cap, if you’re American), a scarf, and an inflatable swim toy. You wouldn’t believe how much discussion it took to get this far…

Hippo logo

Link Soup

July 22, 2008 – 1:16 pm

Oh dear — I have fallen behind again.