Monday, April 9, 2012

What Double Fine Adventure Means to Me

The very first feature-length games I played were point and click adventures.  I have particularly fond memories of King's Quest and Day of the Tentacle.  But those memories were just about lost to me as that genre of games became less popular over the years.  Enter Double Fine and their recent Kickstarter campaign.

(Image from Kickstarter campaign)

When I first heard about the campaign and realized that Tim Schafer was the mastermind behind both this campaign and my beloved Day of the Tentacle, I immediately pulled out my wallet.  I can't remember how far into the campaign that was; there's a good chance they had already pulled in quite a bit of money by then.  But as I got email updates about the progress, I started to realize that I just helped make a bit of history by contributing to the most funded Kickstarter project yet.  And I helped show publishers that just maybe, at least some of the time, they aren't as needed anymore to make money making great games.

So what does the Double Fine Adventure project mean to me? It means a return of a game genre that was welcoming and accessible to a wider audience that included me (and my mom, for that matter!).  It means feeling joy while waiting for a new game that I know I will play, rather than just watch.  It also means a chance to watch the development of that game through the documentary series that will detail the progress.

Speaking of which, I just watched the first episode of the series. Maybe it's the baby brain talking, but I had a little tear in my eye.  I couldn't help but feel so proud and humbled by Tim and all he has accomplished so far.  Can't wait to see more, Tim! Keep up the good work!

Friday, April 6, 2012

Quick Tips for Teaching Mini-Courses

I've been running my 'Computer Science and Games: Just for Girls!' course for Carleton's annual Enrichment Mini-Course Program for five years now.  And so at this year's instructor's luncheon, I was asked to share some advice for running a successful course.  Below are some of my key points.

#1: Don't be Afraid to Challenge the Students

These students, who are mostly in grade eight and occasionally high school, are much brighter than we tend to expect.  I have been teaching them computer science topics since the very beginning and am always impressed with how well they understand the concepts (proven by the puzzles or discussions we have after a lesson).  Computer graphics and artificial intelligence aren't exactly easy.

#2: It May Be Better to Stick to High-level Concepts

I don't try to introduce really specific algorithms and I never do any math.  Depending on the audience, I think you could certainly do some math, but so far my course has worked really well by sticking to high-level concepts.  It's only a week, so I figure it's better to deeply understand a few things than to barely understand many.

#3: Lecture As Little As Possible

My entire teaching philosophy is based on this.  It's even more important for this age group.  I am always looking for interesting ways to avoid talking to the students.  There are always things I need to tell them, but if I incorporate doing that with discussions, videos, activities, and so on, then it doesn't even seem like I'm lecturing.  Someone at the luncheon said a good rule of thumb was to lecture only for an hour.  I agree, but add that it shouldn't be all in one chunk.

#4: Look Online for Proven Activities

Thanks to the Internet, we can find proven lessons for almost every discipline out there.  I love using CS Unplugged activities for my course because I know they work.  See if you can find something similar for your course.

#5: Try New Things

This year, I'm running an experiment in my mini-course with the help of some colleagues.  We're going to test how much of a difference story makes in teaching computer science topics.  Why not try out some new teaching techniques in your own course? If you approach it with confidence, the students will likely be forgiving if it doesn't go as planned.  And who knows, maybe you'll get a research paper out of it in the end. ;)

Tuesday, April 3, 2012

Lecturing for a First Year Programming Class

I gave a guest lecture at Carleton last week. It was for the first programming class that both computer science and non-major students take, taught using Processing.  I seized the opportunity to use some of my somewhat less conventional techniques and "lecture" as little as I could.


I was lucky to be basing my lecture off of a very solid set of notes.  The professor who put these together taught me my very first programming class back in 2002.  (I still have a printed and bound copy of his notes from that class.)  In my guest lecture, I covered the first part of Chapter 8: Shared Data.

This is how I prepared for the class:
  • First I glanced over the notes and then started to type up the source code described within.
  • While I wrote out the code, I thought about what might be the best order to present it during class, and in what chunks.  (My order did differ from the order in the notes, which makes sense - written and oral communication are not the same thing.)  I saved individual files as I went along so that each file showed a bit more progress.
  • I went through the notes again and kept a detailed outline of what I wanted to explain and what I wanted to get the class to do.
  • I used my outline to create some simple slides (mostly images to help explain concepts) and some printouts I wanted to make for a couple of demonstrations.
  • Finally, I made a much briefer version of the outline that I could refer to during the actual class so I didn't get lost (especially useful given how sparse my slides are).
This is actually the first time I used this exact method to prepare, but I think it really helped me get familiar with the content and figure out the best way to present it. I will definitely do it again.

