Annotated Bibliography
Searching the internet for reliable sources of information is difficult for Computer Science students. The sheer quantity of documentation makes it hard to filter out irrelevant information, even for experienced programmers. The authors interviewed twelve undergraduate Computer Science students to find out how the students felt about performing searches while programming. The objectives were to identify common areas of difficulty when searching and the cognitive processes involved when using the internet to solve programming bugs. Of the twelve students, six were from Britain and six from Israel. Each group of six contained half male and half female students. Since the discipline is heavily male-dominated, it is good that they considered this disparity in their research. The authors found that first-year students did not use relevant words about their current bug when phrasing their queries. The first-year students tended to take whatever the first search engine result was and copy-paste it in their code without knowing what it did. To effectively filter information requires experience which first-year students do not have. Experienced programmers can use prior knowledge to obtain the results they require effectively. None of the interviewees stated that they had any formal training in how to use search engines effectively. The critical cognitive processes for searching the internet are analysis and evaluation. Also, metacognition happens since the student must identify that the solution they are currently looking at is not one they understand, so they must do some more searching to understand how the solution works. Knowing the right questions to ask is a by-product of increased experience. The authors concluded by asking if teachers can aid students in how to search effectively. They mentioned that further research into this topic is required.
Fee & Holland-Minkley 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 constructs their learning. PBL 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. Fee & Holland-Minkley state that this is a challenge when implementing PBL since the students tend to be more motivated by the product and not the process or journey to get there. 52 Computer Science students at Washington & Jefferson College over five years that took part in the final capstone project graduated. The authors view this as an indication that the PBL approach is ultimately successful, though they admit that the sample size is relatively small. Further, research including interviewing past graduates could be helpful for this topic.
The authors studied students’ ability to debug a program using an eye-tracking device effectively. This study aimed to determine the cognitive processes (mainly problem-solving) used by both high and low-performing students while debugging. Lin et al. define a beacon as a potential area in the code that might be causing the bug. More experienced programmers are faster at locating these beacons. The eye-tracking determined how the speed and accuracy of identifying beacons in both high and low-performing students. The experiment consisted of 22 male and 16 female undergraduate Computer Science students who had at least one year of experience in the C programming language. Lin et al. ultimately found that the low-performing students were aimless and could not develop a debugging plan of attack. On the other hand, high-performing students could chunk the problem and build a solid mental model of the program and where the bug could be.
The authors used a formative monitoring tool called Reflexive Weekly Monitoring (RWM) to study Software Engineering students while doing team projects to see how much students were aware of their effectiveness on the team. Using this RWM tool, the students will hopefully employ self-reflection and collaboration to see if their contributions to the team are valuable. For example, the reflection process had students question the team’s main weaknesses and answer why the team was behind schedule. The nine-semester-long study took place with a total of 205 students divided into thirty-two teams. The teams had to follow agile software development practices, which is common in the industry. The study results concluded that the use of RWM is effective and that having students engage in the cognitive processes of collaboration and self-reflection almost always leads to a more successful product. On the other hand, teams that did not use the RWM had trouble meeting deadlines and identifying the problems in the team. The article finishes with an acknowledgment that more research is to be done in this area to follow each student’s productivity closely.
The author starts by stating that humans have always learned through social interactions. They want to explore how much they can leverage that with the advances in modern technology. In Computer Science, this takes the shape of pair programming where two students sit together at one computer and work collaboratively on one problem. Pair programming can also be done synchronously online with what the author refers to as continuous screen casting. Murphy-Hill posits nine principles of effective social learning: recording efficiency, learning efficiency, privacy preservation, targeting, trust, rationale, feedback efficiency, bootstrapping, and generality. Sites like Stack Overflow and GitHub are built with social interactivity and learning at their core. There are many reasons why developers might hesitate to use new tools, but Murphy-Hill states that turning to one’s peers can help discover new tools. One developer can learn from another simply by engaging in a pair programming session with them. Engaging with peers also builds trust in the team, which can also enhance the learning experience.
Computer Science students not only need to know how to think computationally but think creatively as well. Computational thinking and creative thinking are not a dichotomy. The authors used Epstein’s Generativity Theory as a framework for the tool they developed. The framework consists of 4 dimensions:
- Broadening: One can tackle a more comprehensive array of problems if one possesses skills from many domains.
- Challenging: When solutions one is accustomed to using do not work, this enables one to develop 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 one interacts with will lead to experiencing new perspectives one may not have considered before.
- Capturing: The act of purposefully recording new solutions to problems and new skills as one learns them to use them in future situations more effectively.
The authors created Computational Creativity Exercises (CCEs) using the principles from Epstein’s Generativity Theory. For example, describe an everyday object to someone who has never heard of it (ex., mechanical pencil). Analyze the object and determine how to use it in code (i.e., class/function/variable). Reflect on the solution and determine if any functions can be abstracted to fit a more general purpose. In addition to creative and computational thinking, the CCEs 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. The authors found a significant correlation between the rate of completion of CCEs and the student’s 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.