Schiefer and Winfree recently introduced the chemical reaction network-controlled tile assembly model (CRN-TAM), a variant of the abstract tile assembly model (aTAM). In the CRN-TAM, tile reactions are mediated via no...
详细信息
Schiefer and Winfree recently introduced the chemical reaction network-controlled tile assembly model (CRN-TAM), a variant of the abstract tile assembly model (aTAM). In the CRN-TAM, tile reactions are mediated via non-local chemical signals controlled by a chemical reaction network. This paper introduces ALCH, an imperative programming language for specifying CRN-TAM programs that can be compiled and simulated. ALCH includes standard language features such as Boolean variables, conditionals, loops, and CRN-TAM-specific constructs such as adding and removing tiles. ALCH also includes the branch and parallel structures which harness the nondeterministic and parallel nature of the CRN-TAM. ALCH also supports functional tileset specification. Using ALCH, we show that the discrete Sierpinski triangle and the discrete Sierpinski carpet can be strictly self-assembled in the CRN-TAM, which shows the CRN-TAM can self-assemble infinite shapes at scale 1 that the aTAM cannot. ALCH allows us to present these constructions at a high level, abstracting species and reactions into C-like code that is simpler to understand. We employ two new CRN-TAM techniques in our constructions. First, we use ALCH's nondeterministic branching feature to probe previously placed tiles of the assembly and detect the presence and absence of tiles. Second, we use scaffolding tiles to precisely control tile placement by occluding any undesired binding sites. This paper is an extension of our previous work, updated to include a Sierpinski carpet construction and the parallel command.
A recent ITiCSE working group investigated when and how experts give feedback and hints at steps novice programmers take when solving programming problems. Based on the feedback literature and an analysis of expert fe...
详细信息
ISBN:
(纸本)9798400706004
A recent ITiCSE working group investigated when and how experts give feedback and hints at steps novice programmers take when solving programming problems. Based on the feedback literature and an analysis of expert feedback on steps, the working group designed guidelines for when and how to give feedback. The feedback provided by educators using these guidelines on a number of sequences of student steps varied a lot. In this paper, we try to answer the question of why educators give feedback at particular steps to novice learners of programming. We prepared six authentic sequences of student steps when solving an introductory programming task. The preprocessed sequences were used in a survey to gather information about when and why an expert would give feedback. Respondents annotated each step from one sequence with if and why they would give feedback at that step. Our survey received 47 responses. We qualitatively analyzed the responses, resulting in a coding scheme consisting of 19 different reasons for why experts intervene (or not) when novice learners work on introductory programming tasks. We found a considerable variety of reasons experts give for when and how to help students with feedback and hints. Also, sometimes one expert uses a reason at a step to explain why they do intervene, and another expert uses the same reason at the step to not intervene. The categories of experts' feedback indicators will pave the way for several future studies and applications, including learning systems trying to resemble expert feedback strategies.
Hands-on programming experience is crucial for students to learn about operating systems, but implementing key concepts such as file systems is perceived as being too hard to do for a real operating system in an intro...
详细信息
ISBN:
(纸本)9798400705328
Hands-on programming experience is crucial for students to learn about operating systems, but implementing key concepts such as file systems is perceived as being too hard to do for a real operating system in an introductory course on operating systems. To overcome these barriers, we introduce ezFS, a Linux file system that supports standard file system operations to persistent disk storage, yet is simple enough for students in an introductory operating systems course to implement in a couple weeks. ezFS takes advantage of file system and block storage interfaces in Linux that simplify file system implementation, such that its implementation requires only a few hundred lines of C code. We leverage standard file system interfaces to also develop an ezFS grader that can automatically grade ezFS implementations so that it is easy to scale its use for teaching a large course. We have successfully used ezFS as a programming assignment in an introductory operating systems course for hundreds of college students. ezFS significantly enhanced students' understanding of how file systems work in real operating systems, was simpler to implement than even pseudo Linux file systems, and was less difficult to complete than other programming assignments typically assigned for the course.
Although enrollments in introductory computing courses are rising, many students still struggle to learn programming. Previous research has found that students' perceptions of the programming process may be one fa...
详细信息
ISBN:
(纸本)9798400704758
Although enrollments in introductory computing courses are rising, many students still struggle to learn programming. Previous research has found that students' perceptions of the programming process may be one factor that contributes to this problem. Students often assess their own programming abilities overly harshly when experiencing low-level programming moments that are considered normal and expected parts of learning to program. For example, many students think they are doing poorly if they need to stop coding to plan. Research has also shown that students who self-assess negatively in these moments tend to have lower self-efficacy, defined as one's belief in their ability to achieve a particular outcome. In turn, students with lower self-efficacy tend not to persist in their computing studies. While the criteria that students use to assess their ability have been studied extensively, we have a limited understanding of the origins of these criteria and students' reasons for adopting them. To address this gap, we conducted a total of 36 interviews with seven introductory computerscience students throughout an academic quarter. In each interview, we asked students to think aloud and explain their reasoning while filling out a self-assessment survey. Through a qualitative analysis of the data, we identified the most common reasons students gave for negatively assessing their performance, including having high expectations for their abilities and feeling like they cannot overcome a struggle. We also identified common reasons why students do not negatively assess their ability in these moments, including believing an experience is "normal" or feeling like they can learn from or overcome a struggle. These findings contribute valuable new knowledge about the underpinnings of students' self-assessments of ability, and suggest that interventions that explicitly emphasize best practices and normalize struggles in the programming learning process are needed to increase
Software plays a crucial role in our daily activities. Virtually all the technology we use contains software components written in a particular programming language. In this context, compilers and interpreters play an...
详细信息
Software plays a crucial role in our daily activities. Virtually all the technology we use contains software components written in a particular programming language. In this context, compilers and interpreters play an important role, as they are needed to convert the software source code into a format that can be executed by a machine. The significant influence of the programming language on the energy consumption of the resulting programs has been highlighted in some research. However, there is almost no research on the impact of the programming language compiler/interpreter version of the programming language on the energy consumption. This paper aims to fill this gap by investigating the impact of the compiler/interpreter version on the energy consumption of programs written in C, Java and Python. To do that we have performed a study that uses a hardware-based energy measurement approach to obtain the energy consumed by eight algorithms written in the three languages and run with different compiler/interpreter versions. The results do not show a trend of improvement between versions within each language, especially in terms of energy consumption. These results suggest that energy efficiency does not seem to be a major factor when developing compilers/interpreters and should therefore be prioritized.
Flattening is known to be a performance-boosting technique to orchestrate parallel computations on arbitrarily deeply nested arrays. In this paper, we propose a flattening transformation that deals with nested data st...
详细信息
ISBN:
(纸本)9783031745577;9783031745584
Flattening is known to be a performance-boosting technique to orchestrate parallel computations on arbitrarily deeply nested arrays. In this paper, we propose a flattening transformation that deals with nested data structures that are composed of combinations of arrays and records. We choose the functional array programming language SaC as basis for this work, as it already supports flattening of homogeneously nested arrays, i.e. arrays in which all elements have the same shape. We propose an extension of SaC's syntax for records that allows records and arrays to be used in homogeneously nested form, and provide an implementation of this record transformation in the SaC compiler. Based on that extension, we show how any legal program that operates with such data structures can be transformed into an equivalent one that does not require any records at runtime.
This paper presents the Relational Machine Calculus (RMC): a simple, foundational model of first-order relational programming. The RMC originates from the Functional Machine Calculus (FMC), which generalizes the lambd...
详细信息
ISBN:
(纸本)9798400706608
This paper presents the Relational Machine Calculus (RMC): a simple, foundational model of first-order relational programming. The RMC originates from the Functional Machine Calculus (FMC), which generalizes the lambda-calculus and its standard call-byname stack machine in two directions. One, "locations", introduces multiple stacks, which enable effect operators to be encoded into the abstraction and application constructs. The second, "sequencing", introduces the imperative notions of "skip" and "sequence", similar to kappa-calculus and concatenative programming languages. The key observation of the RMC is that the first-order fragment of the FMC exhibits a latent duality which, given a simple decomposition of the relevant constructors, can be concretely expressed as an involution on syntax. Semantically, this gives rise to a sound and complete calculus for string diagrams of Frobenius monoids. We consider unification as the corresponding symmetric generalization of beta-reduction. By further including standard operators of Kleene algebra, the RMC embeds a range of computational models: the kappa-calculus, logic programming, automata, Interaction Nets, and Petri Nets, among others. These embeddings preserve operational semantics, which for the RMC is again given by a generalization of the standard stack machine for the lambda-calculus. The equational theory of the RMC (which supports reasoning about its operational semantics) is conservative over both the first-order lambda-calculus and Kleene algebra, and can be oriented to give a confluent reduction relation.
This PhD research explores the problem of building a system for providing real-time formative feedback for programming assignments given to college/university students. Such system would maximize learning outcomes whi...
详细信息
ISBN:
(纸本)9798400701399
This PhD research explores the problem of building a system for providing real-time formative feedback for programming assignments given to college/university students. Such system would maximize learning outcomes while minimizing the effort from the tutor to construct such system. We propose an approach to building such a system and assessing its effectiveness, as well as outlines topics for future research.
Grading computer graphics programming assessments and generating formative and summative feedback can require significant effort on the part of human experts. Since these assessments generate visual outputs that can b...
详细信息
ISBN:
(纸本)9798400705328
Grading computer graphics programming assessments and generating formative and summative feedback can require significant effort on the part of human experts. Since these assessments generate visual outputs that can be static or animated, determining correctness may be subjective. For feedback to be effective, it must be delivered in a timely manner. This can be a challenge for introductory computer graphics-based courses since cohort size can be substantial, errors in visual output can be subtle, and causes of errors are often not obvious. In this paper, we explore the feasibility of an automated system for marking visual output and providing program implementation feedback for learners in an introductory computer graphics-based design course in three short programming assessments, including static and animated scenes. To assess the effectiveness of our approach, we compare the marks generated by our tool with those assigned by a human expert. We show that it is possible to automate marking, providing both a grade based on the visual output and formative feedback on source code in the style of a human marker. This can improve objective consistency, grade reproducibility, and reduce marking time, enabling a course to scale to support large cohorts without the need for more resourcing for human markers. We describe lessons learnt and potential pitfalls to assist educators with introducing automated marking for their courses. Finally, we identify areas for future refinement and development of our automated system.
暂无评论