Computer Science Students and Problem Solving
+ How Computer Science Students Learn
Computer Science students not only need to know how to think computationally, but think creatively as well (Soh, Shell, Ingraham, Ramsay, & Moore, 2015, p. 33). Computational thinking and creative thinking should not be seen as a dichotomy. The authors used Epstein's Generativity Theory (Epstein, 1993) as a framework for the tool they developed to help students with computational and creative thinking. The framework consists of 4 dimensions:
- Broadening: You'll be able to tackle a wider array of problems if you possess skills from many different domains.
- Challenging: When solutions you're used to using don't work, this enables you to come up with a more creative solution.
- Surrounding: While broadening applies to diverse knowledge and skills (how/what), surrounding applies to diverse environments (when/where/who). The more people/situations you interact with will lead to experiencing new perspectives you may not had considered before.
- Capturing: The act of purposefully recording new solutions to problems and new skills as you learn them so that you can more effectively use them in future situations.
@soh2015 [p. 33] created Computational Creativity Exercises (CCEs) using the principles from Epstein's Generativity Theory. For example: - Describe an everyday object to a person that has never heard of it (ex. mechanical pencil)
- Analyze the object and how it would be represented in code (class/function/variable)
- Reflect on what you came up with and determine if any functions can be abstracted to fit a more general purpose.
In addition to creative and computational thinking, the CCE's help the students by getting them to create connections between ideas and concepts. Through repetition, the students will learn through using discipline specific language at higher levels of abstraction. @soh2015 found a significant correlation between the rate of completion of CCE's and the students' grade in the course. A computational thinking knowledge test was administered to gauge the effectiveness of the CCEs and the results were positive. The more CCEs a student completed, the higher their letter grade was and the higher they scored on the computational thinking knowledge test (Soh, Shell, Ingraham, Ramsay, & Moore, 2015, p. 35).
@fee2010 identify problem-solving and critical thinking as two of the most important cognitive processes needed by Computer Science students. They define Problem-Based Learning (PBL) as a learning approach that puts students in the driver's seat and has them construct their own learning. This is done through scaffolding the problem-solving process such that the students can pull from prior learning to tackle new problems. The student must be an active part of the process. Students do not realize that the core of any Computer Science related goal is problem-solving. @fee2010 state that this is a challenge when trying to implement PBL since the students tend to be more motivated by the end product and not the process or journey to get there. All 52 Computer Science students at Washington & Jefferson College over a five year period that took part in the final capstone project graduated. The authors view this as an indication that the PBL approach is ultimately a successful one, though they admit that the sample size is rather small and further research including interviewing past graduates could be helpful for this topic.
To effectively filter information requires experience which by definition first-year students do not have. Experienced programmers can use prior knowledge to effectively obtain the results they require (Ben-David Kolikant & ma’ayan, 2018, p. 219).