User-Centered Programming Language Design: A Course-Based Case Study
Abstrak
Recently, user-centered methods have been proposed to improve the design of programming languages. In order to explore what benefits these methods might have for novice programming language designers, we taught a collection of user-centered programming language design methods to a group of eight students. We observed that natural programming and usability studies helped the students refine their language designs and identify opportunities for improvement, even in the short duration of a course project.
Artikel Ilmiah Terkait
Sverrir Thorgeirsson Z. Su
10 Oktober 2021
Empirical research suggests that programming language syntax is a common impediment for beginners, a concern that is mitigated to a varying degree by visual programming. In this paper, we introduce a novel visual programming language that is founded on program synthesis and the programming-by-demonstration paradigm. By using an intuitive visual syntax, we show how we can meet our primary goal of providing support to computer programming novices in exploring foundational programming concepts. We present the language's current and planned use in computer science education, provide preliminary evidence for its effectiveness, and discuss its future possibilities.
F. Hermans
1 Agustus 2020
One of the aspects of programming that learners often struggle with is the syntax of programming languages: remembering the right commands to use and combining those into a working program. Prior research demonstrated that students submit source code with syntax errors in 73% of cases and even the best students do so in 50% of cases. An analysis of 37 million compilations by 250.000 students found that the most common error was a syntax error, which occurred in almost 800.000 compilations. It was also found that Java and Perl are not easier to understand than a programming language with randomly generated keywords, stressing the difficulties that novices face in understanding syntax. This paper presents Hedy: a new way of teaching the syntax of a programming language to novices, inspired by educational methods by which punctuation is taught to children. Hedy starts as a simple programming language without any syntactic elements such as brackets, colons or indentation. The rules slowly and gradually change until the novices are programming in Python. Hedy is evaluated on 9714 programs.
Ioannis Karvelas Joe Dillane Brett A. Becker
25 Februari 2020
Improving the feedback that novices receive from programming environments is an important and often overlooked aspect of computing education research. This work in progress examines the effects of various mechanisms by which environments deliver feedback to users. By providing insights on the effects of these mechanisms, we aim to inform designers, developers and educators about more effective design and use of such environments for students.
Pierre Weill-Tessier A. Costache Maksymilian Sekula + 2 lainnya
1 Agustus 2022
Objectives. Java is a popular programming language for use in computing education, but it is difficult to get a wide picture of the issues that it presents for novices; most studies look only at the types or frequency of errors. In this observational study, we aim to learn how novices use different features of the Java language. Participants. Users of the BlueJ development environment have been invited to opt in to anonymously record their activity data for the past 8 years. This dataset is called Blackbox, which was used as the basis for this study. BlueJ users are mostly novice programmers, predominantly male, with a median age of 16 years. Our data subset featured approximately 225,000 participants from around the world. Study Methods. We performed a secondary data analysis that used data from the Blackbox dataset. We examined over 320,000 Java projects collected over the course of 8 years and used source code analysis to investigate the prevalence of various specifically selected Java programming usage patterns. As this was an observational study without specific hypotheses, we did not use significance tests. Instead, we present the results themselves with commentary, having applied seasonal trend decomposition to the data. Findings. We found many long-term trends in the data over the course of the 8 years, most of which were monotonic. There was a notable reduction in the use of the main method (common in Java but unnecessary in BlueJ) and a general reduction in the complexity of the projects. We find that there is only a small number of frequently used types: int, String, double, and Boolean, but also a wide range of other infrequently used types. Conclusions. We find that programming usage patterns gradually change over a long period of time (a period in which the Java language was not seeing major changes) once seasonal patterns are accounted for. Any changes are likely driven by instructors and the changing demographics of programming novices. The novices use a relatively restricted subset of Java, which implies that designers of languages specifically targeted at novices can satisfy their needs with a smaller set of language constructs and features. We provide detailed recommendations for the designers of educational programming languages and supporting development tools.
Carol C. W. Hulls C. Rennick
13 Januari 2020
Contribution: A first-year programming course was redesigned with a large, open-ended robotics project. The course design aligns with best practices for promoting development of students’ self-efficacy in solving ill-structured software design problems. Background: From Jonassen’s theory, problem-solving outcomes are dependent on the problem structure, complexity, and representation; and the characteristics of the solver. These characteristics are diverse, including knowledge, familiarity, and psychometric qualities of the solver (e.g., self-efficacy and motivation). Thus, better problem-solving outcomes are dependent on the development of these traits, and on the problem characteristics. Intended Outcomes: Pre-2010, course learning activities and assessments overly focused on syntax. The course was redesigned with a focus on ill-structured problem solving and design in high-fidelity problem domains. Application Design: Complex and ill-structured lecture examples, assignments, and exams were redesigned to reinforce the importance of software design and problem solving. An open-ended cornerstone project using robotics was added as a structured means of providing students practice with solving ill-structured and open-ended problems. The assignment and exam questions, with the course cornerstone project, achieve instructional alignment in the course. Findings: The results show that students’ self-efficacy improved from start to end of term. The course design achieves several objectives: 1) students learned the requisite programming skills; 2) students developed their self-efficacy in programming and design; and 3) students demonstrated strong problem-solving outcomes.
Daftar Referensi
0 referensiTidak ada referensi ditemukan.
Artikel yang Mensitasi
0 sitasiTidak ada artikel yang mensitasi.