HELPING NOVICE PROGRAMMING STUDENTS SUCCEED

HELPING NOVICE PROGRAMMING STUDENTS SUCCEED*
Toni R. Black
University of New Mexico, Valencia Campus
505- 925-8714
tblack@unm.edu

ABSTRACT

A beginning programming student has much to learn in the first programming class: new editing software, correct syntax, application of the syntax, logical sequence of steps, making sense of compiler error messages, appropriate formatting, modularized functionality and complex concepts such as arrays and pointers. The professor needs to get a lot of information across to the students, but how can the bridge be built from the plethora of information to successful application of the concepts into code by the individual student? The cognitive apprenticeship learning model can be very beneficial to the novice programming student. This teaching method helps the student in better understanding the programming concepts and as a result he can become more self-reliant as the semester progresses.


1. INTRODUCTION

"When a student is new to a domain and task he has a lot to learn to become effective. After acquiring a basic level of background knowledge, he needs to start learning how to solve problems in the domain. As a novice, doing this on his own presents significant obstacles. When he fails, assigning blame for the failure and learning from it may be impossible." (Redmond, 1992, p. 3) Learning how to write program code is similar to learning a foreign language. One must learn the words for various objects and actions, and the rules for grammatical structure of a sentence. Going beyond learning the words and grammar rules is the ability to construct what they learned in a conversational mode, so the receiving listener can understand and interpret what is said. Conversations are conducted in the presence of the teacher for validation and correction of the pronunciation as needed. So, too, does the programming language have specific words for objects and actions, and the grammatical rules for each programming "statement" are very concise. However, the real challenge lies in the student transferring this learned syntax to solving a programming problem. It is at this point in his learning that some guidance or mentoring is needed. The role of the teacher is to provide hints or tips to acclimate the student to this new domain, this new way of communicating with a computer. There are terms and concepts to discuss in the class, but the student must practice the techniques to become proficient. Even though the computer teacher/professor requires practice efforts, it is usually not included as part of the class-time instruction. This is the grave error in this teaching methodology. Without the guidance of the teacher during the practice segment, the student can become confused and unable to continue, or may learn incorrect techniques that are hard to amend. Many learning and teaching theories support less lecture and more time for the student to practice the tasks. One theory in particular focuses on an improved teaching model for the programming language professor.

2. COGNITIVE APPRENTICESHIP LEARNING

The request for the instructor present during the practice time is the premise of the cognitive apprenticeship learning model. Cognitive apprenticeship is based on the ancient model of apprenticeship education, where knowledge and skills are conveyed from an elder master to a young person (Schultz, 1996 and Collins, Brown, and Newman, 1990). This teaching model uses many of the instructional strategies of traditional apprenticeships but emphasizes cognitive more than physical skills. The learning technique focuses on guidance by the teacher who is the subject matter expert during the practice sessions. Initially, the teacher plays an active role by demonstrating how to do different tasks, striving to build a conceptual framework of the material. The teacher then coaches the student as he attempts to apply the techniques to various problems (Collins et all 1991). The key idea is that the teacher does not give blatant answers, but rather to coax the student to discover his own answers and to reflect on his problem-solving experience. As the student gains expertise, the instructor provides less and less assistance (Seitz, 1999). Research has shown this to be effective in the development of higher level thinking skills such as problem-solving (Snyder, 2000). This guided participation helps the student achieve a task that independently would be too hard or complicated. Shrum and Glisan (2000) also point out that learning is not only a cognitive process, but it is also a social process. Therefore instruction and learning should involve discussions and interactions between the experts and other novices (Fardanesh, 2003). Students should be asked to discuss and explain their problem-solving processes or strategies, and to compare their processes to those of others. This reflection helps confirm the student's understanding of the concept. The initial stage in cognitive apprenticeship is modeling which involves an expert's performing a task so that the students can observe and build a conceptual model of the processes required to accomplish it. In cognitive domains, this requires verbalizing the internal processes and activities associated with a task. Duncan refers to this as "think aloud modeling", and states that this type of modeling "reveals the most complete description possible of their cognitive activities and strategies, while providing organizational scaffolds for the students. Instructors describe what they are thinking and doing, why they are doing what they are doing, and verbalize their self-correction processes" (1996, p.67). Observation by the student plays a key role in developing the conceptual model of the task prior to his initial attempts (Collins et al, 1991). In cognitive apprenticeship, one needs to deliberately bring the thinking to the surface, to make it visible, whether it's in reading, writing, or problem solving. Following the modeling phase is coaching and scaffolding which are two critical components of the cognitive apprenticeship model. Coaching consists of the teacher observing students while they carry out a task and offer hints, feedback, modeling, and reminders. The focus is to bring the student's performance closer to expert performance. Coaching may serve to direct the student's attention to a previously unnoticed aspect of the task or simply to remind the student of some aspect of the task that is known but has been temporarily overlooked.
Scaffolding refers to the supports the teacher provides to help the student carry out the task during the coaching. These supports can take either the forms of suggestions or help. When scaffolding is provided by the teacher, it involves the teacher in executing parts of the task that the student cannot yet manage (Krumme, 2004). Scaffolding is based on Vygotsky's (1978) concept of the zone of proximal development (ZPD), defined by him as the distance between the "actual developmental level as determined by independent problem solving and the level of potential development as determined through problem solving under adult guidance or in collaboration with more capable peers" (p. 86). Vygotsky believed that when a student is at the ZPD for a particular task, providing the appropriate scaffolding would give the student enough of a "boost" to achieve the task. Once the student masters the task, the scaffolding can then be removed. The important element of scaffolding is the immediate availability of help. The learner
is helped when he is at a point where he needs help in order to continue the task. When learners are left for too long at a point where they cannot make progress, they become frustrated and can lose interest and motivation. Gradually, the supports are removed until students are on his own (Collins et al 1991).

