The types of programming error that novice programmers make and struggle to resolve have long been of interest to researchers. Various past studies have analyzed the frequency of compiler diagnostic messages. This information, however, does not have a direct correlation to the types of error students make, due to the inaccuracy and imprecision of diagnostic messages. Furthermore, few attempts have been made to determine the severity of different kinds of error in terms other than frequency of occurrence. Previously, we developed a method for meaningful categorization of errors, and produced a frequency distribution of these error categories; in this paper, we extend the previous method to also make a determination of error difficulty, in order to give a better measurement of the overall severity of different kinds of error. An error category hierarchy was developed and validated, and errors in snapshots of students source code were categorized accordingly. The result is a frequency table of logical error categories rather than diagnostic messages. Resolution time for each of the analyzed errors was calculated, and the average resolution time for each category of error was determined; this defines an error difficulty score. The combination of frequency and difficulty allow us to identify the types of error that are most problematic for novice programmers. The results show that ranking errors by severity a product of frequency and difficulty yields a significantly different ordering than ranking them by frequency alone, indicating that error frequency by itself may not be a suitable indicator for which errors are actually the most problematic for students.
Contemporary research has introduced robots in the classroom, but there is a limited number of studies about the effects of alternative embodied interactions with them on learning and attitudes. Apart from the goal of the robot and how the robot will interact with its environment another important aspect that should be taken into consideration is whether and how the user will physically interact with the robot. In this work, we explored the synergy between embodied learning and educational robotics through a series of programming activities in an attempt to expand students? learning in computational thinking. Thirty-six middle school students were asked to develop interfaces for controlling a robot using diverse interaction modalities, such as touch, speech, hand and full-body gestures. We measured students? perception of computing and assessed the development of their computational thinking skills by analyzing the sophistication of the projects they created during a problem-solving task. We also examined their computational practices to gain a more comprehensive view of their understandings. We found that students who programmed combinations of low embodiment interfaces or interfaces with no embodiment produced more sophisticated projects and adopted more sophisticated computational practices compared to those who programmed full-body interfaces. These findings suggest that there might be a trade-off between the appeal and the cognitive benefit of rich embodied interaction. In further work, educational robotics research and competitions might be complemented with a hybrid approach that blends the traditional autonomous robot movement with student enactment.
Given its societal impacts and applications to numerous fields, machine learning (ML) is an important topic to understand for many students outside of computer science and statistics. However, machine learning education research is nascent, and research on this subject for non-majors thus far has only focused on curricula and courseware. We interviewed ten instructors of ML courses for non-majors, inquiring as to what their students find both easy and difficult about machine learning. While ML has a reputation for having algorithms that are difficult to understand, in practice our participating instructors reported that it was not the algorithms that were difficult to teach, but the higher-level design decisions. We found that the learning goals that participants described as hard to teach were consistent with higher levels of the Structure of Observed Learning Outcomes (SOLO) taxonomy, such as making design decisions and comparing/contrasting models. We also found that the learning goals that were described as easy to teach, such as following the steps of particular algorithms, were consistent with the lower levels of the SOLO taxonomy. Realizing that higher-SOLO learning goals are more difficult to teach is useful for informing course design, public outreach, and the design of educational tools for teaching ML.
High school computing education reform efforts have been ongoing across the United States, particularly in the past decade. Although national computer science (CS) for All initiatives are promising, states retain control over education policies. Recent computing education reform efforts in Maryland focused on providing every public high school student with access to high quality high school computing courses. Such access provides exposure to computing careers and better prepares a diverse pool of students for computing majors in college. This comprehensive embedded multi-level case study examines the computing education reform efforts from 2010 through 2016. The expansion of computing education indicates that while there was positive growth, the growth is not the same for all public high school students. Despite successes, barriers at the state, Local Education Agencies (LEA), school, and classroom levels persist and are discussed. The findings in this study are applicable to other states with similar policy structures.
The CS for All movement has taken hold of the US and CS education is rapidly expanding across nations throughout the world. Yet as curricula and professional development opportunities are developed, key questions remain about what ?works? for engaging youth in CS education when they do not necessarily look like the majority of computer scientists nor feel like they belong in the field. In response, this study answers the questions: What teaching practices do students?who are underrepresented in CS?believe are most effective for engaging their interest in CS learning? What pedagogical actions do CS teachers identify as most effective for engaging students? And what does this effective teaching look like in introductory CS classes enrolling majority students underrepresented in the field? Through a qualitative study following three different urban high school Exploring Computer Science classrooms over an entire school year (n = 70 students, 3 teachers; >105 hours of observation data; >50 interviews with students and teachers), key pedagogical practices that had greatest impact on youth?s interest and engagement learning CS included: 1) demystifying CS by showing its connections to everyday life; 2) addressing social issues impacting both CS and students? communities; and 3) valuing students? voices and perspectives in the CS classroom. This paper shares testimonies from students and teachers, as well as examples of these teaching practices in the classroom.
Our work is situated in research on Computer Science (CS) learning in informal learning environments and literature on the factors that influence girls to enter CS. In this paper, we outline design choices around the creation of a summer programming camp for middle school youth. In addition, we describe a near-peer mentoring model we used that was influenced by Bandura?s self-efficacy theory. The purpose of this paper, apart from promoting transparency of program design, was to evaluate the effectiveness of our camp design in terms of increasing youths? interest, self-efficacy beliefs, and perceptions of parental support. We found significant gains for all three of these concepts. Additionally, we make connections between our design choices (e.g. videos, peer support, mentor support) and the affective gains by thematically analyzing interview data concerning the outcomes found in our camps.
This article aims to lay a foundation for the research and practice of ML education for creative practitioners. We begin by motivating the usefulness of ML for creative practice, and briefly describing the long history of ML's use in art, music, dance, and related fields. We propose a set of learning objectives for creative practitioners learning about ML, and we describe where these objectives likely differ from non-creative contexts. We describe a curriculum---including lecture topics and assignments, as well as underpinning abstractions and illustrative examples---developed to support these learning objectives in an introductory supervised learning class aimed at musicians, artists, and other creative practitioners. We also describe a set of scaffolding technologies to support constructivist experimentation and creative project development. These resources are aimed at students who may not be programmers, who may lack strong mathematics backgrounds, and who have an interest in creative work with technology (e.g., in music, art, game design). We describe our use of this curriculum and toolset an undergraduate course, a masters-level course, and an online MOOC. We use data collected from these classes to explore the following questions: (1) How successful were this curriculum and toolset in enabling students to meet the proposed learning objectives? (2) How did the proposed abstractions, examples, and tools function in student experimentation and reasoning? (3) What motivated students in these courses to study machine learning? And what types of creative work were enabled by successful attainment of the learning objectives? (4) What were significant challenges and misconceptions for these students? To answer these questions, we employ methods including quantitative analysis of software log data and assignment submissions, qualitative coding of student written work and forum posts, and examination of students' final creative projects. This work informs further practical work and research around ML education for creative practitioners. It also has broader implications for ML education for other populations, including contributing to development of pedagogical content knowledge for ML, illustrating how ML may be integrated earlier into CS curricula, and providing approaches and tools that can be adopted in education of the broader public.
In this paper, we inquire into how a teacher and students in a classroom write code together. In doing so, we treat the classroom situation not as an interaction of individual cognitive agents, but a phenomenon that is irreducibly social. We take as a theoretical basis of analysis Vygotskys genetic law of cultural development, which states that all higher-level individual mental functioning is historically preceded by and reproduces social relations between people. Using this principle, we reveal the social relations that develop in the classroom that regulate the way in which ideas are shared and code is produced for a particular coding problem. This offers a rule-regulated and dialogical model for writing code that is significantly different from the schema-based models posited in cognitive accounts of learning to program.
We investigate conditions in which novices make reference errors when programming. We asked students from introductory programming courses to perform a simple code-writing task that required constructing references to computer objects and their attributes. By experimentally manipulating the nature of the attributes in the tasks, from identifying attributes (e.g. name or label) to descriptive attributes (e.g. calories, texture), the study revealed the relative frequencies with which students mistakenly omit an identifying attribute name while attempting to reference the attribute value. We explain how this behavior is consistent with the use of metonymy, a form of figurative expression in human communication. Our analysis also reveals how the presentation of examples can affect the construction of the reference in the student's solution. We discuss plausible accounts of the reference-point errors and how they may inform a working cognitive model.
Brain-Computer Interface (BCI) hardware is becoming more affordable and accessible. However, there is limited work investigating ways to design software that broadens participation with BCI technology. In this article, we present a block-based programming environment designed to assist novice programmers with creating BCI applications. We also discuss learning barriers encountered by novice programmers developing neurofeedback applications. Our findings suggest that visual programming assists novice programmers with building basic BCI applications; however, students may experience understanding and learning barriers initially.