40 research outputs found

    Students’ mental models of references in Python

    Get PDF
    This paper reports on a study exploring students’ understanding of references and reference assignments. Students in an introductory programming course in Python were interviewed with respect to what happens during execution of reference assignment statements and function calls involving references. Previous research on Java hasidentified two types of mental models related to reference assignment, which in this paper is referred to as the “Copy value model” and the “Copy reference model”.An important result in this paper is that each of these models can be divided into two sub-models, giving a total of four different models where only one of them is valid. In addition, we have identified three types of mental models related to references in function calls. This gives valuable insight into students’ thinking, which can then be addressed by teachers both in class and in formative assessments. Furthermore, students in two introductory courses were asked to participate in a survey with multiple choice questions asking the students to identify the correct results of executing code examples involving references. The patterns of answers were analyzed based on the mental models identified in interviews. It was found that the identified mental models explained the most common patterns in the student responses

    Student-led success: Improving attendance and learning at Fourth Hour review sessions

    Get PDF
    This research continues the work of Gilbert et al. [1] by translating the “Fourth Hour” review session materials from Java to Python, keeping the focus on common misconceptions in the literature, continuing to use Peer Instruction (PI), and addressing two issues in the previous study: low attendance and short-term learning outcomes during the session. [2] The “Fourth Hour” is a review session designed to support students taking CS1 who may have missed class or need to review the previous week’s material. This review session is an hour long and is offered twice a week with the same material so more students can fit it into their schedules. In Gilbert et al’s study, attendance was too low for the results to be statistically significant. This new study attempts to address this issue by implementing in-class weekly assessments with retakes that will be used to improve attendance. This study also measures learning gains during the session by measuring the accuracy of the responses to the given PI questions to determine whether students who attend are actually learning the material being presented

    Analyzing motivation and sense of belonging belonging in CS1 review sessions

    Get PDF
    The Computer Science Department at James Madison University has a Teaching Assistant program which aims to help students succeed in early-level Computer Science courses. Part of this program is a review session, the Fourth Hour, which provides students extra help on the concepts taught each week in class. Historically, attendance at this review session has been low. Because of this, the study aimed to increase attendance by motivating students through interventions, primarily offering quiz retakes to students who attended. Additionally, this study looked at the reported sense of belonging for participants who attended. We made three conclusions from survey data we collected. First, giving students incentives in the form of quiz retakes notably increased attendance. Second, students who did not attend the Fourth Hour had a greater sense of belonging, likely because many of them were not struggling. Third, the primary reason students reported not attending is that they did not see value in attending, possibly because they have a greater sense of belonging than students who attended

    Comparing Small Programs for Equivalence: A Code Comprehension Task for Novice Programmers

    Get PDF
    Novice programmers should develop program comprehension skills as they learn to code so that they are able both to read and reason about code created by others, and to reflect on their code when writing, debugging or extending it. This work takes a little-explored perspective on the comprehension of small programs by asking students to decide if two code segments are equivalent or not in terms of carrying out the same computation. A variation of Euclid's algorithm, that extends the greatest common divisor calculation to more than two numbers, was chosen for this work, as it has an adequate level of complexity and its semantics are not obvious. Four program transformations of the original code were developed: two transformations were equivalent and two were not. 73.5% of students were able to identify correctly the four options and 75.5% provided good insights on the equivalent program flow to justify their choices. The overall task has a SOLO mean of 3.19, which indicates code equivalence is a suitable and approachable task to analyse program execution at novice level. In addition, the data analysis suggests that students' code-reading abilities beyond basic tracing may be generally underestimated and we should investigate how to bridge the potential gap between reasoning about program execution and extracting its purpose

    Semi-automatic assessment approach to programming code for novice students

    Get PDF
    Programming languages have been an integral element of the taught skills of many technical subjects in Higher Education for the last half century. Moreover, secondary school students have also recently started learning programming languages. This increase in the number of students learning programming languages makes the efficient and effective assessment of student work more important. This research focuses on one key approach to assessment using technology: the semi-automated marking of novice students’ program code. The open-ended, flexible nature of programming ensures that no two significant pieces of code are likely to be the same. However, it has been observed that there are a number of common code fragments within these dissimilar solutions. This observation forms the basis of our proposed approach. The initial research focuses on the ‘if’ structure to evaluate the theory behind the approach taken, which is appropriate given its commonality across programming languages. The paper also discusses the results of real world analysis of novice students’ programming code on ‘if’ structures. The paper concludes that the approach taken could form a more effective and efficient method for the assessment of student coding assignments

    High-school students' mastery of basic flow-control constructs through the lens of reversibility

    Get PDF
    High-school students specialising in computing fields need to develop the abstraction skills required to understand and create programs. Novices' difficulties at high-school level, ranging from mastery of the "notional machine"to recognition of a program's purpose, have not been investigated as extensively as at tertiary level. This work explores high-school students' code comprehension by asking to reason about reversing conditional and iteration constructs. A sample of 205 K11 - 13 students from different institutions were asked to engage in a set of "reversibility tasklets". For each code fragment, they need to identify if its computation is reversible and either provide the code to reverse or an example of a value that cannot be reversed. For 4 such items, after extracting the recurrent patterns in students' answers, we have carried out an analysis within the framework of the SOLO taxonomy. Overall, 74% of answers correctly identified if the code was reversible but only 42% could provide the full explanation/code. The rate of relational answers varies from 51% down to 21%, the poorest performance arising for a small array-processing loop (and although 65% of the subjects had correctly identified the loop as reversible). The instruction level did not have a strong impact on performance, indicating such tasks are suitable for K11, when the basic flow-control constructs are usually introduced. In particular, the reversibility concept could be a useful pedagogical instrument both to assess and to help develop students' program comprehension
    corecore