Helping students understand their own learning process was called for in a report titled "How People Learn" . Schoenfeld  describes the term metacognition, which refers to "thinking about your own thinking". He gave concrete examples of encouraging this in students by asking questions such as "what are you doing?", "why are you doing it?", and "how does it help you?" at all points in the problem solving process. Metacognition is the internalization of external feedback mechanisms. Metacognitive skills are necessary for life-long learning because students must provide their own feedback mechanism once they are no longer in school. This course will build on the students current concept of external feedback and encourage metacognition through peer critique.
Computer Science students are used to the quick feedback loop provided by a compiler. In fact, they are encourage to make this feedback loop quick by making small changes to their program and then testing. This pre-existing understanding of feedback, or thinking about their programs, will help students towards the develop of metacognitive skills but will also create a tendency for impulsive decisions to be made during self-evaluation because the students are used to feedback being quick. We can build on the students pre-existing understanding of feedback by suggesting that students look at their own problem formulations as if they were a compiler.
Students can work on metacognitive skills by first critiquing fellow students. This encourages metacognition skills because the students find critiquing other people's work easier. However, after providing feedback for other students, the student will be more likely to reevaluate their own work. In this course, the students will be required to provide some positive and negative feedback for some of the other projects in the course. They will then be asked to suggest improvements for their own projects based on ideas gleaned from looking at other tutorials. This evaluation will be one of the deliverables for their own project.