3. BENEFITS OF COGNITIVE APPRENTICESHIP

Using the cognitive apprenticeship model could serve the student well in a computer programming class. The difficulty in learning to program code lies in applying the correct techniques to solve a programming problem. It is important to have some lecture so the instructor can introduce the concepts behind each programming technique and to have examples of code in the accompanying textbook. But stopping at this point leaves the novice programming student at a disadvantage. The student needs to observe the process of how an expert starts building the program, when to employ the various techniques, and most importantly how to "trouble-shoot" problems in the code. Trouble-shooting refers to determining any syntax or logic problems in the code. Syntax errors are spelling or grammatical errors based on the requirements of the specific language. These are often obvious and can be easily fixed. Logic errors are problems with the sequence of the statements and are more difficult to detect. Finding syntax and logic errors in program code are not innately obvious to the novice programming student. This skill takes practice and experience to build a base of knowledge for interpreting the errors that can, and do, occur.
Working with the teacher, who is the expert, helps the student to recognize general syntax problems so the student can develop this proficiency. The teacher also guides the student to reflect on his sequence of logic, for the student to discover for himself not only the errors in logic but also possible alternate choices in developing the code. As well, the teacher coaches the student to reflect on the programming problem, to arrive at his or her own solution. There is no one way to create a computer program and this gives each student the opportunity to arrive at a unique solution to each programming task. Two research projects have found cognitive apprenticeship to be an effective method in teaching complex concepts. A research project conducted at New York University, by Kathleen Snyder (2000), tested the effectiveness of cognitive apprenticeship in teaching technical skills to adult learners in an on-line learning environment. The course ran six weeks and the students were evenly divided into two groups: a text-based group and one using the cognitive apprenticeship model. The overall conclusion was that the cognitive apprenticeship group developed better complex problem-solving skills that the text-based group. Lisa Novemsky (2003) tested cognitive apprenticeship in learning postsecondary physics. Scientific language is highly formalized, conventionalized, or standardized as to connotations and meanings of word with a high degree of semantic consistency. Thus, language learning in an unfamiliar academic discipline involves processes similar to learning a second or foreign language. Novemsky found the cognitive apprenticeship model of education to be very beneficial to students learning this unfamiliar academic discipline.
The cognitive apprenticeship model further creates an environment of learning under the control of the student, not of the teacher. By doing this it improves the student’s development of cognitive management skills, such as goal setting, strategic planning, monitoring, evaluating, and revising. These skills are all critical for effective learning (Berryman, 2000, Collins et. al. 1991).
This approach makes the student is an "active" learner, not a passive one, which is the expectation and desire of most adult students. The coaching and scaffolding features of the cognitive apprenticeship model address the need for feedback during practice, as addressed by Mager (1984), Knowles (1975), and Skinner (1986). The student can ask the instructor a question, and the instructor provides hints, modeling and/or suggestions. The scaffolding helps the student learn without having strong knowledge of a domain, by helping the student develop skill and expertise as the learning progresses (Redmond, 1992). The actual practice of the concept under the guidance of the instructor also addresses the need for people to use more than just their sense of hearing, meaning limiting the class activity to lecture. Performing the task, asking the teacher questions, making corrections, and reflecting on the process with other students bring all the senses into the learning event.
Learning is also contextualized through the cognitive apprenticeship approach. Context has been proven to be critical for understanding and thus for learning. Contextualizing knowledge also makes for an easier transfer of knowledge and skills. Berryman points out that it is only in context that most students will learn when, where, and how knowledge applies to other situations (2004). Because learning of these cognitive skills is contextualized during coaching and scaffolding, students see the need and purpose for learning. The student better understands the concepts and begins to take more initiative in the learning experience. Gradual fading of the coaching and scaffolding occur as the student becomes more self-reliant.

4. RESEARCH STUDY TO BE CONDUCTED

The author plans to conduct a practitioner research project employing the cognitive apprenticeship model. The participants will be in a beginning programming class being taught by the author during the Summer semester of this year. At the time of this writing, the research project has not started. In the presentation at the conference, the author will relay the results of the research and the activities used to augment the cognitive apprenticeship teaching model.

5. CONCLUSION

Students in computer classes need to hear the explanation from the teacher and observe the demonstration skill or technique, but also to have time with the teacher for practice, feedback and discovery. The crux of the Cognitive Apprenticeship teaching method lies with the coaching and scaffolding phases. The student can benefit by the teacher mentoring his progress as he works through the steps in developing the logical flow of program code. It is important for the teacher to be available to offer clues to lead the student to discover his or her own answers. The technique of scaffolding is crucial as it decomposes the task as necessary for the student to carry it out. Through the coaching and scaffolding phases, the student develops a more solid grasp of the programming concepts and can begin to complete the majority of the programming tasks independently. This theory will be testing during a research project to be conducted in the summer of this year. The outcome of the project will be reported at the conference during the
presentation of this paper.
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

0 Response to "HELPING NOVICE PROGRAMMING STUDENTS SUCCEED"

Post a Comment