A major challenge in modelling and simulation is the need to combine expertise in both software technologies and a given scientific domain. When High-Performance Computing (HPC) is required to solve a scientific probl...
详细信息
A major challenge in modelling and simulation is the need to combine expertise in both software technologies and a given scientific domain. When High-Performance Computing (HPC) is required to solve a scientific problem, software development becomes a problematic issue. Considering the complexity of the software for HPC, it is useful to identify programming languages that can be used to alleviate this issue. Because the existing literature on the topic of HPC is very dispersed, we performed a Systematic Mapping Study (SMS) in the context of the European COST Action cHiPSet. This literature study maps characteristics of various programming languages for data-intensive HPC applications, including category, typical user profiles, effectiveness, and type of articles. We organised the SMS in two phases. In the first phase, relevant articles are identified employing an automated keyword-based search in eight digital libraries. This lead to an initial sample of 420 papers, which was then narrowed down in a second phase by human inspection of article abstracts, titles and keywords to 152 relevant articles published in the period 2006-2018. The analysis of these articles enabled us to identify 26 programming languages referred to in 33 of relevant articles. We compared the outcome of the mapping study with results of our questionnaire-based survey that involved 57 HPC experts. The mapping study and the survey revealed that the desired features of programming languages for data-intensive HPC applications are portability, performance and usability. Furthermore, we observed that the majority of the programming languages used in the context of data-intensive HPC applications are text-based general-purpose programming languages. Typically these have a steep learning curve, which makes them difficult to adopt. We believe that the outcome of this study will inspire future research and development in programming languages for data-intensive HPC applications. (C) 2019 Elsevier B.V. A
Program analysis, verification and testing are important topics in programming languages and software engineering. They aim to produce engineers who are not only capable of empirically evaluating but, also formally re...
详细信息
ISBN:
(纸本)9798350329964
Program analysis, verification and testing are important topics in programming languages and software engineering. They aim to produce engineers who are not only capable of empirically evaluating but, also formally reasoning on the correctness of software systems. We propose a specialized framework, CHIRON, designed to teach graduate-level courses on these topics. CHIRON has a small code base for easy understanding, uses a unified intermediate representation across all its analysis modules, maintains a modular architecture for plugging in new algorithms and uses a "fun" programming language to provide a gamified experience. Currently, it packages a dataflow analysis engine for driving compiler optimizations, an abstract interpretation engine for verification, a symbolic execution engine, a fuzzer and an evolutionary test generator for program testing, and a spectrum based statistical bug localization module. Within CHIRON, program analysis tasks are posed in an unconventional setting (as adventures of a turtle) to provide a gamified experience;the accompanying animations (showing the movements of the turtle) allow the student to understand the underlying concepts better, and the detailed logs allow the teaching assistants in their grading activities. CHIRON has been used in two offerings of a graduate level course on program analysis, verification and testing. In response to our survey questionnaire, all the students unanimously held the opinion that CHIRON was extremely helpful in aiding their learning, and recommended its use in similar
While most efforts to improve students' learning in computer science education have focused on designing new pedagogies or tools, comparatively little research has focused on redesigning examinations to improve st...
详细信息
ISBN:
(纸本)9781450351034
While most efforts to improve students' learning in computer science education have focused on designing new pedagogies or tools, comparatively little research has focused on redesigning examinations to improve students' learning. Cognitive science research, however, has robustly demonstrated that getting students to practice using their knowledge in testing environments can significantly improve learning through a phenomenon known as the testing effect. The testing effect has been shown to improve learning more than rehearsal strategies such as re-reading a textbook or re-watching lectures. In this paper, we present a quasi-experimental study to examine the effect of using frequent, automated examinations in an advanced computer science course, "programming languages and Compilers" (CS 421). In Fall 2014, students were given traditional paper-based exams, but in Fall 2015 a computer based testing facility enabled the course to offer more frequent examinations while other aspects of the course were held constant. A comparison of 292 student scores across the two semesters revealed a significant change in the distribution of students' grades with fewer students failing the final examination, and proportionately more students now earning grades of B and C instead. This data suggests that focusing on redesigning the nature of examinations may indeed be a relatively untapped opportunity to improve students' learning.
This study conducts a comparative analysis of the performance of different programming languages on Android embedded systems, focusing on execution time. Through controlled experiments, we compared traditional and eme...
详细信息
The increasing difficulty in meeting the needs of the software industry and the benchmarks defined by IEEE and ACM in the adoption of programming languages in Computer Engineering courses offered by higher education i...
详细信息
ISBN:
(纸本)9781728184784
The increasing difficulty in meeting the needs of the software industry and the benchmarks defined by IEEE and ACM in the adoption of programming languages in Computer Engineering courses offered by higher education institutions in Portugal presents an added difficulty. This difficulty often depends on the profiles that each institution has or intends to characterize the course offered. The objective of this article is to portray the way in which Portugal and Portuguese higher education institutions have organized themselves to respond to the needs of professionals with competences in Computer Engineering, namely in terms of offering courses and places for students, but also in terms of programming language option chosen as initial, as well as the sequence of initial languages.
Technology enabled learning approach has the potential to enhance teaching, learning and assessment process. The technology enabled learning environment provides digitized collection of artifacts including demonstrati...
详细信息
ISBN:
(纸本)9781424447107
Technology enabled learning approach has the potential to enhance teaching, learning and assessment process. The technology enabled learning environment provides digitized collection of artifacts including demonstrations and resources with animations and visualizations. The proposed model has Incorporated the technology enabled learning concepts to teach programming languages. A model was developed where we can trace the sequence of execution of the program and the arrangement of data in the memory, which gives a clear visualization of the program. The model developed can be used for training learners on programming. This can be implemented in classroom teaching and also can be made online. Online chat is also provided for discussions and facility to post the doubts and clarify them immediately without disturbing the class. Finally, it provides an environment for easy learning of programming languages and makes it easier to understand the difficult concepts with simple visualizations. This facilitates the learners to practice the programs as well as to do assignments and to take self-assessment tests to keep track of their learning.
Although many programming languages and test coverage criteria currently exist, most coverage measurement tools only support select programming languages and coverage criteria. Consequently, multiple measurement tools...
详细信息
ISBN:
(纸本)9780769549682
Although many programming languages and test coverage criteria currently exist, most coverage measurement tools only support select programming languages and coverage criteria. Consequently, multiple measurement tools must be combined to measure coverage for software which uses multiple programming languages such as web applications. However, such combination leads to inconsistent and inaccurate measurement results. In this paper, we describe a consistent and flexible framework for measuring coverage supporting multiple programming languages, called Open Code Coverage Framework (OCCF). OCCF allows users to add new extensions for supporting programming languages and coverage criteria with low development costs. To evaluate the effectiveness of OCCF, sample implementation to support statement coverage and decision coverage for eight programming languages (C, C++, C#, Java, JavaScript, Python, Ruby and Lua) are demonstrated. Additionally, applications of OCCF for localizing faults and minimizing tests are shown.
programming languages have developed significantly over the past century to provide complex models to think about and describe the world and processes of computation. Out of Alan Kay’s Smalltalk and a number of earli...
详细信息
The notion of type to designate a class of values, and the operations on those values, is a central feature of any modern programming language. In fact, we keep calling them programming languages, but the part of a mo...
详细信息
ISBN:
(纸本)9783319401898;9783319401881
The notion of type to designate a class of values, and the operations on those values, is a central feature of any modern programming language. In fact, we keep calling them programming languages, but the part of a modern language devoted to the actual specification of the control flow (that is, programming stricto sensu) is only a fraction of the language itself, and two different languages are not much apart under that perspective. What “makes a language” are much more its modelling capabilities to describe complex relations between portions of code and between data. In a word, the central part of a language is made by the abstraction mechanisms it provides to model its application domain(s), all issues the language theorist may well group together in the type chapter of a language definition.
暂无评论