Computational Thinking and Core Curriculum

"Computational Thinking" represents "a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use as described by Jeanette Wing (in CACM, Viewpoint, Vol. 49, No. 3). Like many computer scientists, while reading her viewpoint, I felt like she was saying what many (ok, all) of us are thinking during a time where computer science enrollments are still near historic lows. And for those of us who have been down in the trenches trying to remedy the situation, we have been hard at work to introduce new ideas within our respective institutions.

I won’t rehash all of Jeanette’s excellent article. Instead, I hope to commence a discussion that I hope could eventually become a topic or set of topics within Computing Now: how to engage the world in computational thinking. In today’s posting, I am focusing on curricular matters. I pose the rhetorical question: How do we teach computational thinking? It’s a discussion and debate worth having.

For the past few years at my university, Loyola University Chicago, I have been working on how to foster interdisciplinary and multidisciplinary research. My experience has convinced me that it’s easier said than done and will probably require more than merely thinking computationally. It requires us to think from alpha to omega, that is from the beginning of the academic process (the secondary schools) to graduate studies, on how to engage students, other faculty, and the community in general. Toward meeting at least a part of this goal (getting students early) I introduced a new course on the History of Computing, aimed at the vast number of students who enter college and might never have taken a computing course. (After all, it’s not required in most of our secondary school system, remaining a topic of niche interest.)  My initial thought in introducing this course was to acquaint our majors with the pioneering ideas of computing, which do go back thousands of years, because I noticed time and time again that the vast majority of computer science students (and even many professional computer scientists) really don’t know terribly much about computing history–or worse, history itself–and the important impact it’s had on actual history! So I was developing the course concepts and, suddenly, an opportunity presented itself: core curriculum renewal.

At my university, similar to many universities, there is a good amount of rethinking on "what should be required" of all students. In the case of Loyola, the core renewal process focused on areas of knowledge/learning as opposed to what departments are teaching the courses. This important separation of concerns enabled the possibility that departments such as computer science could propose courses in certain knowledge areas, subject to intellectual merit of the course being proposed.  I decided to focus on historical knowledge and, seeing that IEEE  was publishing the Annals of the History of Computing and (now) Computing Then, I gained confidence that there must at least be some merit to the idea. There were also other related courses I discovered on the net (Kernighan’s "Computing in our World" at Princeton and Bergin’s History of Computing class at American University), so it was not without precedent at least to get such courses approved in other universities. What might be without precedent is to get the course included as a recognized core historical knowledge course and to develop a course that meets the rigid requirements of our core curriculum. (The course has proper texts, films, lectures, discussion assignments, and strong writing/presentation components.)

To my amazement and great delight, the course was approved for students to elect as one of their two required Historical Knowledge core courses in 2004, meaning that students can learn a good amount about history in general from a computing perspective. Since then, hundreds of students have taken the course, and many students have approached me to become majors. (Our enrollments haven’t changed dramatically but are improving. We’ll be happy to teach students about computing using a more humane approach.)  I think it’s an important part of introducing computational thinking, especially to incoming students. All too often, I feel that the first contact most students have with computer science starts with heavy-duty mathematics and programming courses, which is definitely important but sometimes fails to present a meaningful context. And a bad first experience with CS, based on my discussions with numerous students, is likely to be the last experience.

Post a Comment

Your email is never shared. Required fields are marked *

*
*