Automatic grading based on unit tests is a key feature of massive open online courses (MOOC) on programming, as it allows instant feedback to students and enables courses to scale up. This technique works well for seq...
详细信息
ISBN:
(纸本)9783031353543;9783031353550
Automatic grading based on unit tests is a key feature of massive open online courses (MOOC) on programming, as it allows instant feedback to students and enables courses to scale up. This technique works well for sequential programs, by checking outputs against a sample of inputs, but unfortunately it is not adequate for detecting races and deadlocks, which precludes its use for concurrent programming, a key subject in parallel and distributed computing courses. In this paper we provide a hands-on evaluation of verification and testing tools for concurrent programs, collecting a precise set of requirements, and describing to what extent they can or can not be used for this purpose. Our conclusion is that automatic grading of concurrent programming exercises remains an open challenge.
As large, high-dimensional data have become more common, software development is playing an increasingly important role in research across many different fields. This creates a need to adopt software engineering pract...
详细信息
As large, high-dimensional data have become more common, software development is playing an increasingly important role in research across many different fields. This creates a need to adopt software engineering practices in research settings. Code review is the engineering practice of giving and receiving detailed feedback on a computer program. Consistent and continuous examination of the evolution of computer programs by others has been shown to be beneficial, especially when reviewers are familiar with the technical aspects of the software and also when they possess relevant domain expertise. The rules described in the present article provide information about the why, when, and how of code review. They provide the motivation for continual code reviews as a natural part of a rigorous research program. They provide practical guidelines for conducting review of code both in person, as a "lab meeting for code," as well as asynchronously, using industry-standard online tools. A set of guidelines is provided for the nitty-gritty details of code review, as well as for the etiquette of such a review. Both the technical and the social aspects of code review are covered to provide the reader with a comprehensive approach that facilitates an effective, enjoyable, and educational approach to code review. Scientists are increasingly writing code as part of their research. Code review is a common practice in software engineering, which entails detailed and continual examination of additions and changes to a software code-base. This article explains why and how this practice is applied to the software that researchers write as part of their work. It provides a set of rules that motivates, explicates, and details the process of using code review in a didactic, effective, and enjoyable manner.
Large language models (LLMs) have shown great potential for the automatic generation of feedback in a wide range of computing contexts. However, concerns have been voiced around the privacy and ethical implications of...
详细信息
ISBN:
(纸本)9798400706004
Large language models (LLMs) have shown great potential for the automatic generation of feedback in a wide range of computing contexts. However, concerns have been voiced around the privacy and ethical implications of sending student work to proprietary models. This has sparked considerable interest in the use of open source LLMs in education, but the quality of the feedback that such open models can produce remains understudied. This is a concern as providing flawed or misleading generated feedback could be detrimental to student learning. Inspired by recent work that has utilised very powerful LLMs, such as GPT-4, to evaluate the outputs produced by less powerful models, we conduct an automated analysis of the quality of the feedback produced by several open source models using a dataset from an introductory programming course. First, we investigate the viability of employing GPT-4 as an automated evaluator by comparing its evaluations with those of a human expert. We observe that GPT-4 demonstrates a bias toward positively rating feedback while exhibiting moderate agreement with human raters, showcasing its potential as a feedback evaluator. Second, we explore the quality of feedback generated by several leading open-source LLMs by using GPT-4 to evaluate the feedback. We find that some models offer competitive performance with popular proprietary LLMs, such as ChatGPT, indicating opportunities for their responsible use in educational settings.
Technology and automation have become increasingly critical for organizations today, and programming has become an essential skill for all STEM majors to meet this demand. Graduates are expected to possess programming...
This article discusses the correlation between first-year students' prior knowledge of programming and their academic achievements. Many students who enroll in the Faculty of computerscience and Information Techn...
详细信息
The high-performance computing (HPC) community has recently seen a substantial diversification of hardware platforms and their associated programming models. From traditional multicore processors to highly specialized...
详细信息
ISBN:
(纸本)9783031800832;9783031800849
The high-performance computing (HPC) community has recently seen a substantial diversification of hardware platforms and their associated programming models. From traditional multicore processors to highly specialized accelerators, vendors and tool developers back up the relentless progress of those architectures. In the context of scientific programming, it is fundamental to consider performance portability frameworks, i.e., software tools that allow programmers to write code once and run it on different computer architectures without sacrificing performance. We report here on the benefits and challenges of performance portability using a field-line tracing simulation and a particle-incell code, two relevant applications in computational plasma physics with applications to magnetically-confined nuclear-fusion energy research. For these applications we report performance results obtained on four HPC platforms with server-class CPUs from Intel (Xeon) and AMD (EPYC), and high-end GPUs from Nvidia and AMD, including the latest Nvidia H100 GPU and the novel AMD Instinct MI300A APU. Our results show that both Kokkos and OpenMP are powerful tools to achieve performance portability and decent "out-of-the-box" performance, even for the very latest hardware platforms. For our applications, Kokkos provided performance portability to the broadest range of hardware architectures from different vendors.
programming with versions is a paradigm that allows a program to use multiple versions of a module so that the programmer can selectively use functions from both older and newer versions of a single module. Previous w...
详细信息
ISBN:
(纸本)9789819983100;9789819983117
programming with versions is a paradigm that allows a program to use multiple versions of a module so that the programmer can selectively use functions from both older and newer versions of a single module. Previous work formalized lambda(VL), a core calculus for programming with versions, but it has not been integrated into practical programming languages. In this paper, we propose VL, a Haskell-subset surface language for lambda(VL) along with its compilation method. We formally describe the core part of the VL compiler, which translates from the surface language to the core language by leveraging Girard's translation, soundly infers the consistent version of expressions along with their types, and generates a multi-version interface by bundling specific-version interfaces. We conduct a case study to show how VL supports practical software evolution scenarios and discuss the method's scalability.
computerscience students receive significant instruction towards writing functioning code that correctly satisfies requirements. Autograders have been shown effective at scalably running student code and determining ...
详细信息
ISBN:
(纸本)9781450394314
computerscience students receive significant instruction towards writing functioning code that correctly satisfies requirements. Autograders have been shown effective at scalably running student code and determining whether the code correctly implements a given assignment or project. However, code functionality is only one component of "good" code, and there are few studies on the correlation between code style and code quality. There are even fewer studies contributing a tool equivalent to auto-graders for code style checking and grading. We put forth two contributions. First, a style guide for the C programming language focused on readability for student programs. Second, an automated linting tool Eastwood-Tidy providing on-demand style violation and fix feedback for students and automated style grading for course staff. Finally, we survey students and find a positive response to both a code standard and an automated tool to support the standard and make recommendations for the inclusion of both in programming focused courses based on these results.
Students constantly have to learn and relate newconcepts. However, those multiple relations are easily not given enough attention as their practical application is often given priority. Hence students are left with in...
详细信息
ISBN:
(纸本)9781450394338
Students constantly have to learn and relate newconcepts. However, those multiple relations are easily not given enough attention as their practical application is often given priority. Hence students are left with incomplete reflection on the subject matter, which quickly implies a surface learning of many essential contents and relations. Here, we propose using simple textual languages for students to express relations between concepts. Students' feedback was highly positive, and they recognized the usefulness of the activity to better reflect and understand multiple intertwining concepts in an object-oriented programming course.
The cost of encoding a system Hamiltonian in a digital quantum computer as a linear combination of unitaries (LCU) grows with the 1-norm of the LCU expansion. The Block Invariant Symmetry Shift (BLISS) technique reduc...
The cost of encoding a system Hamiltonian in a digital quantum computer as a linear combination of unitaries (LCU) grows with the 1-norm of the LCU expansion. The Block Invariant Symmetry Shift (BLISS) technique reduces this 1-norm by modifying the Hamiltonian action on only the undesired electron-number subspaces. Previously, BLISS required a computationally expensive nonlinear optimization that was not guaranteed to find the global minimum. Here, we introduce various reformulations of this optimization as a linear programming problem, which guarantees optimality and significantly reduces the computational cost. We apply BLISS to industrially relevant homogeneous catalysts in active spaces of up to 76 orbitals, finding substantial reductions in both the spectral range of the modified Hamiltonian and the 1-norms of Pauli and fermionic LCUs. Our linear programming techniques for obtaining the BLISS operator enable more efficient Hamiltonian simulation and, by reducing the Hamiltonian's spectral range, offer opportunities for improved LCU groupings to further reduce the 1-norm.
暂无评论