Computer Science Students and Metacognition
+ How Computer Science Students Learn
Being aware of what one knows and where the gaps in their knowledge are can be referred to as Metacognition and is a characteristic of an expert programmer (Bransford, Brown, & Pellegrino, 2000, p. 47). The metacognitive process requires reflection on what you came up with and determine if any functions can be abstracted to fit a more general purpose (Bransford, Brown, & Pellegrino, 2000, p. 34). In the studies by @chmiel2004 [p. 18] and @fitzgerald2010 (Fitzgerald et al., 2010, p. 395) about developing debugging skills for Computer Science students, they tasked students with answering metacognitive questions like:
- How much time did you spend on the design, coding, and testing of each part or subroutine?
- What kinds of defects did you find during the development of the program?
- When did you discover these defects (during code review or during testing)?
- How did you find them?
- What you would do differently for the next programming assignment?
- Why did you make that change?
- What do you think will happen now?
By asking these questions, students can start to develop the ability to teach themselves (Bransford, Brown, & Pellegrino, 2000, p. 50). Metacognition surfaced in the studies by @marques2018 and @soh2015 as well where they identified that novices are unable to distinguish between what they know and what they don't know. @ben-davidkolikant2018 [p. 220] outlined in their study that not only are the key cognitive processes for searching the internet analysis and evaluation, but also metacognition. The students first had to recognize that the solution they were currently looking at was not one they understood, so they had to do some more searching to further their understanding of how the solution worked.
ð References
- ben-davidkolikant2018#^b2d3b6
- bransford2000#^f2ea4a
- bransford2000#^cbc84b
- chmiel2004#^cd979d
- fitzgerald2010#^1637cb
- marques2018#^f4aa29
- soh2015#^1f70d8