44 research outputs found

    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

    Computer Science Concept Inventories: Past and Future

    Get PDF
    Concept Inventories (CIs) are assessments designed to measure student learning of core concepts. CIs have become well known for their major impact on pedagogical techniques in other sciences, especially physics. Presently, there are no widely used, validated CIs for computer science. However, considerable groundwork has been performed in the form of identifying core concepts, analyzing student misconceptions, and developing CI assessment questions. Although much of the work has been focused on CS1 and a CI has been developed for digital logic, some preliminary work on CIs is underway for other courses. This literature review examines CI work in other STEM disciplines, discusses the preliminary development of CIs in computer science, and outlines related research in computer science education that contributes to CI development

    Computer Science Concept Inventories: Past and Future

    Get PDF
    Concept Inventories (CIs) are assessments designed to measure student learning of core concepts. CIs have become well known for their major impact on pedagogical techniques in other sciences, especially physics. Presently, there are no widely used, validated CIs for computer science. However, considerable groundwork has been performed in the form of identifying core concepts, analyzing student misconceptions, and developing CI assessment questions. Although much of the work has been focused on CS1 and a CI has been developed for digital logic, some preliminary work on CIs is underway for other courses. This literature review examines CI work in other STEM disciplines, discusses the preliminary development of CIs in computer science, and outlines related research in computer science education that contributes to CI development

    Development and Application of a Rasch Model Measure of Student Competency in University Introductory Computer Programming

    Get PDF
    University computer programming instruction nomenclature commonly uses the term Computer Science 1 (CS1) to describe introductory units of study. Success in CS1 is important as a pre-requisite for further study in programming and related disciplines. It is important to measure student progress and the antecedent influences. This study applied the Rasch Model and Messick’s Unified Theory of Validity to construct an interval level measure of CS1 competency with demonstrable suitability for this purpose

    Codification Pedagogy for Introductory Procedural Programming Courses

    Get PDF
    Generally, students in introductory programming courses (CS1) do not devote time to designing solutions to their programming problems, even though it is a necessary part of the problem-solving process. Without the design process to reflect on a problem, students might haphazardly solve them, but with incomplete solutions. Students might skip the design process because they have limited design knowledge and lack the skills to help them identify goals and create a plan for solving a problem. Students might also ignore problem-solving information provided to them and instead rely on past problem-solving approaches, which keeps them from learning both new problem-solving strategies and new programming concepts. This research explores a pedagogical approach for procedural programming assignments facilitated within an online learning environment that encourages CS1 students to incorporate the design process into their problem-solving process. This thesis refers to the pedagogical approach as the Codification Pedagogy, a teaching approach for ordering rules corresponding to a plan. The pedagogy is designed to help students identify goals and create plans for solving problems. The pedagogy is comprised of three learning activities: 1. A scaffolded assignment presentation designed to help students better understand the programming problem. The assignment presentation helps students identify the problem’s goals and provides additional support for struggling students. This research produces a framework that educators can use to develop scaffolded presentations for CS1 programming assignments. 2. A questioning activity that encourages students to engage their internal knowledge to solve the current problem. This research produces a questioning framework. The framework contains instructional questions mapped to the Bloom’s Taxonomy cognitive levels. The framework can help educators construct learning activities through questioning to help elevate students’ cognitive level appropriate for their learning. 3. A Parsons problems activity designed to help students organise an implementation plan. Parsons problems is a learning tool that has students arrange code fragments to form a working program. The research demonstrates that Parsons problems can be used to help students organise plans to solve programming problems. The Codification Pedagogy is integrated into CS1 programming assignments. Studies were conducted for three semesters in an introductory programming course offered at the University of Adelaide. The research comprises quantitative studies using interactive analytics and variable-oriented analysis, along with qualitative studies using mixed methods that include pre-post tests, think-alouds, and interview sessions. The pedagogy is designed to help students better understand the programming problem and support their learning of problem-solving strategies for practical programming assignments. The results from this thesis demonstrates the pedagogy can support students during the design process. The studies presented in this thesis shows the pedagogy supporting students’ use of problem-solving strategies that help them to identify goals for the problems and enable them to validate their programming solutions. The results also show the learning activities encouraging students to analyse the assignment, promoting self-reflection that reduce misconceptions. Through its design-based support, the pedagogy can support students to successfully complete programming assignments.Thesis (Ph.D.) -- University of Adelaide, School of Computer Science, 202

    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

    Task-related models for teaching and assessing iteration learning in high school

    Get PDF
    A number of studies report about students’ difficulties with basic flow-control constructs, and specifically with iteration. Although such issues are less explored in the context of pre-tertiary education, this seems to be especially the case for high-school programming learning, where the difficulties concern both the “mechanical” features of the notional machine as well as the logical aspects connected with the constructs, ranging from the implications of loop conditions to a more abstract grasp of the underlying algorithms. For these reasons, the aim of this work is to: i) identifying methodological tools to enhance a comprehensive understanding of the iteration constructs, ii) suggest strategies to teach iterations. We interviewed 20 experienced upper secondary teachers of introductory programming in different kinds of schools. The interviews were mainly aimed at ascertaining teachers’ beliefs about major sources of issues for basic programming concepts and their approach to the teaching and learning of iteration constructs. Once teachers’ perception of students’ difficulties have been identified, we have submitted, to a sample of 164 students, a survey which included both questions on their subjective perception of difficulty and simple tasks probing their understanding of iteration. Data collected from teachers and students confirm that iteration is a central programming concept and indicate that the treatment of conditions and nested constructs are major sources of students’ difficulties with iteration. The interviews allowed us to identify a list of problems that are typically presented by teachers to explain the iterations. Hence, a catalogue of significant program examples has been built to support students’ learning, tasks with characteristics different from those typically presented in class. Based on the outcome of previous steps, a survey to collect related information and good practices from a larger sample of teachers has been designed. Data collected have been analysed distinguishing an orientation towards more conceptual objectives, and one towards more practical objectives. Furthermore, regarding evaluation, a orientation focused on process-based assessment and another on product-based assessment. Finally, based on the outcome of previous students’ survey and drawing from the proposed examples catalogue, we have designed and submitted a new students’ survey, composed of a set of small tasks, or tasklets, to investigate in more depth on high-school students’ understanding of iteration in terms of code reading abilities. The chosen tasklets covered the different topics: technical program feature, correlation between tracing effort and abstraction, the role of flow-charts, students’ perception of self-confidence concerning high-level thinking skills.A number of studies report about students’ difficulties with basic flow-control constructs, and specifically with iteration. Although such issues are less explored in the context of pre-tertiary education, this seems to be especially the case for high-school programming learning, where the difficulties concern both the “mechanical” features of the notional machine as well as the logical aspects connected with the constructs, ranging from the implications of loop conditions to a more abstract grasp of the underlying algorithms. For these reasons, the aim of this work is to: i) identifying methodological tools to enhance a comprehensive understanding of the iteration constructs, ii) suggest strategies to teach iterations. We interviewed 20 experienced upper secondary teachers of introductory programming in different kinds of schools. The interviews were mainly aimed at ascertaining teachers’ beliefs about major sources of issues for basic programming concepts and their approach to the teaching and learning of iteration constructs. Once teachers’ perception of students’ difficulties have been identified, we have submitted, to a sample of 164 students, a survey which included both questions on their subjective perception of difficulty and simple tasks probing their understanding of iteration. Data collected from teachers and students confirm that iteration is a central programming concept and indicate that the treatment of conditions and nested constructs are major sources of students’ difficulties with iteration. The interviews allowed us to identify a list of problems that are typically presented by teachers to explain the iterations. Hence, a catalogue of significant program examples has been built to support students’ learning, tasks with characteristics different from those typically presented in class. Based on the outcome of previous steps, a survey to collect related information and good practices from a larger sample of teachers has been designed. Data collected have been analysed distinguishing an orientation towards more conceptual objectives, and one towards more practical objectives. Furthermore, regarding evaluation, a orientation focused on process-based assessment and another on product-based assessment. Finally, based on the outcome of previous students’ survey and drawing from the proposed examples catalogue, we have designed and submitted a new students’ survey, composed of a set of small tasks, or tasklets, to investigate in more depth on high-school students’ understanding of iteration in terms of code reading abilities. The chosen tasklets covered the different topics: technical program feature, correlation between tracing effort and abstraction, the role of flow-charts, students’ perception of self-confidence concerning high-level thinking skills

    Retention in Introductory Programming

    Get PDF
    The introductory programming course is one of the very first courses that computer science students encounter. The course is challenging not only because of the content, but also due to the challenges related to finding a place in a new community. Many have little knowledge of what to expect from university studies, some struggle to adjust their study behavior to match the expected pace, and a few simply cannot attend instruction due to e.g. family or work constraints. As a consequence, a considerable number of students end up failing the course, or pass the course with substandard knowledge. This leads to students failing to proceed in their studies at a desirable pace, to students who struggle with the subsequent courses, and to students who completely drop out from their studies. This thesis explores the issue of retention in introductory programming courses through multiple viewpoints. We first analyze how the teaching approaches reported in literature affect introductory programming course pass rates. Then, changes on the retention at the University of Helsinki are studied using two separate approaches. The first approach is the use of a contemporary variant of Cognitive Apprenticeship called the Extreme Apprenticeship method, and the second approach is the use of a massive open online course (MOOC) in programming for recruiting students before they enter their university studies. Furthermore, data from an automatic assessment system implemented for the purposes of this thesis is studied to determine how novices write their first lines of code, and what factors contribute to the feeling of difficulty in learning programming. On average, the teaching approaches described in the literature improve the course pass rates by one third. However, the literature tends to neglect the effect of intervention on the subsequent courses. In both studies at the University of Helsinki, retention improved considerably, and the students on average also fare better in subsequent courses. Finally, the data that has been gathered with the automatic assessment system provides an excellent starting point for future research.Ohjelmointi on nykyajan käsityöläistaito, jolle on akuutti tarve työelämässä. Tämän taidon opettelua harkitseva tietää harvoin, kuinka riippuvainen yhteiskuntamme on ohjelmoinnin tuotoksista eli ohjelmistoista. Ilman ohjelmointia esimerkiksi yhteydenpito, kaupankäynti, matkustaminen ja terveydenhuolto olisivat heikommalla tasolla. Puhelimet eivät toimisi, internettiä ei olisi, eikä lääketeollisuus pystyisi käsittelemään yhtä suuria datamassoja uusia parannuskeinoja etsiessä. Kukaan ei olisi kirjoittanut ohjelmaa, joka auttoi avaruuteen pääsemisessä. Väitöskirjassa tarkastellaan ohjelmoinnin opetusmenetelmiä ja niiden toimivuutta korkeakouluissa sekä esitellään kognitiiviseen oppipoikamalliin (Cognitive Apprenticeship) perustuva “ajatuskäsityöläisten” opetusmenetelmä tehostettu kisällioppiminen (Extreme Apprenticeship). Tehostetussa kisällioppimisessa oppimista edesauttava yksilöllinen ohjaus on mahdollista skaalata satoja opiskelijoita sisältäville kursseille. Väitöskirjatyössä ehdotetaan lisäksi kaikille avoimen verkkokurssin (MOOC) käyttöä yliopisto-opiskelijoiden valintaan sekä tarkastellaan tällaisen valintaväylän toimivuutta tietojenkäsittelytieteen alalla. Väitöskirja käsittelee myös ohjelmointitehtävien automaattista arviointia ja esittelee tähän tarkoitetun Test My Code -järjestelmän, jota voidaan käyttää askeleittaisten ohjeiden ja palautteen antamiseen aloitteleville ohjelmoijille sekä tiedon keräämiseen ohjelmointiprosessissa esiintyvistä ongelmista. Tällaista tietoa voidaan tutkia oppimisanalytiikan menetelmin. Väitöskirjassa tarkastellaan myös aloittelevien ohjelmoijien ensimmäisten ohjelmien kirjoittamisessa esiintyviä ongelmia sekä esitellään ohjelmointitehtävien vaikeuden ennustamiseen sopivia menetelmiä

    Gender and computer programming: teaching and learning strategies designed to increase the engagement of girls

    Get PDF
    The purpose of this research was to examine why so many girls decided to stop studying computer programming when they transition from middle school to senior school. This thesis examined ability and gender attitudes towards computer programming in middle school students at an International school in South Korea. In this study, 194 students in Year 8 and Year 9 in single-sex classes were taught Python and HTML5/CSS using a variety of teaching and learning strategies including tutorials, problem-based learning, tasks that included visual design, game-based learning, and storytelling. At the year-end, participants were given a computer programming assessment, with girls, relative to boys, demonstrating significantly greater computer programming ability. There was no difference between genders in the mostable programmers. Student opinions were gathered from questionnaires and group interviews. Findings showed that there was a gender difference in preferred learning strategies, with girls enjoying computer programming incorporating visual design, storytelling, and problem-based projects more than the boys. Further, there was no significant gender difference in enjoyment, confidence, or anxiety after a year of programming using the various teaching and learning strategies. Boys and girls did not differ in their reasons for choosing to study a subject from the following list (parents’ opinions; friends’ opinions; teachers’ opinions; useful life skills; lesson enjoyment; career/university skills; role models). The biggest influencing factor for both genders was lesson enjoyment and the opinion of friends was the least influential factor. The findings indicated that if computer programming is taught using the preferred teaching and learning strategies more girls are likely to choose to continue studying computer programming. In this study, the number of Year 9 girls choosing to continue studying computer programming increased from 5 girls in the first year (13% of the total) to 17 girls (38% of the total)
    corecore