Reading the latest CACM, I came across an opinion piece by Bjarne Stoustrup entitled “What should we teach new software developers? Why?” The topic of the article fits right into my blog-on-teaching-reflection. There are a few interesting and controversial things in the article, some overt and some implicit.
The tension between “computer science” and “software development” is not adequately addressed, in my opinion. It is true that right now, academic study of computer science often leads directly to employment in software development. I wish Stoustrup had spent some time on whether this was necessary and mutable. I don’t blame him, in such a short article, to simply take the world-as-it-is position.
The natural extension of this article is “How?”, since he has already addressed “What”? and “Why?”. Stoustrup dips into potentially blasphemous territory when he calls for more group projects, but more and more, I fall into that camp. I wish this idea, and much of what Stroustrup preaches, were easier to package for the opposition. It is unfortunate that the same establishment that wants us to teach C++ at the same time won’t listen to Stroustrup’s calls for fundamental change in how we teach!
His comment on “smokestack” courses is especially interesting to me. Integration is an important part of learning, but by and large, professors don’t want to let go of their territory. To actually teach integration of knowledge requires significant overhaul not only in curriculum and course design, but potentially in the entire reward mechanism for faculty. I have seen this topic arise at the departmental, college, and university levels, and in an age of tight budgets, I am not hopeful for innovation any time soon. Borrowing from Christensen, it’s not clear that the entrenched structures of higher education can disrupt themselves.
Stoustrup’s notion that the lowest degree offered for software development is a Masters is intriguing. I am not sure that I have much else to say about that for now, but I do love for my own students to deeply study practically anything from outside of CS.
These thoughts are incomplete, and I’m not perfectly following Merlin Mann’s suggestion to edit all writing, but at least this is some food for thought. Perhaps I will come back to it later, but as seems to be my modus operandi recently, I feel like I have more topics I’d like to write about than I have time to write at all, so editing gets short-shrifted.