學習寫程式對於程式語言的初學者來說,是一項困難的挑戰,尤其是在加入了陣列、結構(struct)和鏈結串列(linked-list)的部分後,這些概念的加入會讓程式的結構更加複雜,使得學生更加難以掌握它的運作。 這些複雜且抽象的章節在程式語言的教學中,學生們往往會在初學的過程中產生迷思概念(misconception),不僅影響了當下認知的建立,更會阻礙他們往後的學習。 矯正這些迷思概念,是學生建構正確認知必須要歷經的途徑。然而,單純的給予標準答案的方式,對於校正學生這些誤解的幫助非常有限,因此我們需要有別於傳統教學方式的方法。 蘇格拉底對話法(Socratic dialogue)對於澄清這些誤解並促進反思從而建構正確知識有很大的幫助,然而這種一對一一問一答的教學方式是難以作為常態教學實現的。 因此本研究針參考了蘇格拉底對話的精神,針對鍊結串列的迷思概念設計了這個引導式教學的方法,希望能夠以系統自動化的方式幫助學生矯正他們在學習中所產生的迷思概念。
For novices, it is a great challenge to learn to program, especially when there are arrays, records and/or linked lists involved. Concepts of arrays, records, and linked lists are not so easy to grasp, making it hard for novices to come up with correct programs. This is especially the case with linked lists. When novices learn new concepts, they may form misconceptions. These misconceptions not only make the construction of programming knowledge difficult but also hinder their learning of subsequent programming concepts. To help novices correct their misconceptions, the use of direct teaching may not be very helpful. A better way of helping novices to correct their misconceptions may be to use Socratic dialogues. When conducting a Socratic dialog with a novice, it is important that the novice must find his/her misconceptions all by him/herself. That is, only the necessary guidance is given, so that the novice will find contradictions in his/her reasoning, which is then followed by necessary corrective measures, again with the help of further guidance. To use Socratic dialogs, however, there is a big problem that must be overcome, and the problem has to do with the fact that a teacher can handle only one student at a time. When there are many (say, 40 or even 80) students that need to be helped, the teacher will have problems using Socratic dialogs to help them. One solution to this situation is to use a computer system with embedded dialogs in it. Whenever the user (a student) gives an input to the system, the system always have a pre-designated answer for it, an answer that is reminiscent of a Socratic-styled answer. In this thesis, we investigate the use of such a computerized approach to help students correct their misconceptions of linked list processing. We focus on a very narrow domain - the domain of linked list traversal, node deletion, and node insertion, and we prove that our approach is somewhat effective in helping learners correct their misunderstandings.