Sign In

Communications of the ACM


Learning to Teach Computer Science: The Need For a Methods Course

teacher with students at computers in classroom

Credit: Auremar /

A multipronged approach to preparing computer science teachers is critical to success.

The full text of this article is premium content


CACM Administrator

The following letter was published in the Letters to the Editor in the March 2013 CACM (
--CACM Administrator

I was disappointed in Aman Yadav's and John T. Korb's Viewpoint "Learning to Teach Computer Science: The Need for a Methods Course" (Nov. 2012). There is no question that teaching anything well requires knowledge of the subject and proper pedagogical technique, both covered nicely. Left out, however, and worse, mischaracterized, was skills. With any human behavior, knowledge is only part of the equation, typically not the most important. Yadav and Korb omitted all discussion of skills, except for mistakenly calling pedagogical knowledge a "skill set" (second paragraph in their "Learning to Teach" section). Knowledge is not skill. Skills, or competencies, are the know-how that enables a teacher to assess what method, technique, demo, analogy, illustration, or exercise works best for which students in which circumstances. Competencies cannot be reduced to knowledge.

No amount of content or pedagogical knowledge can substitute for teaching skill. Generalizations, including empirical studies, concerning how to present topic X are great, but doing it well means crafting it to the students and the case at hand. I have, for almost 30 years, taught computer science, from freshman-level intro to computing to advanced graduate courses in software engineering and AI. I focus on the student(s) and what they need to grasp the concept or acquire the skills they need. I ask myself, where are they confused? What distinction are they missing? Where did they get a wrong idea? What do I know about them that would enable me to choose the analogy that works for them, how to say it so it connects, and how to motivate them to keep working on something they likely find difficult and confusing? How can I motivate them to engage with computer science at all? Also, how do I invent new examples when the usual ones don't work? And how do I assess whether students are getting the concept or skill I am teaching? Moreover, how do I respond to the student who says, "I'm just dumb"?

The National Science Foundation CS10K Project ( may indeed produce 10,000 teachers by 2016 but will not have much influence on the number of teenagers with knowledge, skills, and, most important, interest in computing if it does not give those teachers the skills that make them teachers, not mere knowledge transmitters.

H. Joel Jeffrey
DeKalb, IL

Displaying 1 comment

Log in to Read the Full Article

Sign In

Sign in using your ACM Web Account username and password to access premium content if you are an ACM member, Communications subscriber or Digital Library subscriber.

Need Access?

Please select one of the options below for access to premium content and features.

Create a Web Account

If you are already an ACM member, Communications subscriber, or Digital Library subscriber, please set up a web account to access premium content on this site.

Join the ACM

Become a member to take full advantage of ACM's outstanding computing information resources, networking opportunities, and other benefits.

Subscribe to Communications of the ACM Magazine

Get full access to 50+ years of CACM content and receive the print version of the magazine monthly.

Purchase the Article

Non-members can purchase this article or a copy of the magazine in which it appears.