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
I cant help but think there is a lot wrong with the way things are happening today. I say this as both a 20 year old, and a professional software developer (developer analyst for a fairy large company). I spent a good chunk of high school teaching myself different languages and programming styles/practices, and just barely graduated (with lots of help from teachers and the principal). Even if I had the grades to get into comp sci, there isnt a chance in hell I'd go for it. There is too much theory involved. It doesn't get you ready for the real world. It's perfect if you plan on doing research for the rest of your life, but the bulk majority of students wont be. High School comp sci courses will teach you more useful things than University/college. You are better off getting a business degree.
I would partly disagree with first commenter.
For me, after first year in my first university i understood that it would be total waste of time. And sadly, it was.
Now 15 years later, i still miss those years in many ways. And by continuing learning constantly i actually see that it would be close to impossible for university to be a good teaching facility for generic public.
I guess university, so far, is more about organizing students into groups, more strictly defining their interests.
Nothing bad in it.
Bad that its all done using mask of teaching, using this common myth.
The AP and IB Computer Science courses don't teach you nearly as much as a couple good books can in much less time. I've spent the last few years learning languages, styles, practices and concepts and I'm still going. The computer science part of education probably won't add that much to my skill set until I understand it better.
I haven't taken a formal computer science class in a few years BUT
I did my undergraduate degree in CS, and most of the things that we studied as theory has become reality today, especially database and even a lot of the OS.
My second round of taking CS courses were also good. Taking engineering classes really helped me understand boolean logic better and made it easier to teach it to my students.
Designing a CPU was also good.
The best course I took was a practical one -- we worked with artists to design a computer game.
I've used all of the above knowledge to help my own high school students understand what computer science is all about.
I will also admit that I don't teach much theory in the high school courses, but make it as project based, illustrating the theory as we go.
How can anyone offer a PhD in CSEd when almost no one offers a BA/BS in CSEd or a Masters in CSEd? I cannot even find a viable CSEd degree program in the Northwest. One of our private colleges (Rocky Mtn College in Billings) is examining the possibility but really does not see the program happening due to a lack of students desiring the program. Weird. I would think that since society is being driven by computer tech, CS teachers that actually know the subject would be at a premium. All that is being taught to teachers in this area is Microsoft Office 101. All the CS teachers I know either have a pure CS degree or are OJT. Developing a true high school CS program with a pedagogy designed to work with the average kids is true trial and error with little foundation in proven research.