3,200 research outputs found

    An Exploration of Novice Programmers' Comprehension of Conditionals in Imperative and Functional Programming

    Get PDF
    2Students of introductory programming courses are expected to develop higher-order thinking skills to inspect, understand and modify code. However, although novices can correctly write small programs, they appear to lack a more abstract, comprehensive grasp of basic constructs, such as conceiving the overall effect of alternative conditional flows. This work takes a little-explored perspective on the comprehension of tiny programs by asking students to reason about reversing conditionals in either an imperative or a functional context. More specifically, besides deciding if the given constructs can be reversed, students had to justify their choice by writing a reversing program or by providing suitable counterexamples. The students’ answers to four reversibility questions have been analysed through the lens of the SOLO taxonomy. 45% of students correctly identified the reversibility for the four code items; furthermore, more than 50% of each cohort were able to provide correct justifications for at least three of their four answers. Most incorrect answers were due to failures to consider border cases or to edit the conditional expressions appropriately to reverse the construct. Differences in comprehension between functional and imperative languages are explored indicating the explicit else paths of the functional examples facilitate comprehension compared with the implicit else (no update) of its imperative counterpart.partially_openopenMirolo, Claudio; Izu, CruzMirolo, Claudio; Izu, Cru

    Driving learning via criterion-referenced assessment using Bloom’s Taxonomy

    Get PDF
    In this paper we describe our use of the criterion-referenced approach to assessment, where the criteria are based upon Bloom’s taxonomy. In our Bloom-based assessments scheme, all students in the class must satisfactorily complete a set of assessment tasks designed to demonstrate competence at the Knowledge and Comprehension levels of Bloom’s taxonomy. Any student who is content with the minimal passing grade need not complete any more assessment items. Other students, who elect to seek a higher grade, must also complete assessment tasks at the Application and Analysis levels of Bloom’s taxonomy. Student’s who satisfactorily complete these tasks, and stop at this point, attain one of the two middle passing grades. Finally, students who elect to seek the highest grade must go on to satisfactorily complete further assessment tasks, at the “Synthesis” and “Evaluation” levels of Bloom’s taxonomy. Each student is free to decide for him/herself what grade they will try to achieve. They are also free to approach the lecturer for advice, but in practise few do so. We have applied this assessment system in seven semesters of teaching, five semesters of teaching introductory programming, and two semesters of teaching introductory databases. After we had used this assessment system for a single semester, to teach introductory programming, we published descriptions of this assessment approach (Lister and Leaney 2003a, 2003b). This paper differs from those earlier papers in two ways. First, the earlier papers were aimed at members of the information technology community, and those teaching programming in particular, whereas this paper summarises the broad structure of the assessment scheme in way that is accessible to academics in non-computing disciplines. Second, this paper benefits from six more semesters of experience with this approach to assessment

    Performance and Consistency in Learning to Program

    Get PDF
    Performance and consistency play a large role in learning. Decreasing the effort that one invests into course work may have short-term benefits such as reduced stress. However, as courses progress, neglected work accumulates and may cause challenges with learning the course content at hand. In this work, we analyze students' performance and consistency with programming assignments in an introductory programming course. We study how performance, when measured through progress in course assignments, evolves throughout the course, study weekly fluctuations in students' work consistency, and contrast this with students' performance in the course final exam. Our results indicate that whilst fluctuations in students' weekly performance do not distinguish poor performing students from well performing students with a high accuracy, more accurate results can be achieved when focusing on the performance of students on individual assignments which could be used for identifying struggling students who are at risk of dropping out of their studies.Peer reviewe

    PROGOSS: Mastering the curriculum

    Get PDF
    In education, we need to design effective degree programs of study that meet authoritative curricula guidelines. This is challenging because of the size of the curriculum and complexity of degree program structures. When dealing with data of this size and complexity, traditional spreadsheets are a clumsy way of storing the data. A database is a better option, especially when the database is accessible over the web. We created ProGoSs to effectively tackle this complexity. ProGoSs is a web-based system that maps curricula learning goals and mastery levels to individual assessment tasks across entire degree programs. ProGoSs enables academics to answer important questions such as: Does our degree teach the essential core defined in a recommended curriculum? Where in our degree are particular parts of the recommended curriculum taught? Does our degree ensure a solid progression in building skills? Where and how do we assess the learning achieved by bare-pass students on particular parts of the recommended curriculum? We present the design and implementation of ProGoSs and report on its evaluation by mapping multiple programming subjects from multiple universities to the ACM/IEEE Computing Science 2013 topics and learning objectives. This includes a mapping to various levels of Bloom’s Taxonomy

    Exploring Machine Learning Methods to Automatically Identify Students in Need of Assistance

    Get PDF
    ABSTRACT Methods for automatically identifying students in need of assistance have been studied for decades. Initially, the work was based on somewhat static factors such as students' educational background and results from various questionnaires, while more recently, constantly accumulating data such as progress with course assignments and behavior in lectures has gained attention. We contribute to this work with results on early detection of students in need of assistance, and provide a starting point for using machine learning techniques on naturally accumulating programming process data. When combining source code snapshot data that is recorded from students' programming process with machine learning methods, we are able to detect high-and low-performing students with high accuracy already after the very first week of an introductory programming course. Comparison of our results to the prominent methods for predicting students' performance using source code snapshot data is also provided. This early information on students' performance is beneficial from multiple viewpoints. Instructors can target their guidance to struggling students early on, and provide more challenging assignments for high-performing students. Moreover, students that perform poorly in the introductory programming course, but who nevertheless pass, can be monitored more closely in their future studies

    Going SOLO to assess novice programmers

    Full text link
    This paper explores the programming knowledge of novices using Biggs' SOLO taxonomy. It builds on previous work of Lister et al. (2006) and addresses some of the criticisms of that work. The research was conducted by studying the exam scripts for 120 introductory programming students, in which three specific questions were analyzed using the SOLO taxonomy. The study reports the following four findings: when the instruction to students used by Lister et al. - "In plain English, explain what the following segment of Java code does" - is replaced with a less ambiguous instruction, many students still provide multistructural responses; students are relatively consistent in the SOLO level of their answers; student responses on SOLO reading tasks correlate positively with performance on writing tasks; postgraduates students manifest a higher level of thinking than undergraduates. Copyright 2008 ACM

    Improving the Computational Thinking Pedagogical Capabilities of School Teachers

    Get PDF
    The idea of computational thinking as skills and universal competence which every child should possess emerged last decade and has been gaining traction ever since. This raises a number of questions, including how to integrate computational thinking into the curriculum, whether teachers have computational thinking pedagogical capabilities to teach children, and the important professional development and training areas for teachers. The aim of this paper is to address the strategic issues by illustrating a series of computational thinking workshops for Foundation to Year 8 teachers held at an Australian university. Data indicated that teachers\u27 computational thinking understanding, pedagogical capabilities, technological know-how and confidence can be improved in a relatively short period of time through targeted professional learning

    Fostering Program Comprehension in Novice Programmers - Learning Activities and Learning Trajectories

    Get PDF
    This working group asserts that Program Comprehension (ProgComp) plays a critical part in the process of writing programs. For example, this paper is written from a basic draft that was edited and revised until it clearly presented our idea. Similarly, a program is written incrementally, with each step tested, debugged and extended until the program achieves its goal. 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. To foster such competencies our group identified two main goals: (g1) to collect and define learning activities that explicitly address key components of program comprehension and (g2) to define tentative theoretical learning trajectories that will guide teachers as they select and sequence those learning activities in their CS0/CS1/CS2 or K-12 courses. The WG has completed the first goal and laid down a strong foundation towards the second goal as presented in this report. After a thorough literature review, a detailed description of the Block Model is provided, as this model has been used with a dual purpose, to classify and present an extensive list of ProgComp tasks, and to describe a possible learning trajectory for a complex task, covering different cells of the Block Model matrix. The latter is intended to help instructors to decompose complex tasks and identify which aspects of ProgComp are being fostered

    Introductory programming: a systematic literature review

    Get PDF
    As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming. This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research
    • 

    corecore