Recursion Early, Recursion Late

In some respects I should be writing about SIGCSE today. At least about Craig Mundie’s keynote. But I’m not ready to. Why? Just too much information. My brain is full and it is going to take me a while to sort it all out. I’m hoping that a couple of people who were also here this week will blog about it and I can link to them. And of course use their perspective to sort things out. There were some interesting things said in the keynote and even more in a small round table session I was allowed to attend. But I’, still digesting it as I said. I also attended two sessions today and one last night on the Advanced Placement Computer Science program. Yes there is that much to talk about. Much too much to blog about this late at night. But I did want to drop a bomb on you guys. One that was dropped in a session today by none other than Eric Roberts of Stanford.

One of the discussions today was on what topics should be added to the current AP CS course (what we used to call the A course). After a bunch of suggestions the next question was what to take out. Eric Roberts, a man who has written a book about it, suggested recursion might be taken out. What no recursion in a first programming course? It was a stunner. Coming from many other people it might have been automatically rejected but coming from someone of this stature in the field of computer science there was a noticeable pause. And then people seemed willing to agree. Had someone just said the Emperor had no clothing? Well probably nothing that extreme. But discussion is open.

I will say that I love recursion. It has a sort of magic about it. You can use if to solve some difficult problems that cannot be solved (some easily and others perhaps not at all) without it. One the other hand I have known professional developers who have gone decades without using it for a production program. Wouldn't you think that something essential for a CS 1 (first college computer science course which is what APCS is supposed to be) would be used pretty often?

Alright, we can’t teach Quick Sort without recursion but there are other sorts. And, dare I suggest it, perhaps sorting could wait until later since just about any decent programming environment has a sort function/method/routine in its library these days? And I do believe that a computer scientist or a professional developer does have to know/understand recursion. But does it have to be in the first course? Maybe not. Recursion comes easy for some people but not many. For many it is difficult to completely grasp. It took me a while – just between us friends. Perhaps it does more harm than good to include it in too early a course?

Does recursion really need to be in APCS or even CS1? What do you think?