An Investigation of High School Students’ Errors in Introductory Programming: A Data-Driven Approach
This study implemented a data-driven approach to identify Chinese high school students’ common errors in a Java-based introductory programming course using the data in an automated assessment tool called the Mulberry. Students’ error-related behaviors were also analyzed, and their relationships to success in introductory programming were investigated. This study identified 15 common compilation errors and 6 common test errors. The results showed that these common errors accounted for a large proportion of all errors, so identifying the common errors is important to help students succeed in introductory programming courses. Based on these common errors, five underlying student difficulties were identified and are discussed. In addition, after analyzing existing measures of students’ error-related behaviors, we developed a measure called improvement rate to quantify students’ success in fixing errors. The results of our study suggest that students’ competence of improving code is important to their success in introductory programming. We recommend researchers design and develop automated assessment tools that provide feedback messages for common student errors and instructors who explicitly teach knowledge and skills of improving code in class.
- Research Article
9
- 10.1080/15391523.2020.1865220
- Dec 18, 2020
- Journal of Research on Technology in Education
This study investigated common student errors and underlying difficulties of two groups of Chinese middle school students in an introductory Python programming course using data in the automated assessment tool (AAT) Mulberry. One group of students was from a typical middle school while the other group was from a high-ability middle school. By analyzing 8030 erroneous student programs, we identified 12 common errors of the two groups. Further analysis indicated that the two groups had similarities and differences in the difficulties of learning to program. Our findings suggest that using AATs can effectively help teachers understand student difficulties in introductory programming.
- Research Article
25
- 10.1002/cae.22570
- Sep 21, 2022
- Computer Applications in Engineering Education
Programming is one of the most fundamental initial skills for engineering students. Institutions that offer engineering courses have the challenge of deciding how to deliver this subject since it requires unique thinking from students. This paper addresses the impact of adopting C and Python programming languages in introductory programming courses for engineering students. A case study was conducted in the university's introductory programming course, analyzing student data. This approach divides the students into two groups according to the programming language: C and Python. Data were gathered and analyzed about their learning experiences through questionnaires, assignment scores, and students' questions posted in the class online forums. The experiment was repeated in two consecutive semesters. The main results favor Python regarding learning confidence, motivation, and general programming design decisions while favoring C for the easiness of learning data structures. This study may be helpful for institutions considering designing a new introductory programming course or redesigning existing ones.
- Research Article
36
- 10.1177/2158244019885136
- Oct 1, 2019
- Sage Open
With the expansion of computer science (CS) education, CS teachers in K-12 schools should be cognizant of student misconceptions and be prepared to help students establish accurate understanding of computer science and programming. Digital tools, such as automated assessment systems, can be useful and supportive in teaching CS courses. This two-stage design-based research (DBR) study investigated the effects of targeted feedback in an automated assessment system for addressing common misconceptions of high school students in a Java-based introductory programming course. Based on students’ common errors and underlying misconceptions, targeted feedback messages were designed and provided for students. The quantitative analysis found that with targeted feedback students were more likely to correct the errors in their code. The qualitative analysis of students’ solutions revealed that when improving the code, students receiving feedback made fewer intermediate incorrect solutions. In other words, the targeted feedback messages may help to promote conceptual change and facilitate learning. Although the findings of this exploratory study showed evidence of the power of digital tools, more research is needed to make technology benefit more CS teachers.
- Conference Article
5
- 10.1109/isecon.2017.7910246
- Jan 1, 2017
STEAM-based courses are increasingly becoming popular in introductory programming courses but not many of these efforts focus on non-major undergraduate students and less is known about its effectiveness with career-bound students at the collegiate level. This paper describes our results and the lessons learned in teaching and implementing an EarSketch based introductory programming course for non-majors. EarSketch is a computational music learning platform that has been used successfully at the high-school level to introduce students to programming. We have adapted the EarSketch curriculum to satisfy the requirements of an undergraduate level introductory programming course. We have deployed the curriculum at Georgia Gwinnett College starting in Spring 2016 with the goal of observing improvements in content knowledge and attitudes towards computing. We have observed statistically significant improvements in the sections using EarSketch. Although more data is required to confirm our results, we argue that the EarSketch based curriculum engages students positively in the field of computing.
- Research Article
1
- 10.5485/tmcs.2020.0470
- Oct 1, 2020
- Teaching Mathematics and Computer Science
We present the results of surveys and curricular research on introductory computer programming courses that are required or recommended for mathematics degrees at U.S. colleges and universities. Our target schools were those with populations between 5,000 and 20,000 undergraduate students. A key result is a synopsis of programming languages in use in these introductory courses with Java, Python and C + + holding the top three spots. We found that 85% of the 340 schools in our pool require or recommend an introductory programming course as a component of a mathematics degree. Furthermore, most of these introductory programming courses are taught by faculty outside of the mathematics department. These results indicate that mathematics faculty value computer programming and should be actively involved in setting learning outcomes, incorporating skills and concepts learned in introductory programming courses into subsequent mathematics courses, and determining programming languages in use.
 Subject Classification: 97D30, 97P20, 97P40
