Wednesday, March 16, 2011

SIGCSE 2011 wrap-up

Last week my wife and I were in Dallas for SIGCE 2011. It was fantastic having my wife there without the children-- I love my kids to death, but sometimes it's just good to get a little time away.

I first offered an Android workshop on Wednesday evening which went pretty well. I didn't get through all the material I had planned, but it's better to have too much planned than not enough. You can see my slides and handouts on the workshop web page. Thank you, Google, for providing each participant with an Android mini collectible.

There were 50 people in the workshop which made it difficult to help everyone who was having problems. Thankfully Steve Baber and Roger Webster were on hand and able to help me. One thing I learned in offering a workshop to such a large group is that you need to have more than just two helpers on hand, and ideally before the workshop begins, it's a good idea to be available to the small minority who were not able to install the necessary software. It certainly didn't help that the Android SDK Windows installer was buggy: it couldn't seem to find a user's installed JDK.

On Thursday, Matthias Felleisen gave an opening keynote address about TeachScheme and his research team's approach to transitioning students from math into computing. I can't say I totally bought into his approach, but I have a feeling that if I could actually watch them teach kids this stuff live, I'd have a better appreciation for it.

I attended a morning panel on Starting a Computational Science Program which convinced me that I would never participate in an initiative to start a computational science program, and then I came down with something and was out the rest of the afternoon.

I recovered enough on Friday to visit the huge exhibition room where every publisher on the planet had a setup a booth, and I visited with a Microsoft rep who introduced me to programming the Windows Phone 7 OS; it was certainly a lot easier than Android programming, and I'll likely do some of this in my GUI course in the fall. I also got to see Donald Knuth who made a brief appearance to sign some books. I was surprised that he was about as tall as I was.


I also really enjoyed the Teaching Tips panel where everyone shared very practical tips for teaching small and large classes alike. Some tips I've heard before but were good to hear again:
  1. When there's something critical for your students learn, do something dramatic like stand on a table.

  2. Make mistakes when writing code in front of your classes so you can show them the problem-solving process at arriving at better solutions.

  3. Call on students to answer questions rather than always just getting volunteers.

  4. Use the 5 minutes before class starts to share YouTube videos or other interesting tidbits, just to get to know your students better.
On Saturday morning I enjoyed the Nifty Assignments and got some good ideas for my CS1 course next fall. I also caught a talk comparing Android and iOS programming which was quite entertaining. Becky and I had to get on the road before the conference lunch.

Next year's SIGCSE is in Raleigh, North Carolina. This was my third SIGCSE in a row, and I hope to up my streak to four. It was good re-connecting with friends that I haven't seen in quite a while and making new acquaintances. It was also good seeing my brother and his wife and their new place.

Tuesday, March 08, 2011

Thinking Christianly about Computing

This morning I had the honor of participating in a panel discussion with my fellow colleagues Scott Ragsdale and Dana Steil during chapel. The topic was how we teach computer science from a Christian perspective. You can watch the discussion on iTunes U (if the link doesn't work, search iTunes for Thinking Christianly - Computer Science Faculty. March 8, 2011). The part you might find most interesting was on strong AI somewhere in the middle.

This was a difficult topic for the three of us to tackle, primarily because we think of computing primarily as a tool. Tools can be used for good purposes, and of course they can be used for evil. When you're teaching someone how to write an algorithm, there isn't necessary a "Christian" way of doing it. When you are testing software for vulnerabilities, a Christian is not likely to approach the problem any differently than a non-Christian. However, the broader picture of purpose is what I believe distinguishes how we teach CS at Harding from how it's taught somewhere else. To what end are we going to use these computing skills? Is it just to entertain ourselves or bring home a paycheck, or is there something much more important at stake?

There's a lot more I'd like to say on the topic, but it will have to wait... I'm heading to Dallas in the morning for SIGCSE 2011 where I'll be leading a workshop on Android application programming.