How Computer Science Students Learn

Murphy-Hill (2014) 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 problem-solve collaboratively. This can also be done synchronously online with what the author refers to as continuous screencasting. Murphy-Hill (2014) 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 (2014) states that the discoverability of new tools and how to use those tools can be solved by turning to one’s peers.

One developer can learn from another simply by engaging in a pair programming session with them [@murphy-hill2014; @fitzgerald2010#p. 395]. By having to explain their thought process out loud to their peer, they are forced to create a mental trace model of how the code is being executed. This will also expose the student to a variety of approaches. This collaboration also builds trust in the team which can lead to enhancing the learning experience. The students would work individually on a program and then collaborate with peers to identify potential bugs before executing the program. Then they would work together to solve any bugs after the program execution [@chmiel2004#p. 18].

Marques et al. (2018) also studied the effects of collaboration on Software Engineering students. They used a formative monitoring tool called Reflexive Weekly Monitoring (RWM) while doing team projects to see how much students were aware of their effectiveness on the team. By using this RWM tool, the authors hoped that the students would employ self-reflective and collaborative practices to monitor if their contributions to the team were valuable. The reflection process had students question the team’s main weaknesses and had them come up with answers to 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 results of the study 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 end product. Teams that did not use the RWM had trouble meetings deadlines and identifying what the problems were in the team. Marques et al. (2018) finish the article with an acknowledgment that more research is to be done in this area to more closely follow the individual productivity of each student.

References

  1. chmiel2004
  2. fitzgerald2010
  3. marques2018
  4. murphy-hill2014
Marques, M., Ochoa, S. F., Bastarrica, M. C., & Gutierrez, F. J. (2018). Enhancing the student learning experience in software engineering project courses. IEEE Transactions on Education, 61(1), 63–73. https://doi.org/10.1109/TE.2017.2742989
Murphy-Hill, E. (2014). The future of social learning in software engineering. Computer, 47(1), 48–54. https://doi.org/10.1109/MC.2013.406