- Conference Article
7
- 10.1109/isecon.2016.7457514
- Mar 1, 2016
Introductory computer programming courses can be dry, with bored students often working on short, straightforward examples designed as programming drills, the results of which only their professors will ever see and which the students might not appreciate in a broader context. In college engineering programs, students spend much of their time developing their Science, Technology, Engineering, and Mathematics skills, but when they graduate and start their work in the engineering industry they can be ill-equipped to communicate their ideas with other engineers, managers, and clients. The need to develop engineering students' communication skills has come up many times in discussion with industry representatives and at engineering education conferences. High school students, meanwhile, are usually focused on getting through high school and may have no idea what is expected of them when they enter college, which is a problem that the professors at Queensborough Community College have to face with each new group of students. In this work-in-progress paper I will describe why and how I have used the high-impact practice of service learning to help students reduce these deficits. I will describe the strategy I use of having the students in my introductory programming course solve word problems that require more thought in order to be solved. My students then present them as group projects to high school students in the final class session of the semester. The two groups of students then discuss the presentations and the college experience in general. This provides an engaging and memorable experience for all. This paper will describe successes and issues I have had since I started to use this method in the course.
- Research Article
19
- 10.28945/3793
- Jan 1, 2017
- Journal of Information Technology Education: Research
Aim/Purpose: This study introduced a new teaching and learning approach based on an ADRI (Approach, Deployment, Result, Improvement) model in an introductory programming (IP) course. The effectiveness of the new teaching and learning process was determined by collecting feedback from the IP instructors and by analyzing the final exam grades of the course. Background: Learning to program is considered a difficult and challenging task for a considerable number of novice programmers. As a result, high failure and dropout rates are often reported in IP courses. Different studies have been conducted to investigate the issue. One of the reasons for this challenge is the multiple skills that students have to master in order to be able to build programs. These skills include programming knowledge and problem-solving strategies and being able to pay equal attention to these required skills in the IP course. Methodology: A focus group was conducted to obtain feedback from the IP instructors about the ADRI approach. The performance of the students who had completed the IP course before ADRI was compared with those who used the ADRI approach by undertaking a comparative analysis of their final exam grades. Contribution: The study demonstrates that the new teaching and learning approach based on the ADRI model encourages students to pay equal attention to programming knowledge and problem-solving strategies, discouraging programming shortcuts and reducing high attrition rates (failure and dropout) in the IP course. Findings: The results of the focus group show that the instructors preferred the ADRI approach compared to the traditional approach. The final exam grades show that the students performed better in semesters which offered the ADRI approach as compared to those semesters without this approach. Future Research: Future research will explore the ADRI approach in other fields of computer science studies, such as database and data structure, to determine if its impact has a wider application than just teaching introductory programming.
- Conference Article
153
- 10.1145/1288580.1288595
- Sep 15, 2007
We present a brief overview of a model for the human cognitive architecture and three learning theories based on this model: cognitive load theory, cognitive apprenticeship, and worked examples (a key area of cognitive skill acquisition). Based on this brief overview we argue how an introductory object-oriented programming course is designed according to results of cognitive science and educational psychology in general and cognitive load theory and cognitive skill acquisition in particular; the principal techniques applied are: worked examples, scaffolding, faded guidance, cognitive apprenticeship, and emphasis of patterns to aid schema creation and improve learning. As part of the presentation of the course, we provide a characterization of model-driven programming---the approach we have adopted in the introductory programming course. The result is an introductory programming course emphasizing a pattern-based approach to programming and schema acquisition in order to improve learning.
- Conference Article
21
- 10.1145/2960310.2960330
- Aug 25, 2016
A recent study about the effectiveness of subgoal labeling in an introductory computer science programming course both supported previous research and produced some puzzling results. In this study, we replicate the experiment with a different student population to determine if the results are repeatable. We also gave the experimental task to students in a follow-on course to explore if they had indeed mastered the programming concept. We found that the previous puzzling results were repeated. In addition, for the novice programmers, we found a statistically significant difference in performance based on whether the student had previous programming courses in high school. However, this performance difference disappears in a follow-on course after all students have taken an introductory computer science programming course. The results of this study have implications for how quickly students are evaluated for mastery of knowledge and how we group students in introductory programming courses.
- Conference Article
9
- 10.1145/2538862.2544292
- Mar 5, 2014
At our university, like at many other institutions, the pass rate in the introductory programming (CS1) course is relatively low, in the approximate range of 50% to 75%. We would like to discover factors that have an impact on student success in introductory programming in order to better advise and place our students into the course at the appropriate point in their academic careers. Our main motivation for increasing the CS1 pass rate is to help our students graduate on time. It has long been thought that mathematics background is a factor in determining a student's success in introductory computer science courses. Currently, our students must be concurrently enrolled in college algebra or placed into a higher mathematics course. However, given our current low pass rate, we wonder whether this is the proper prerequisite. In order to gather information about mathematics background, we administered a questionnaire to the students enrolled in the class during Spring 2013. We then analyzed the pass rate of our introductory programming students in relation to their mathematics background. Our findings indicate that students who are prepared to take calculus I in the same semester as they take introductory programming were more likely to pass introductory programming. These findings suggest that changing our math prerequisite to pre-calculus may increase the pass rate in our introductory programming course.
- Conference Article
4
- 10.1145/3409334.3452060
- Apr 15, 2021
Various Learning Engagement Strategies (LESs) have been used in CS education to motivate students and facilitate learning. More recently, LESs are being used to support programming pedagogy. Therefore, investigating the influence that the multiple attributes of LESs used as instruction interventions have on students' academic performance is a fertile educational research area. For the past few years, a group of CSEd researchers across three different U.S. institutions have been using a cyberlearning environment (incorporating LESs) to promote student learning and engagement in introductory programming courses. While there have been researches on independent studies on particular LES, the current paper is a meta-analysis of the effectiveness of various combinations of Learning Engagement Strategies (LESs) across different student groups using a series of studies conducted across these three separate institutions over a period of time. Specifically, we investigate the impact of different combinations of LESs such as collaborative learning (CL), gamification (G), and social interaction (SI) embedded in a cyberlearning environment on student understanding of programming concepts in an introductory programming course. In terms of findings that can be generalized across institutions and students, we found that using LESs had a positive impact on student engagement and learning especially when using SI and G in combination.
- Conference Article
5
- 10.1109/fie.2005.1612093
- Oct 19, 2005
California State University Monterey Bay (CSUMB) uses an outcomes-based delivery philosophy and focuses on measurable student learning. Because of the required outcome it was determined that the students needed more scaffolding or metacognitive support than is typically afforded in the introductory programming courses. The students were simply not capable of making the jump from simple programming concepts to being able to deliver a satisfactory completed portfolio piece. This paper reports on a study that investigated use of pair programming as a delivery methodology for an introductory Java programming course
- Dissertation
- 10.26686/wgtn.17014580.v1
- Jan 1, 2016
<p>High attrition and failure rates are a common phenomenon in introductory programming courses and are a major concern since course instructors are not able to successfully teach novice programmers the fundamental concepts of computer programming and equip them with skills to code solutions to programming problems. Existing solutions that attempt to minimise the high failure and attrition rates have had little impact on improving the performance of the novice programmers. However, the behaviour of the novice programmer has received little attention from introductory programming course instructors although the literature on learning theory suggests that self-efficacy and engagement are two behavioural factors that affect a student’s performance. This study fills the gap in existing research by examining the effect of programming self-efficacy on the engagement of novice programmers, and the effect of their engagement on their programming performance. A research model that proposes a link between programming self-efficacy and the indicators of engagement that are specific to the context of introductory programming courses, and a link between the indicators of engagement to the programming performance of the novice programmer was developed. A three-phased mixed methods approach which consists of two survey questionnaires and focus groups was used to validate the research model. Data was collected in New Zealand and in Malaysia with 433 novice programmers participating in the survey questionnaires while 4 focus groups were held to refine and validate the indicators of engagement in introductory programming courses. The findings of the focus groups confirmed that participation, help-seeking, persistence, effort, deep learning, surface learning, trial and error, interest, and enjoyment were indicators of engagement while gratification emerged as a new indicator of engagement in introductory programming courses. The data from the survey questionnaires were analysed using Partial Least Squares Structural Equation Modeling (PLS-SEM). This study found that the programming self-efficacy beliefs of novice programmers had a strong influence on their engagement behaviour with the exception of help-seeking, while effort, enjoyment, deep learning, and surface learning were predictors of programming performance. These findings have implications for introductory programming course instructors and the recommendations emerging from this study include making clear behavioural expectations, designing courses which stimulate and support effective behaviour, and making novice programmers aware of the engagement behaviour that does not lead to better programming performance. This study contributes to the theory of teaching computer programming, and to the practice of designing and delivering introductory programming courses.</p>
- Dissertation
1
- 10.26686/wgtn.17014580
- Jan 1, 2016
<p>High attrition and failure rates are a common phenomenon in introductory programming courses and are a major concern since course instructors are not able to successfully teach novice programmers the fundamental concepts of computer programming and equip them with skills to code solutions to programming problems. Existing solutions that attempt to minimise the high failure and attrition rates have had little impact on improving the performance of the novice programmers. However, the behaviour of the novice programmer has received little attention from introductory programming course instructors although the literature on learning theory suggests that self-efficacy and engagement are two behavioural factors that affect a student’s performance. This study fills the gap in existing research by examining the effect of programming self-efficacy on the engagement of novice programmers, and the effect of their engagement on their programming performance. A research model that proposes a link between programming self-efficacy and the indicators of engagement that are specific to the context of introductory programming courses, and a link between the indicators of engagement to the programming performance of the novice programmer was developed. A three-phased mixed methods approach which consists of two survey questionnaires and focus groups was used to validate the research model. Data was collected in New Zealand and in Malaysia with 433 novice programmers participating in the survey questionnaires while 4 focus groups were held to refine and validate the indicators of engagement in introductory programming courses. The findings of the focus groups confirmed that participation, help-seeking, persistence, effort, deep learning, surface learning, trial and error, interest, and enjoyment were indicators of engagement while gratification emerged as a new indicator of engagement in introductory programming courses. The data from the survey questionnaires were analysed using Partial Least Squares Structural Equation Modeling (PLS-SEM). This study found that the programming self-efficacy beliefs of novice programmers had a strong influence on their engagement behaviour with the exception of help-seeking, while effort, enjoyment, deep learning, and surface learning were predictors of programming performance. These findings have implications for introductory programming course instructors and the recommendations emerging from this study include making clear behavioural expectations, designing courses which stimulate and support effective behaviour, and making novice programmers aware of the engagement behaviour that does not lead to better programming performance. This study contributes to the theory of teaching computer programming, and to the practice of designing and delivering introductory programming courses.</p>
- Conference Article
17
- 10.1109/ithet.2006.339788
- Jul 1, 2006
The higher incidence of under-prepared students in the South African education institutions has a particular significance for introductory programming courses which rely heavily on the use of technological tools as components of the teaching model. Difficulties experienced by novice programmers in introductory programming courses include deficiencies in problem-solving strategies, misconceptions relating to programming language constructs and the use of traditional programming environments. An introductory programming course should offer students problem solving analysis and design experience as well as exposure to the basic ideas of algorithmic thinking. Generally, introductory programming courses tend to concentrate on the syntax of a programming language at the expense of developing problem solving skills. Coupled to this are the ever-increasing complexity of modern programming languages and the user interfaces of their IDEs. A strategy that addresses the difficulties experienced by novice programmers in introductory programming courses is one that modifies the teaching model, specifically within the context of technological support. One way of implementing this strategy is with the use of visual programming languages, of which the iconic flowchart approach is one. Further, iconic programming environments traditionally attempt to simplify the programming task by reducing the level of precision and manual typing usually required in the conventional textual programming languages. These environments also attempt to increase the speed at which problem-solving and implementation efforts occur. Consequently, B# was developed in order to provide an environment in which programs can be developed using iconic flowcharts. Basic programming concepts such as assignments, conditions, loops, inputs and outputs are supported. Automatic code generation, debugging and program execution is also supported by the system. This paper reports on the development of B#, focusing on insights that were obtained concerning iconic programming tools. The use of B# by novice programmers in an introductory programming course is discussed and assessed. Recommendations are made as to how an iconic programming environment like B# could contribute to the successful completion of an introductory programming course