Smartphones are engaging and powerful devices which provide opportunities for ubiquitous learning. My PhD research project focuses on developing learning activities for programming in a smartphone application. I present PyKinetic–a mobile tutor for learning Python programming targeted at introductory programming students. The project is interdisciplinary as it uses foundational principles from several disciplines: computer science education, educational psychology, human computer interaction, and software engineering. This work is in the field of computer science education, as I developed and designed activities and strategies for learning programming in a mobile tutor. I achieved this by applying some theories from educational psychology and human computer interaction, and finally, I built PyKinetic from null and developed it with the guidance of basic software engineering principles.
This research is aimed at teaching Python programming because it is one of the most popular languages used to teach introductory programming. There are several educational systems that are successful in teaching programming. However, my research aims to bridge the gap by exploring a rather uncharted territory in teaching programming – specifically by using smartphone devices. The aim of my project is to design effective learning activities in a mobile tutor to enhance specific coding skills (code debugging and code writing). Another goal is to find direct associations between my designed activities to selectively target certain programming skills. Towards building an effective mobile tutor, another goal is to develop a novel framework for pedagogically effective programming activities, and to design activities and strategies based on that framework. The main contribution of my research includes authoring the content for PyKinetic, designing, and implementing a mobile tutor effective for enhancing Python programming skills.
The results of my studies revealed that introductory programming students enjoy learning programming via smartphones. More importantly, majority of my participants improved their coding skills when using PyKinetic even when they only used it for a short session. I also discovered that certain activities are more beneficial for students with lower prior knowledge, while other activities are more suitable for those with higher prior knowledge. Furthermore, I found benefits for combining programming tasks of different nature, and that it gives learners the opportunity to learn multiple coding skills within one learning encounter. I also found evidence of the hierarchy of coding skills in learning programming, which was astoundingly diverse when students with different knowledge levels were compared. Lastly, I found evidence that a mobile programming tutor is more effective with adaptive problem selection