Sign In

Communications of the ACM


Introductory Computer Science Lessons--Take Heart!

View as: Print Mobile App Share:
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.



William Doane

Judy, I'm unclear whether your primary concern is (a) that KSC's presumptions may be flawed or (b) that some of us are likely already doing what KSC call for.

Granted that (b) is almost certainly true, given the wide variation in teaching styles and philosophies of those teaching introductory programming courses, let's consider (a) for a moment.

I like the idea that there is a cognitive/metacognitive stage issue, and I believe Mark speaks to that: the reversal of guided instruction vs. minimally guided instruction in reading, in particular.

I find myself wondering what a typical person would do, given no prior knowledge of automobiles, if faced with a car for the first time. Presumably, our mastery level goals are for the person to learn to drive (skill), to feel confident driving (affect), and to know the common syntax (dashboard gauges, road signs) and semantics (low fuel, merge right) of driving (knowledge). But what are the cognitive barriers to novices developing those? Finding the fuel tank and understanding the role of gasoline; finding the ignition and understanding the use of keys; realizing the correlation of steering wheel movement to wheel movement; the use of the pedal system; gears; etc etc etc.

Does the mastery level task of driving parallel the novice task of learning enough about the car to be able to drive?

I think KSC speaks to the latter: (a) there are start-up costs to learning about/how to do X that are unlike actually doing X and (b) those costs are difficult to address without guidance.

We tell the novice to put the gear shifter in park, put their foot on the break, and the key in the ignition, before turning the key specifically because they would have a very hard time stumbling upon that combination on their own.

Charles Downing

I am an alumnus of Colorado School of Mines in the Class of 1962. During the last almost 50 years I have felt, and bragged to others, that the cornerstone of my training at CSM was being taught how to use the index of a book. I do not have problems with my long-term memory, but, in the fields of engineering and computer programming, knowing how to find the answer has been more important than having it memorized. How else can one make any new discoveries?

In summary, I see nothing wrong with your premises. Your students are fortunate to have you.

Michael Lewchuk

Please see my comment blog 45725. thx.

Displaying all 3 comments