I’ve spent the last week on vacation. A vacation from the Internet as much as from work. As I write this it is 6 days since I have checked email, opened a web browser, Twittered a message to Twitter or had any other sort of Internet activity*. It’s been a bit of a relief. Oh sure I am somewhat dreading the flow of email waiting for me but I think it is worth it this time. that doesn’t mean I haven’t been thinking about things though. While not as much as I planned to do I have been thinking a bit about computer science education. Most of this thinking was brought on by a conversation that was going on in the SIGCSE mailing list before I went on vacation. The discussion was about programs leading to a PhD in Computer Science Education.
This conversation was going in two threads. One was the value of a program like this to prepare PhDs to teach computer science which most people think is unnecessary. The other was the value of a PhD program to research computer science education. People didn’t seem strongly supportive of that idea as being necessary. Not that they were writing it off but few seem to see a problem with the way we teach computer science. I would disagree there. I think we’re doing it mostly wrong.
I’m not saying I have the answer – I don’t. What I do think though is that we need some really smart people to do research on how to teach computer science better. I think these people need to understand computer science at a deep level and also understand teaching. Frankly most university professors in most fields are not all that interested in teaching. Being a great teacher is not as likely to get one tenure as good research. And research in how to teach, from what I keep hearing, is not particularly valued by computer science departments. I see this as a huge problem.
We do have a lot of people creating interesting tools for teaching computer science. Projects like Alice, Scratch, Kodu, Small Basic, BlueJ, Greenfoot, Teach Scheme and more are out there. There isn’t a lot of research going on about their efficacy though. I’m not saying there is none. The people are Carnegie Mellon have done some good work with Alice and are doing more. There are some articles and papers out on BlueJ I believe. Georgia Tech has done some studies with their various programs for teaching CS1. But there is not much that compares different tools to each other. There hasn’t been a lot of critical work – by that I mean papers that point out flaws in these tools – though I did hear on that had some concerns about Alice at SIGCSE a while back. There are a lot of people who want these programs to work who are discovering that they do – surprise!
And they are working in places. No question. But one wonders (ok I wonder) is that the result of the teachers/professors who are using the tools or the result of the tools themselves? There are some great teachers who gravitate to new tools. How much is the tool and how much the instructor? Many teachers are not finding success with these tools? Who to blame there? Teacher or tool? Frankly we don’t have enough research on this stuff. The field is too young.
Some years ago I learned about some software from Brown University called ChemPad. This software allows a student to draw a 2D representation of a molecule on a tablet PC. The software would then model that in 3 dimensions and allow the student to rotate and study the molecule in various ways. Why was this important? Well research had shown that one particular class was a gatekeeper to more advanced chemistry courses. It required students to visualize molecules in three dimensions. Some found this easy and some (many) found it hard. Students who found it hard seldom if ever got past this course. The professor who taught the class decided that is would be better to help students overcome this problem than to completely lose them to the field of chemistry. That lead directly to this program. From what I heard last I talked to people about it this program was succeeding.
What are the visualization or thought processed in computer science that are difficult for beginners to grasp? Do we even know? Once we know can we develop tools and techniques to help them past these barriers? I hope so. I believe so. But we’ve got to have smart people doing the research to make that happen. From where are those people going to come?
*Note: I did have some posts show up automatically while I was away and there were some automatic posts about those to Twitter but they don’t count as they were all queued up before I left.
Note: Leigh Ann Sudol has A message to the SIGCSE list serv at her blog that is worth reading.
Note: A somewhat related post by Mark Guzdial at An undergraduate degree in Computer Science Education