Identifying Student Misunderstandings About Singly Linked Lists in the C Programming LanguageFull paper
In computer science, learning abstract fundamental concepts requiring students to understand memory management can be very difficult and lead to misunderstandings that carry on into the advanced topics. This is especially true in data structures with abstract data types. Understanding how novice students think and reason about data structures is important for improving teaching and learning in computer science. Most studies focus on student misunderstanding of advanced algorithms and data structures related to topics such as heaps, binary search trees, hash tables, dynamic programming, and recursion. Whereas, fewer studies focus on more elementary data structures, such as arrays and linked lists.
Since linked lists serve as a bridge to understanding more advanced data structures, we believe that it is critical to identify students’ conceptual and procedural misunderstandings earlier rather later. Therefore, directly after learning about linked lists using the C language, we conduct semi-structured, think-aloud interviews with 11 undergraduate students to uncover their reasoning and misunderstandings about the basic components of a singly linked list. Using rubrics to code responses to interview questions, we reveal common misunderstandings about the basic components, such as confusion between the node containing a node pointer and being a node pointer, failure to create a node structure, lack of knowledge regarding typecasting malloc, and lack of attention to the importance of NULL that can possibly lead to other issues with operations on linked lists.