ITiCSE'06 Readings

As I’ve said before, one of the nice perks of working for a university is free access to journals and conference proceedings. (And as I’ve also said before, I think the fact that these aren’t free to everyone is one of the main causes of the gulf between academia and real-world practitioners.) Here’s a few highlights from the Eleventh Annual Conference on Innovation and Technology in Computer Science Education, held in Bologna earlier this year:

  • Radenski: "Python First: A Lab-Based Digital Introduction to Computer Science", and Holt, Rauchas, and Sanders: "Introducing Python into the First Year Curriculum at Wits". An idea whose time may finally have come---we're putting together a first-year course in Python for science students, and we're finding a growing number of people doing similar things elsewhere. The University of Witwatersrand group is still ramping up, but Radenski (Chapman University, in Orange, California) has built an entire Moodle education pack for his.
  • Boetje: "Foundational Actions: Teaching Software Engineering When Time Is Tight". It's always tight, and Boetje's two-semester sequence focusing on the day-to-day practices common to all successful software projects (no matter what philosophy they espouse) is timely as we finalize a proposal to reorganize our own SE courses.
  • Petkovic, Thompson, and Todtenhoefer: "Teaching Practical Software Engineering and Global Software Engineering: Evaluation and Comparison". Ties in nicely with Boetje's paper; the authors run a SE course in which student teams in California and Germany are each other's customers. Now that DrProject is solid, I'd like to try this myself with teams at different Canadian universities.
  • Paterson, Haddow, and Nairn: "A Design Patterns Extension for the BlueJ IDE". BlueJ, an entry-level Java IDE, is DrJava's main competitor. Paterson et al's tool is a wizard driven by XML configuration files that lets users pick a design pattern, and then name the classes and their attributes. I don't know that I'd ever use it, but I'd be interested in trying it out as a teaching tool.
  • Pullen: "Scaling Up a Distance Education Program in Computer Science". Pullen teaches at George Mason University; this paper reports his experiences building a web-based system to support graduate-level distance learning. Lots of interesting ideas, many of which might apply if we go ahead with a professional master's degree in our department.
  • Almstrum and Last: "Men Are From Toys; Women Are From Tools". A short summary of a presentation on gender-correlated differences in attitudes toward computing. I'm going to have to dig up the full paper.
  • Ellis: "Self-Grading: An Approach to Supporting Self-Directed Learning". Let students decide at the start of term what the grading and due dates will be in their project courses? Interesting; I'm going to want to try this one in CSC49X as well.
  • Hanks: "Student Attitudes Toward Pair Programming", and Mendes, Al-Fakhri, and Luxton-Reilly: "A Replicated Experiment of Pair-Programming in a 2nd-Year Software Development and Design Computer Science Course". I've long been sceptical of pair programming, but there are now several studies showing that students enjoy it, and that it helps them learn. Interestingly, the authors of the second study are willing to make their raw data available to other researchers.
  • Thomas, Waugh, and Smith: "Using Patterns in the Automatic Marking of ER-Diagrams". I'm still sceptical, even after reading the paper. Their idea is to use pattern recognition techniques to check entity-relationship diagrams in order to auto-mark where no auto-marker has gone before. I'd want to see it in action, and (more importantly) see how students feel about it...
  • Chen, Wei, Huang, and Lee: "Design and Applications of an Algorithm Benchmark System in a Computational Problem Solving Environment". Pet gripe #178 is that CS students don't learn anything about performance analysis or tuning. This paper describes a system that lets students see how well their code is performing, and compare it with others. Ought to be straightforward to plug into DrProject, once we get our continuous integration and dashboard systems up and running...
  • Stevenson: "PNG Palette Permuter". Most students don't realize how hard it is to come up with projects that are challenging, but not too challenging. Stevenson describes one that seems to fit the bill: a steganographic tool to embed messages in PNG images by tweaking the color values of pixels.
  • Gerdt and Sajaniemi: "A Web-Based Service for the Automatic Detection of Roles of Variables". The dataflow analysis used to categorize variables as "fixed value", "stepper", "most-recent holder", and so on is interesting; the categories themselves are what really attracted my attention. Do people teach these patterns explicitly?
  • Lauer: "Learner Ineraction wit Algorithm Visualizations: Viewing vs. Changing vs. Constructing". The author set out to test the hypothesis that as students move from viewing algorithm visualizations, to controlling their parameters, to actually building them, they'll learn more from them. The experiment he ran showed no such correlation, which I'm sure was disappointing, but is still useful information.
  • Robila and Ragucci: "Don't be a Phish: Steps in User Education". Teaching students how to recognize phishing attacks, and not be taken in? Makes as much sense as defensive driving, and these days, is probably as important.
  • Hislop, Hilburn, Lutz, and Sebern: "Sharing Software Engineering Curriculum Materials". An update on SWENET, the Network Community for Software Engineering Education. Their site was down when I wrote this blog entry, as it has been several times in the past; I really need to be patient, and trawl through what they've collected.