Fitness-for-service assessment of a cracked component intends to evaluate its remaining strength and remaining life to support the implementation of a maintenance plan. This research aims to develop a fitness-for-serv...
详细信息
Fitness-for-service assessment of a cracked component intends to evaluate its remaining strength and remaining life to support the implementation of a maintenance plan. This research aims to develop a fitness-for-service assessment software to facilitate the task. The software development process included identifying the software specifications, designing the software structure, manipulating the information in the standard for programming, the graphical user interface design, and finally verification. The assessment procedure employed in this study was the third edition of the standard API RP 579. The software structure was designed using an object-oriented concept. The software can perform integrity assessment levels 1, 2, and 3 option B, leak-before-break assessment, and remaining life assessment for a cracked cylinder that has a through-thickness crack or semi-elliptical surface crack oriented in an axial or circumferential direction. The applied loads could be a nominal axial force, bending moment, and internal pressure, as well as stress profiles perpendicular to the crack plane due to mechanical, thermal, and residual stresses. Accuracy of the software was demonstrated by applying it to example problems. Some aspects of the software extensibility were conceptually discussed.
In this paper, we show how stream fusion, a program transformation technique used in functional programming, can be adapted for an object-oriented setting. This makes it possible to have more Stream operators than the...
详细信息
ISBN:
(纸本)9781450376389
In this paper, we show how stream fusion, a program transformation technique used in functional programming, can be adapted for an object-oriented setting. This makes it possible to have more Stream operators than the ones currently provided by the Java Stream API. The addition of more operators allows for a greater deal of expressiveness. To this extent, we show how these operators are incorporated in the stream setting. Furthermore, we also demonstrate how a specific set of optimizations eliminates overheads and produces equivalent code in the form of for loops. In this way, programmers are relieved from the burden of writing code in such a cumbersome style, thus allowing for a more declarative and intuitive programming approach.
According to the subjective opinions of many industry experts, object immutability is a virtue in object-oriented programming, since it leads to side-effect-free design, cleaner code, better concurrency, and many othe...
详细信息
According to the subjective opinions of many industry experts, object immutability is a virtue in object-oriented programming, since it leads to side-effect-free design, cleaner code, better concurrency, and many other factors. However, it has never been empirically demonstrated exactly how immutability affects quality metrics of object-oriented programs. In the following research, we analyzed 97508 classes from 240 public Java repositories to find out how immutability affects the size of the code.
programming comprises a multitude of involved skills and abilities. To assess these, an even larger multitude of tasks exists, ranging from very complex to basal levels. Recent demands call for the assessment of basal...
详细信息
ISBN:
(纸本)9781450363013
programming comprises a multitude of involved skills and abilities. To assess these, an even larger multitude of tasks exists, ranging from very complex to basal levels. Recent demands call for the assessment of basal skills, with the aim to figure out possible problems of learners more precisely. In order to read and interpret source code sufficiently, students must be able to recognize given concepts in a source code, e.g. to identify the objects and methods in an object-oriented program. Whether this skill relies solely on conceptual knowledge and the abilities in handling syntax is still unclear. This study gives evidence that isolated skills in these areas are outperformed by the interaction of both areas. We developed a test consisting of conceptual questions, fill-in-the-Java-keyword items and highlighting items. We investigated whether the knowledge about object orientation and the skills in handling Java syntax sufficiently predict the ability to recognize concepts in Java source code via a multiple linear regression. We found that the model with interaction term explains the data better compared to the null model, the isolated predictors or combined predictors without interaction term. This leads to the conclusion that even though programming consists of skills in certainly different areas, it is more important to interconnect these areas with each other than to teach them in an isolated manner.
This study was conducted in a first year university course in computer programming. We investigated how the use of a digital assessment tool, consisting of quantitative weighting and which simultaneously generate qual...
详细信息
ISBN:
(纸本)9781538695067
This study was conducted in a first year university course in computer programming. We investigated how the use of a digital assessment tool, consisting of quantitative weighting and which simultaneously generate qualitative formative feedback, improves the quality of the assessment and not least supports the students' further learning. Analysis of quantitative data generated by the digital system, as well as qualitative data from involved parties, shows clear improvements in validity and reliability in assessment. All students received automated feedback on their exam. In this paper, we show how the use if the tool contributed to students' learning and academical development. Furthermore, we present the process of developing this system for evaluation and automatic feedback, and conclude with results seen from teachers, reviewers and students' perspectives.
Computer scientists are well-versed in dealing with data structures. The same cannot be said about their dual: codata. Even though codata is pervasive in category theory, universal algebra, and logic, the use of codat...
详细信息
ISBN:
(纸本)9783030171841;9783030171834
Computer scientists are well-versed in dealing with data structures. The same cannot be said about their dual: codata. Even though codata is pervasive in category theory, universal algebra, and logic, the use of codata for programming has been mainly relegated to representing infinite objects and processes. Our goal is to demonstrate the benefits of codata as a general-purpose programming abstraction independent of any specific language: eager or lazy, statically or dynamically typed, and functional or object-oriented. While codata is not featured in many programming languages today, we show how codata can be easily adopted and implemented by offering simple inter-compilation techniques between data and codata. We believe codata is a common ground between the functional and object-oriented paradigms;ultimately, we hope to utilize the Curry-Howard isomorphism to further bridge the gap.
We have developed and experimented with an approach to teach low-level Java concurrency abstractions in our first required course for CS majors, which assumes knowledge of procedural programming. The driving problems ...
详细信息
ISBN:
(纸本)9781728148946
We have developed and experimented with an approach to teach low-level Java concurrency abstractions in our first required course for CS majors, which assumes knowledge of procedural programming. The driving problems are visualized simulations of multiple physical objects in motion that may (a) be confined to a shared space and (b) coordinate with each other. Such simulations do not require any domain-specific knowledge such as sorting and image processing for driving problems and exercises, and their implementation demonstrates the benefits of object-based programming. They allow focus on both the performance and programmability benefits of concurrency, provide analogies for an abstraction-independent explanation of concurrency concepts, and can be used to incrementally motivate all low-level concurrency abstractions and visualize the effect of using and not using these abstractions. Layered simulation-based worked examples illustrating the abstractions were presented and easily understood in multiple offerings of a course that implemented this approach. Students implemented non-trivial assignments based on these abstractions, even when they were optional, did not face major obstacles because of visual error feedback, and were excited by concurrency as they felt it empowered them to implement arbitrary applications early.
Machine learning techniques have become increasingly common due to the extension of their application domains and because they can improve their performance when exposed to new data. Several methods have been proposed...
详细信息
ISBN:
(纸本)9781450372374
Machine learning techniques have become increasingly common due to the extension of their application domains and because they can improve their performance when exposed to new data. Several methods have been proposed to address problems of the area, bringing the challenge of comparing different methods to find the one that best solves a problem. Frameworks and libraries focused on learning algorithms can reduce this effort. This paper describes the UFJF-MLTK, an object-oriented framework that helps to choose between different methods, in the development of new algorithms through the instantiation of a C++ class architecture that covers various types of learning algorithms and also helps in teaching the subject. We discuss the problems faced in the project architecture, the components of the framework, the algorithms that currently compose it, how it was documented and examples of its instantiation.
Programmable accelerators aim to provide the flexibility of traditional CPUs, with greatly improved performance and energy-efficiency. Arguably, the greatest impediment to the widespread adoption of programmable accel...
详细信息
ISBN:
(纸本)9781728136134
Programmable accelerators aim to provide the flexibility of traditional CPUs, with greatly improved performance and energy-efficiency. Arguably, the greatest impediment to the widespread adoption of programmable accelerators, like GPUs, is the software engineering overhead involved in getting the code to execute correctly. To help combat this issue, GPGPU computing has matured from its origins as a collection of graphics API hacks to include advanced programming features, including object-oriented programming. This level of support, in combination with a shared virtual memory space between the CPU and GPU, make it possible for rich object-oriented frameworks to execute on GPUs with little porting effort. However, executing this type of flexible code on a massively parallel accelerator introduces overhead that has not been well studied. In this poster, we analyze the direct overhead of virtual function calls on contemporary GPUs. Using the latest GPU architectures and compilers, this poster performs the analysis of how virtual function calls are implemented on GPUs. We quantify the direct overhead incurred from contemporary implementations and show that the massively multithreaded nature of GPUs creates deficiencies and opportunities not found in CPU implementations of virtual function calls.
This research paper presents Imikode, a virtual reality (VR)-based learning game to support the teaching and learning of object-oriented programming (OOP) concepts in computing education. The system was implemented us...
详细信息
ISBN:
(纸本)9781450377157
This research paper presents Imikode, a virtual reality (VR)-based learning game to support the teaching and learning of object-oriented programming (OOP) concepts in computing education. The system was implemented using Google Cardboard SDK and works with any Cardboard compatible headset. The teacher can use Imikode to introduce OOP class in an immersive and engaging way. This early prototype provides basic features to help introduce OOP concepts. We aim at extending it using Artificial Intelligence (AI), by adding a conversational agent able to parse erroneous statements and provide adequate instructions on how to fix them.
暂无评论