7 research outputs found

    Debugging: The Key to Unlocking the Mind of a Novice Programmer?

    Get PDF
    Novice programmers must master two skills to show lasting success: writing code and, when that fails, the ability to debug it. Instructors spend much time teaching the details of writing code but debugging gets significantly less attention. But what if teaching debugging could implicitly teach other aspects of coding better than teaching a language teaching debugging? This paper explores a new theoretical framework, the Theory of Applied Mind for Programming (TAMP), which merges dual process theory with Jerome Bruner’s theory of representations to model the mind of a programmer. TAMP looks to provide greater explanatory power in why novices struggle and suggest pedagogy to bridge gaps in learning. This paper will provide an example of this by reinterpreting debugging literature using TAMP as a theoretical guide. Incorporating new view theoretical viewpoints from old studies suggests a “debugging-first” pedagogy can supplement existing methods of teaching programming and perhaps fill some of the mental gaps TAMP suggests hamper novice programmers

    A fresh look at novice programmers' performance and their teachers' expectations

    Get PDF
    This paper describes the results of an ITiCSE working group convened in 2013 to review and revisit the influential ITiCSE 2001 McCracken working group that reported [18] on novice programmers' ability to solve a specified programming problem. Like that study, the one described here asked students to implement a simple program. Unlike the original study, students' in this study were given significant scaffolding for their efforts, including a test harness. Their knowledge of programming concepts was also assessed via a standard language-neutral survey. One of the significant findings of the original working group was that students were less successful at the programming task than their teachers expected, so in this study teachers' expectations were explicitly gathered and matched with students' performance. This study found a significant correlation between students' performance in the practical task and the survey, and a significant effect on performance in the practical task attributable to the use of the test harness. The study also found a much better correlation between teachers' expectations of their students' performance than in the 2001 working group

    Identification and Evaluation of Predictors for Learning Success and of Models for Teaching Computer Programming in Contemporary Contexts

    Get PDF
    Introductory undergraduate computer programming courses are renowned for higher than average failure and withdrawal rates when compared to other subject areas. The closer partnership between higher education and the rapidly expanding digital technology industry, as demonstrated by the establishment of new Degree Apprenticeships in computer science and digital technologies, requires efficient and effective means for teaching programming skills. This research, therefore, aimed to identify reliable predictors of success in learning programming or vulnerability to failure. The research also aimed to evaluate teaching methods and remedial interventions towards recommending a teaching model that supported and engaged learners in contemporary contexts that were relevant to the workplace. Investigation of qualifications designed to prepare students for undergraduate computer science courses revealed that A-level entrants achieved significantly higher programming grades than BTEC students. However, there was little difference between the grades of those with and those without previous qualifications in computing or ICT subjects. Analysis of engagement metrics revealed a strong correlation between extent of co-operation and programming grade, in contrast to a weak correlation between programming grade and code understanding. Further analysis of video recordings, interviews and observational records distinguished between the type of communication that helped peers comprehend tasks and concepts, and other forms of communication that were only concerned with completing tasks. Following the introduction of periodic assessment, essentially converting a single final assessment to three staged summative assessment points, it was found that failing students often pass only one of the three assignment parts. Furthermore, only 10% of those who failed overall had attempted all three assignments. Reasons for failure were attributed to ‘surface’ motivations (such as regulating efforts to achieve a minimum pass of 40%), ineffective working habits or stressful personal circumstances rather than any fundamental difficulty encountered with subject material. A key contribution to pedagogical practice made by this research is to propose an ‘incremental’ teaching model. This model is informed by educational theory and empirical evidence and comprises short cycles of three activities: presenting new topic information, tasking students with a relevant exercise and then demonstrating and discussing the exercise solution. The effectiveness of this model is evidenced by increased engagement, increased quiz scores at the end of each teaching session and increased retention of code knowledge at the end of the course

    Towards a Neuroscience of Computer Programming & Education:A thesis submitted in partial fulfilment of the requirements of the University of East Anglia for the degree of Doctor of Philosophy. Research undertaken in the School of Psychology, University of East Anglia.

    Get PDF
    Computer programming is fast becoming a required part of School curricula, but students find the topic challenging and university dropout rates are high. Observations suggest that hands-on keyboard typing improves learning, but quantitative evidence for this is lacking and the mechanisms are still unclear. Here we study neural and behavioral processes of programming in general, and Hands-on in particular. In project 1, we taught naïve teenagers programming in a classroom-like session, where one student in a pair typed code (Hands-on) while the other participated by discussion (Hands-off). They were scanned with fMRI 1-2 days later while evaluating written code, and their knowledge was tested again after a week. We find confidence and math grades to be important for learning, and easing of intrinsic inhibitions of parietal, temporal, and superior frontal activation to be a typical neural mechanism during programming, more so in stronger learners. Moreover, left inferior frontal cortex plays a central role; operculum integrates information from the dorsal and ventral streams and its intrinsic connectivity predicts confidence and long-term memory, while activity in Broca’s area also reflects deductive reasoning. Hands-on led to greater confidence and memory retention. In project 2, we investigated the impact of feedback on motivation and reaction time in a rule-switching task. We find that feedback targeting personal traits increasingly impair performance and motivation over the experiment, and we find that activity in precentral gyrus and anterior insula decrease linearly over time during the personal feedback condition, implicating these areas in this effect. These findings promote hands-on learning and emphasize possibilities for feedback interventions on motivation. Future studies should investigate interventions for increasing Need for Cognition, the relationship between computer programming and second language learning (L2), and the role of explicit verbalization of knowledge for successful coding, given the language-like processing of code

    Exploring the use of robotics in the learning of programming.

    Get PDF
    Doctoral Degree. University of KwaZulu-Natal, Durban.Computer Programming is seen as a valuable skill in the digital era that we presently live in. However, for the novice programmer, it is often accompanied with difficulties resulting in negative reactions. The dawning of the Fourth Industrial Revolution has catapulted many initiatives local and global to promote Computer Programming and Robotics. A major initiative by the South African government is the planning and implementing of a new subject in school to raise the awareness of coding at an early age. The lack of coding exposure and awareness leads to little or no interest in Computer Programming related courses after schooling years. This study focuses on exploring the learning of coding through the use of Robotics among computer registered students with no prior coding knowledge at a University in South Africa. Unlike the traditional use of block-based programming to introduce Computer Programming, which is limited to screen output, the study opted to use a physical manipulative by using a robotic element through prototype building using text-based programming, resulting in live autonomous output of code. The Arduino kit was used as the robot element to acquire knowledge development to the fundamental concepts of Computer Programming using the Python programming language. Participants' coding knowledge was assessed through a series of hands-on online activities. Design Based Research was adopted with the integration of Kolb’s Experiential Learning Cycle, framed within the second-generation Activity Theory. Mix methods were supported as it is in accordance with the pragmatic paradigm favoured by Design Based Research. All data collection took place online through workshops, surveys, questionnaires and a focus group interview. The sample size was 75 achieving a significant partial least squares structural equation model as a minimum of 50 participants was needed based on the ten times rule. The results show that students acquiring a direct learning experience with text-based code with the aid of the robotic element proved to be successful. The robot coding simplified the assimilation of text-based coding as participants could see the execution of their code on the prototype in reality. The eradication of the abstract nature of Computer Programming through Robotics as a physical manipulative solidified the understanding of coding structures. Furthermore, students' belief, interest, motivation, confidence, and Mathematics skill set were found to contribute success in Computer Programming. It was revealed that learning to code in a text-based environment can be made fun. In addition, learning programming with the use of the robot is effective for first time learning of text-based code. The researcher proposes that the introduction of learning programming integrated through the building of prototypes and coding resulting in autonomous robots enhances the learning experience of text-based code

    Efficient Use of Teaching Technologies with Programming Education

    Get PDF
    Learning and teaching programming are challenging tasks that can be facilitated by using different teaching technologies. Visualization systems are software systems that can be used to help students in forming proper mental models of executed program code. They provide different visual and textual cues that help student in abstracting the meaning of a program code or an algorithm. Students also need to constantly practice the skill of programming by implementing programming assignments. These can be automatically assessed by other computer programs but parts of the evaluation need to be assessed manually by teachers or teaching assistants.There are a lot of existing tools that provide partial solutions to the practical problems of programming courses: visualizing program code, assessing student programming submissions automatically or rubrics that help keeping manual assessment consistent. Taking these tools into use is not straightforward. To succeed, the teacher needs to find the suitable tools and properly integrate them into the course infrastructure supporting the whole learning process. As many programming courses are mass courses, it is a constant struggle between providing sufficient personal guidance and feedback while retaining a reasonable workload for the teacher.This work answers to the question "How can the teaching of programming be effectively assisted using teaching technologies?" As a solution, different learning taxonomies are presented from Computer Science perspective and applied to visualization examples so the examples could be used to better support deeper knowledge and the whole learning process within a programming course. Then, different parts of the assessment process of programming assignments are studied to find the best practices in supporting the process, especially when multiple graders are being used, to maintain objectivity, consistency and reasonable workload in the grading.The results of the work show that teaching technologies can be a valuable aid for the teacher to support the learning process of the students and to help in the practical organization of the course without hindering the learning results or personalized feedback the students receive from their assignments. This thesis presents new visualization categories that allow deeper cognitive development and examples on how to integrate them efficiently into the course infrastructure. This thesis also presents a survey of computer-assisted assessment tools and assessable features for teachers to use in their programming assignments. Finally, the concept of rubric-based assessment tools is introduced to facilitate the manual assessment part of programming assignments
    corecore