Abstract
In the modern and digital society, the importance of software development is undeniable. Therefore, educating the next generation of software developers is crucial. However, learning how to program is challenging, and research on improving programming pedagogy is essential. Adding a laboratory component to programming courses can enhance the education. In this work, we first elicited requirements and guidelines for an introductory programming lab curriculum based on a literature review and feedback by instructors with years of experience. These included the use of (1) current and adequate tools, (2) collaborative learning environment, (3) formative assessment, (4) appropriate assignments for the target audience, (5) pedagogical innovations, and (6) to prepare students to be lifelong learners of the subject. Following, we present a curriculum for an introductory undergraduate programming lab based on the Raspberry Pi platform. It teaches students how to program following software development best practices and integrate software and hardware through a series of cyber-physical assignments, including developing a rover vehicle. We successfully piloted the curriculum with 30 students, and we present the highly positive feedback provided by them. Although the course was based on the C programming language, the underlying foundation on programming principles will allow students to apply the concepts in any language. Furthermore, this curriculum is not intended to be a one-size-fits-all approach to programming education. However, it can be a strong starting point for readers to tailor it to fit their audience, school needs, and student learning outcomes.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Anderson, J.R., Reiser, B.J.: The lisp tutor. Byte 10(4), 159–175 (1985)
Bennedsen, J., Caspersen, M.E.: Failure rates in introductory programming. AcM SIGcSE Bull. 39(2), 32–36 (2007)
Boyer, N.R., Langevin, S., Gaspar, A.: Self direction & constructivism in programming education. In: Proceedings of the 9th ACM SIGITE Conference on Information Technology Education, pp. 89–94 (2008)
Butler, M., Morgan, M., et al.: Learning challenges faced by novice programming students studying high level and low feedback concepts. In: Proceedings Ascilite Singapore, pp. 99–107 (2007)
Condori, K.O.V.: Teaching formation to develop computational thinking. In: Global Implications of Emerging Technology Trends, pp. 59–72. IGI Global (2018)
Crow, T., Luxton-Reilly, A., Wuensche, B.: Intelligent tutoring systems for programming education: a systematic review. In: Proceedings of the 20th Australasian Computing Education Conference, pp. 53–62 (2018)
Dacko, S.G.: Narrowing skill development gaps in marketing and MBA programs: the role of innovative technologies for distance learning. J. Mark. Educ. 23(3), 228–239 (2001)
Dagdilelis, V., Satratzemi, M., Evangelidis, G.: Introducing secondary education students to algorithms and programming. Educ. Inf. Technol. 9(2), 159–173 (2004)
Fischer, G., von Gudenberg, J.W.: Improving the quality of programming education by online assessment. In: Proceedings of the 4th International Symposium on Principles and Practice of programming in Java, pp. 208–211 (2006)
Ghezzi, C., Mandrioli, D.: The challenges of software engineering education. In: Inverardi, P., Jazayeri, M. (eds.) ICSE 2005. LNCS, vol. 4309, pp. 115–127. Springer, Heidelberg (2006). https://doi.org/10.1007/11949374_8
Gomes, A., Mendes, A.J.: An environment to improve programming education. In: Proceedings of the 2007 International Conference on Computer Systems and Technologies, pp. 1–6 (2007)
Gomes, A., Mendes, A.J.: Learning to program-difficulties and solutions. In: International Conference on Engineering Education-ICEE, vol. 7 (2007)
Hagan, D., Sheard, J., Macdonald, I.: Monitoring and evaluating a redesigned first year programming course. In: Proceedings of the 2nd Conference on Integrating Technology into Computer Science Education, pp. 37–39 (1997)
Knight, J.C., Prey, J.C., Wulf, W.A.: A look back: undergraduate computer science education: a new curriculum philosophy and overview. In: Proceedings Frontiers in Education 1997 27th Annual Conference. Teaching and Learning in an Era of Change, vol. 2, pp. 722–727. IEEE (1997)
Lewis, C.M.: How programming environment shapes perception, learning and goals: logo vs. scratch. In: Proceedings of the 41st ACM Technical Symposium on Computer Science Education, pp. 346–350 (2010)
Manovich, L.: Software takes command, vol. 5. A&C Black (2013)
McGonigal, J.: Reality is Broken: Why Games Make us Better and How They can Change the World. Penguin, London (2011)
Melero, J., Hern, D., Blat, J., et al.: Towards the support of scaffolding in customizable puzzle-based learning games. In: 2011 International Conference on Computational Science and Its Applications, pp. 254–257. IEEE (2011)
Moritz, S.H., Wei, F., Parvez, S.M., Blank, G.D.: From objects-first to design-first with multimedia and intelligent tutoring. ACM SIGCSE Bull. 37(3), 99–103 (2005)
Oroma, J.O., Wanga, H., Ngumbuke, F.: Challenges of teaching and learning computer programming in developing countries: Lessons from tumaini university. In: Proceedings of INTED2012 Conference, Valencia, Spain, 5th–7th March 2012 (2012)
Oyelere, S., Agbo, F., Yunusa, A., Sanusi, I., Sunday, K.: Impact of puzzlebased learning in computer science education: the case of mobileedu. In: 18th IEEE International Conference on Advanced Learning Technology (ICALT), Maceio-AL, Brazil (2019)
Reuse-Durham, N.: Peer evaluation as an active learning technique. J. Instr. Psychol. 32(4), 1–9 (2005)
Sheard, J., Simon, S., Hamilton, M., Lönnberg, J.: Analysis of research into the teaching and learning of programming. In: Proceedings of the Fifth International Workshop on Computing Education Research Workshop, pp. 93–104 (2009)
Sohn, W.: Design and evaluation of computer programming education strategy using arduino. Adv. Sci. Technol. Lett. 66(1), 73–77 (2014)
Song, J., Hahn, S., Tak, K., Kim, J.: An intelligent tutoring system for introductory c language course. Comput. Educ. 28(2), 93–102 (1997)
Sunday, K., Ocheja, P., Hussain, S., Oyelere, S., Samson, B., Agbo, F.: Analyzing student performance in programming education using classification techniques. Int. J. Emerg. Technol. Learn. (iJET) 15(2), 127–144 (2020)
Teague, D., Corney, M., Ahadi, A., Lister, R.: Swapping as the ‘hello world’ of relational reasoning: Replications, reflections and extensions. In: Proceedings of the Fourteenth Australasian Computing Education Conference (ACE2012): Conferences in Research and Practice in Information Technology, vol. 123, pp. 87–94. Australian Computer Society (2012)
Tezza, D., Garcia, S., Andujar, M.: Let’s learn! an initial guide on using drones to teach STEM for children. In: Zaphiris, P., Ioannou, A. (eds.) HCII 2020. LNCS, vol. 12206, pp. 530–543. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-50506-6_36
Wiedenbeck, S., Labelle, D., Kain, V.N.: Factors affecting course outcomes in introductory programming. In: PPIG, p. 11. Citeseer (2004)
Willert, N.: A systematic literature review of gameful feedback in computer science education. Int. J. Inf. Educ. Technol. 11(10), 464–470 (2021)
Winslow, L.E.: Programming pedagogy-a psychological overview. ACM Sigcse Bull. 28(3), 17–22 (1996)
Xia, B.S.: An in-depth analysis of teaching themes and the quality of teaching in higher education: Evidence from the programming education environments. Int. J. Teach. Learn. Higher Educ. 29(2), 245–254 (2017)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Tezza, D., Abbott, B. (2022). Teaching Programming Amid the Digital Churn: Guidelines and Curriculum for a Laboratory. In: Zaphiris, P., Ioannou, A. (eds) Learning and Collaboration Technologies. Designing the Learner and Teacher Experience. HCII 2022. Lecture Notes in Computer Science, vol 13328. Springer, Cham. https://doi.org/10.1007/978-3-031-05657-4_35
Download citation
DOI: https://doi.org/10.1007/978-3-031-05657-4_35
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-05656-7
Online ISBN: 978-3-031-05657-4
eBook Packages: Computer ScienceComputer Science (R0)