Richard wrote: "To program beyond simple set piece exercises requires a certain mindset."

According to Arzarello, Chiappini, Lemut, Marara, and Pellery (1993), an important part of learning to program is the "sudden transition from simple computational attempts to the synthesis of the whole in a procedure or program" (p. 289). However, a significant percentage of students may not be able to make this leap, as exemplified by the bimodal distribution of grades in programming classes, where some students seem to "get it" while others "just don't get it" (Hudak and Anderson, 1990). Applying Piagetian theory may supply an answer to this conundrum, specifically involving concrete versus formal operations stages of development. The latter stage "entails grasping the logic of all possible combinations of items or events, developing a combinatorial system, and unifying operations into a structured whole... data indicate that as many as 50% or more of college students are not formal operators.. [some] express alarm, arguing that the use of nonformal operational thinking by college students is increasing, and propose methods for promoting stage advancement" (Hudak, M. and Anderson, D., 1990, p. 231).

---

Richard wrote: "I have proven to myself, through teaching my sons, that it is possible to accelerate the learning process by close mentoring and hectoring"

Richard is referring to something which is elsewhere called a "cognitive apprenticeship" ; I think it's clear that students will learn programming (perhaps any subject) best with one-on-one tutoring. Arzarello et al (1993) describe student learning as a continuous self-evaluation loop: "The expert can model and scaffold the novice, and the novice can observe the expert, correct and refine his own practice looking carefully at the expert's externalization of his relevant internal cognitive processes and methods. The novice must observe, analyze, and evaluate not only inner cognitive processes, which the expert externalizes, but he must also compare and contrast them with his own intellectual performance. A sort of continuous self-evaluation is required; the point is that the novice can activate it, only if his distance from expert performances is not too far; if not, this may cause stumbling blocks in cognitive apprenticeship" (p. 292). Ideally, a programmer will continue to monitor the effects of his or her current work on the work that has come before (Lehre, Guckenberg, Sancilio, 1988, p. 85), which is another way that programming taxes cognitive resources.

A big problem is how to mass-produce this cognitive apprenticeship; I have 52 students in each of my introductory programming classes; there is no time for one-on-one instruction. I do try to model "programming behavior" by solving problems real-time on an overhead projector; I don't prepare the demonstration problem solutions ahead of time, but solve them with the students watching -- including forgotten semicolons and all. I also verbalize my thought process while solving the problem. This is the closest I've been able to come to mass-producing cognitive apprenticeship.




Steve Shaffer
teachingprogramming.com



======================================
Steven Shaffer
Computer Science & Engineering
School of Engineering
338C IST Building
University Park, PA 16802
1 814 867 1302
[EMAIL PROTECTED]






----------------------------------------------------------------------
PPIG Discuss List (discuss@ppig.org)
Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss
Announce admin: http://limitlessmail.net/mailman/listinfo/announce
PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/

Reply via email to