Introductory Computer Science Lessons–Take Heart!

Judy Robertson

I was somewhat alarmed to read Mark Guzdial’s excellent and thought provoking article which argues that the way we teach introductory computer science is wrong. His argument is that some of the educational pychology literature claims that minimally guided instruction techniques (such as discovery learning, constructivism, problem based learning etc) are less effective than strongly guided instruction techniques. As an extension to this: teaching programming through the practice of programming itself is not effective for novices. As a lecturer of a first year programming module myself, I spluttered into my cup of tea and hurried off to read the Kirshcner, Sweller and Clark article Mark recommended.

Kirschner, Sweller and Clark have some strong words to say against minimally guided instruction approaches. For example "The goal of instruction is rarely simply to search for or discover information.The goal is to give learners explicit guidance about how to cognitively manipulate information in ways that are consistent with a learning goal and store the result in long term memory." (p77) But hang on: in higher education we generally regard it as important that students know how to search and discover information for themselves. They require skills in self directed learning. In the context of programming, for example, we may wish them to know how to look up documentation for themselves. We would also generally expect them to be able to search for information sources in the first stage of carrying out a research project. I suspect this is a question of the stage of cognitive and metacognitive development the learner is at in first year, and whether it is reasonable to expect more of them than manipulating information and storing it in long term memory.

The authors also write: "It may be a fundamental error to assume that the pedagogic content of the learning experience is identical to the methods and processes (i.e. the epistomology) of the discipline being studied and a mistake to assume that instruction should exclusively focus on methods and processes." p78. I don’t think that introductory computer science teaching does focus only on methods and processes. In fact, it is a bit of a straw man to consider what goes on in first year computer science classes as pure minimally guided instruction anyway. Obviously there are a huge range of teaching approaches to novice programming across the world, but let’s take the Barnes and Kolling "Objects First With Java" text book and Blue J environment. It’s very popular (ranked as number 1 in three of the Amazon technical books categories for what it’s worth) and used as an introductory text in many computer science departments. One of the features of this well designed textbook is that it aims to teach high level concepts as a priority over lower level language constructs. The BlueJ environment enables students to experiment with object orientation by calling methods on objects in a graphical environment. The text book encourages students to read code before they write it, and "wire in" small segments of their own code into a pre-written program. The lecture slides which come with the book give specific instruction and worked examples; students typically recieve this sort of instruction before working on small examples in the lab. In fact, working on small examples after a lecture on programming concepts is in my experience a fairly common pattern in first year instruction.

Kirschner, Sweller and Clark recommend the practices of a) providing worked examples for students to read and b) providing process worksheets which explain to students the processes they should go through when solving problems.These are both sensible suggestions but I wouldn’t say they were unusual for computer science teaching. I would suggest that we tend to use a mixed bag of instructional techniques rather than basing our pedagogy on pure theory. And so therefore: we probably get our first year teaching right at least part of the time. Which is a bit of a comfort.


Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More