skip to main content
US FlagAn official website of the United States government
dot gov icon
Official websites use .gov
A .gov website belongs to an official government organization in the United States.
https lock icon
Secure .gov websites use HTTPS
A lock ( lock ) or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.


Title: What Happens When Students Switch (Functional) Languages (Experience Report)
When novice programming students already know one programming language and have to learn another, what issues do they run into? We specifically focus on one or both languages being functional, varying along two axes: syntax and semantics. We report on problems, especially persistent ones. This work can be of immediate value to educators and also sets up avenues for future research.  more » « less
Award ID(s):
2227863
PAR ID:
10602322
Author(s) / Creator(s):
 ;  ;  ;  
Publisher / Repository:
Association for Computing Machinery (ACM)
Date Published:
Journal Name:
Proceedings of the ACM on Programming Languages
Volume:
7
Issue:
ICFP
ISSN:
2475-1421
Format(s):
Medium: X Size: p. 796-812
Size(s):
p. 796-812
Sponsoring Org:
National Science Foundation
More Like this
  1. There are many different probabilistic programming languages that are specialized to specific kinds of probabilistic programs. From a usability and scalability perspective, this is undesirable: today, probabilistic programmers are forced up-front to decide which language they want to use and cannot mix-and-match different languages for handling heterogeneous programs. To rectify this, we seek a foundation for sound interoperability for probabilistic programming languages: just as today’s Python programmers can resort to low-level C programming for performance, we argue that probabilistic programmers should be able to freely mix different languages for meeting the demands of heterogeneous probabilistic programming environments. As a first step towards this goal, we introduce MultiPPL, a probabilistic multi-language that enables programmers to interoperate between two different probabilistic programming languages: one that leverages a high-performance exact discrete inference strategy, and one that uses approximate importance sampling. We give a syntax and semantics for MultiPPL, prove soundness of its inference algorithm, and provide empirical evidence that it enables programmers to perform inference on complex heterogeneous probabilistic programs and flexibly exploits the strengths and weaknesses of two languages simultaneously. 
    more » « less
  2. There is a currently a shortage of computer science professionals and this shortage is projected to continue into the foreseeable future as not enough students are selecting computer science majors. Researchers and policy-makers agree that development of this career pipeline starts in elementary school. Our study examined which collaborative programming setup, pair programming (two students collaborate on one computer) or side-by-side programming (two students collaborate on the same program from two computers), fifth-grade students preferred. We also sought to understand why students preferred one method over the other and explored ideas on how to effectively design a collaborative programming environment for this age group. Our study had participants first engage in five instructional days, alternating between pair and side-by-side programming, and then conducted focus groups. We found that students overwhelmingly preferred side-by-side programming. We explain this using self-determination theory which states that behavior is motivated by three psychological needs: autonomy, competence, and psychological relatedness which side-by-side programming was better able to meet. 
    more » « less
  3. Many modern end-user development environments support one of two visual modalities: block-based programming or data-flow programming. In this work, we investigate the trade-offs between the two modalities in the context of robotics tasks. These often contain both aspects that are better solved with blocks and others that best fit data-flow programming. To address this style of task, we present and discuss two novel programming environment prototypes, one purely block-based and one a hybrid of blocks and data-flow programming. We compare the designs through a controlled experiment with 113 end-user participants, in which we asked them to solve programming and program comprehension tasks using one of the two environments. We find that participants preferred the hybrid environment in direct comparison, but performed better across all tasks and also reported higher usability ratings for blocks. 
    more » « less
  4. Emotions are a complex multi-faceted phenomenon. To assess the complexity of emotions from different facets, multi-modal approaches are necessary. However, multi-modal approaches are rarely used for assessing emotions, especially in the context of computer programming. This study adopts a multi-modal approach to understand the changes in students’ perception of emotions before and after working on programming problems. Understanding these changes in students’ perceptions may enable educators to devise interventions that help students adjust their perceptions and regulate their emotions as per their skills. We conducted a one-on-one programming session and retrospective think-aloud interview with 17 students from an introductory programming course. During the programming session, students filled surveys and performed four programming tasks. While working on these tasks, students’ eye gaze, video of face and screen, and electrodermal activity data were also collected using a non-invasive device. The data collection for this study was multi-modal, with a mix of both qualitative and quantitative data collection methods. Data analysis was primarily qualitative, with additional triangulation of qualitative and biometric data for select exemplars. The findings of this study suggest that students experience changes in emotions because of many reasons, for instance, they encountered repeated errors, they set high standards for their performance, or they could not manage time. For some students, negative emotions changed to positive emotions when they solved errors without any external help or achieved more than what they expected going into the task. Moreover, the triangulation of qualitative and biometric data of two participants provides a fine-grained analysis of their emotions and behaviors and confirmed the change in the perception of their emotions while performing the programming tasks. 
    more » « less
  5. null (Ed.)
    As Scratch has become one of the most popular educational programming languages, understanding its common programming idioms can benefit both computing educators and learners. This understanding can fine-tune the curricular development to help learners master the fundamentals of writing idiomatic code in their programming pursuits. Unfortunately, the research community’s understanding of what constitutes idiomatic Scratch code has been limited. To help bridge this knowledge gap, we systematically identified idioms as based on canonical source code, presented in widely available educational materials. We implemented a tool that automatically detects these idioms to assess their prevalence within a large dataset of over 70K Scratch projects in different experience backgrounds and project categories. Since communal learning and the practice of remixing are one of the cornerstones of the Scratch programming community, we studied the relationship between common programming idioms and remixes. Having analyzed the original projects and their remixes, we observed that different idioms may associate with dissimilar types of code changes. Code changes in remixes are desirable, as they require a meaningful programming effort that spurs the learning process. The ability to substantially change a project in its remixes hinges on the project’s code being easy to understand and modify. Our findings suggest that the presence of certain common idioms can indeed positively impact the degree of code changes in remixes. Our findings can help form a foundation of what comprises common Scratch programming idioms, thus benefiting both introductory computing education and Scratch programming tools. 
    more » « less