Here are some of the interesting techniques I used that made my lecture a lot more like a tutorial:
  • I explained a concept to students and then asked them to implement it in the code (I had them download a file with an initial bit of code to start with, and offered the individual progressive files in case they could not finish the task).
  • I had students read code and explain to me what was going on.
  • I had students hold signs and point to each other to emphasize how variables can refer to the same data and the implications of doing so.  I gave new signs or had them destroy the current ones to illustrate changing the data.
  • I asked the class many questions and sometimes lead them to ask a question they would be able to answer by playing with code rather than hearing it from me.
I was very happy with how the class turned out.  It was risky doing it this way given that I had not been their instructor since the beginning of the term.  This was also a smaller class with about 30 people present, so I'm not sure how well these things will work with a larger group (I believe it could work, but I have not yet had the opportunity to try).

What kinds of techniques do you use in first year programming lectures?

Saturday, March 24, 2012

Where Have I Been Lately, Anyway?

While I managed to get back on the blogging bandwagon in February, I've had a pretty big gap here in March.  So where the heck have I been?


I'd love to blame my absences on the baby, but it's not entirely her fault.  She's been quite good so far.  The last few days she's been more fussy, but I think it's because of the 3-month growth spurt, so hopefully that will be done and out of the way soon.  I've been able to balance getting some work-like stuff done while she plays happily beside me or snoozes.  I have even mastered the art of browsing and sometimes even typing on the laptop while she nurses.  Yay!

The bigger reason I've been busy lately (and probably will be for a little while yet) is that I'm interviewing for a job.  I'll tell you all more about it once the interviews are over and a candidate is chosen.  I've spent a good chunk of time preparing for this.

If I am successful, my plan is to finish the PhD part time.  This may sound insane, but I'm hoping that because the job lines up rather well with my research interests, I'll be able to have a lot of overlap in terms of time and effort spent.  To show it's possible, I point to Steph, who has a young kid, works full time at a job that overlaps in a sense, and manages to do a pretty kick-butt job at her Masters research.

Other than that, I've been working on our book for CS beginners, projects related to Gram's House, and thinking about the PhD project I want to focus on.  I'm looking forward to a fun summer with camping, gardening, and time spent with Molly!

What cool things have you been up to?

Friday, March 23, 2012

Bear 71: The National Film Board of Canada's Interactive Narrative

How do you get people to care about the diminishing natural habitat of wildlife in Banff National Park and surrounding area? Telling an emotional story from the point of view of a resident bear helps, but The National Film Board of Canada takes it one step further.  They produced Bear 71 as an interactive documentary formally lasting 20 minutes but with the ability to explore as long as you wish.


I found this interactive narrative through author and game designer Lorraine Hopping Egan.  This is what she had to say about it:
The National Film Board of Canada keeps pushing those storytelling boundaries.

I just took an interesting and emotional stroll through Bear 71, an interactive digital story told from the point of view of a real bear who was tracked through Canadian forests for eight years. The clever part is that you, a human with a number, become one of many tracked species as you navigate across a digital landscape, encountering other animals, while the bear tells its story. Animals are shown in short, grainy videos—taken by covert, motion-triggered cameras.

In terms of technology, the approach is again simple (I've noted before that I think we need creative breakthroughs right now more than technological ones).  The main story line was narrated by a bear named Bear 71 for its tracking number.  You can start and stop the main narrative with controls at the bottom of the screen.  At the same time, you can explore a map of Banff National Park, as seen in the image above (behind the images of the bears).  When you click on the markers of various animals recorded in the park, you see short videos captured of them with motion cameras and the like.  The trail of Bear 71 as it fits with the main narration is also visible as big black dots.

Personally, I really liked the main story being told.  The ending succeeded in making me feel sad and had me reflecting on the effect of humans on wildlife habitats (especially when they said something about humans being able to create smart phone apps but not being able to remember to close the lid on a bear-proof garbage can).  When full-screen videos popped up during the story, they were interesting and timely.

At the same time, I am not sure how much the interactive part of the documentary actually added.  Don't get me wrong - it was well done, and had a certain cool factor, but more than once I was actually distracted by it.  I was paying too much attention to clicking the animals around me and chasing after Bear 71 to fully listen to the main narration.  I was also distracted by the fact that the video shown for Bear 71 was always the same even as her marker moved through the park.  I honestly think I missed a lot because of these things.

I also didn't clue into the idea of being not just a tracker, but also a trackee.  Lorraine described it like this:
As I recall, you are an avatar "human 17142" or something and can encounter other humans who are in the game (MMO-style) and they can follow you and you can follow them and click on their tag for more info.

I mostly went out of my way to avoid them so that I could concentrate on the story and my own exploration, but I also wondered if my actions were being recorded, perhaps anonymously or tied to my IP, which would make me a "tracked animal" in a sense.
This is really fascinating.  I had my webcam on, but I did not see any other humans on the map when I played.  I think if I had noticed this notion of being tracked, the interactive side would have had more impact for me as clever procedural rhetoric.

Overall, I like the direction the NFB has taken with this project and hope that they can keep pushing the creative boundaries of interactive storytelling using tools we already have available.