INF2-FDS: Suggestion for how to use the labs to learn
We've provided you 13 lab sessions, mostly Jupyter notebooks. Before we explain the mechanics of how to find the lab notebooks, we should start by thinking about how you'll use the labs for learning. There's considerable evidence and reasons to believe that learning is most effective when it's:
- Active
- Collaborative
(As a neuroscientist, this makes sense to David, as learning happens due to changes in the structure of our brains, particularly at synapses, the connections between nerve cells. The changes depend on activity, so the more our brains are active, the more learning there's likely to be.)
In the notebooks, we provide you with exercises to complete, which should help the learning to be active.
To make the learning collaborative, we suggest you use pair programming. You've probably used pair programming already, but if not, here's the idea:
- You take turns at being driver and navigator.
- The driver is at the keyboard; the navigator is watching the screen and making suggestions to the driver.
- Every 10 minutes, you swap places.
Pair programming is used in industry, as there's evidence to suggest that it:
- improves code quality over solo programming [1]
- reduces time spent on programming compared to solo programming [1]
- is more enjoyable [2]
There's also evidence to suggest that pair programming is beneficial to student learning, since it:
- helps you to solve problems when you get stuck
- leads to greater confidence
- talking about what you're doing can lead to understanding [3]
Of course, we shouldn't accept all of this evidence uncritically there are variations between the finding of various studies and potential publication bias [1]. The benefit of pair programming may depend on your personality and who you pair up with. But we encourage you to find out for yourself. If it doesn't work out with one coding partner, you can try finding another coding partner the next week. If it really doesn't work for you, no worries.
[1] Hannay, Jo E.; Tore Dybå; Erik Arisholm; Dag I.K. Sjøberg (July 2009). "The Effectiveness of Pair Programming: A Meta-Analysis". Information and Software Technology. 51 (7): 1110–1122. doi:10.1016/j.infsof.2009.02.001.
[2] Williams, Laurie; Kessler, Robert R.; Cunningham, Ward; Jeffries, Ron (2000). "Strengthening the case for pair programming" (PDF). IEEE Software. 17 (4): 19–25. CiteSeerX 10.1.1.33.5248. doi:10.1109/52.854064.
[3] Williams, Laurie; Upchurch, Richard L. (2001). "In support of student pair programming". ACM SIGCSE Bulletin. 33 (1): 327–31. doi:10.1145/366413.364614.