Open Access. Powered by Scholars. Published by Universities.®
Programming Languages and Compilers Commons™
Open Access. Powered by Scholars. Published by Universities.®
- Institution
- Publication Year
- Publication
-
- Open Educational Resources (8)
- Research Collection School Of Computing and Information Systems (5)
- Publications and Research (3)
- Dissertations and Theses Collection (Open Access) (2)
- Mathematics, Physics, and Computer Science Faculty Articles and Research (2)
-
- College of Computing and Digital Media Dissertations (1)
- Computer Science Faculty Publications and Presentations (1)
- Computer Science: Faculty Publications and Other Works (1)
- Honors Projects (1)
- International Conference on Information and Communication Technologies (1)
- Northeast Parallel Architecture Center (1)
- Open Educational Resources (OER) (1)
- Research & Publications (1)
- The Downtown Review: An Interdisciplinary Journal Written and Peer-Reviewed by Mandel Honors College Students at Cleveland State University (1)
- Publication Type
Articles 1 - 29 of 29
Full-Text Articles in Programming Languages and Compilers
Do Developers Read Type Information? An Eye-Tracking Study On Typescript, Samuel W. Flint, Robert Dyer, Bonita Sharif
Do Developers Read Type Information? An Eye-Tracking Study On Typescript, Samuel W. Flint, Robert Dyer, Bonita Sharif
Research & Publications
Statically-annotated types have been shown to aid developers in a number of programming tasks, and this benefit holds true even when static type checking is not used. It is hypothesized that this is because developers use type annotations as in-code documentation. In this study, we aim to provide evidence that developers use type annotations as in-code documentation. Understanding this hypothesized use will help to understand how, and in what contexts, developers use type information; additionally, it may help to design better development tools and inform educational decisions. To provide this evidence, we conduct an eye tracking study with 26 undergraduate …
A Survey Of Practical Haskell: Parsing, Interpreting, And Testing, Parker Landon
A Survey Of Practical Haskell: Parsing, Interpreting, And Testing, Parker Landon
Honors Projects
Strongly typed pure functional programming languages like Haskell have historically been confined to academia as vehicles for programming language research. While features of functional programming have greatly influenced mainstream programming languages, the imperative programming style remains pervasive in practical software development. This paper illustrates the practical utility of Haskell and pure functional programming by exploring “hson,” a scripting language for processing JSON developed in Haskell. After introducing the relevant features of Haskell to the unfamiliar reader, this paper reveals how hson leverages functional programming to implement parsing, interpreting, and testing. By showcasing how Haskell’s language features enable the creation of …
Large Language Models For Qualitative Research In Software Engineering: Exploring Opportunities And Challenges, Muneera Bano, Rashina Hoda, Didar Zowghi, Christoph Treude
Large Language Models For Qualitative Research In Software Engineering: Exploring Opportunities And Challenges, Muneera Bano, Rashina Hoda, Didar Zowghi, Christoph Treude
Research Collection School Of Computing and Information Systems
The recent surge in the integration of Large Language Models (LLMs) like ChatGPT into qualitative research in software engineering, much like in other professional domains, demands a closer inspection. This vision paper seeks to explore the opportunities of using LLMs in qualitative research to address many of its legacy challenges as well as potential new concerns and pitfalls arising from the use of LLMs. We share our vision for the evolving role of the qualitative researcher in the age of LLMs and contemplate how they may utilize LLMs at various stages of their research experience.
Fixing Your Own Smells: Adding A Mistake-Based Familiarization Step When Teaching Code Refactoring, Ivan Wei Han Tan, Christopher M. Poskitt
Fixing Your Own Smells: Adding A Mistake-Based Familiarization Step When Teaching Code Refactoring, Ivan Wei Han Tan, Christopher M. Poskitt
Research Collection School Of Computing and Information Systems
Programming problems can be solved in a multitude of functionally correct ways, but the quality of these solutions (e.g. readability, maintainability) can vary immensely. When code quality is poor, symptoms emerge in the form of 'code smells', which are specific negative characteristics (e.g. duplicate code) that can be resolved by applying refactoring patterns. Many undergraduate computing curricula train students on this software engineering practice, often doing so via exercises on unfamiliar instructor-provided code. Our observation, however, is that this makes it harder for novices to internalise refactoring as part of their own development practices. In this paper, we propose a …
Choosing A Sophisticated, Robust, And Secure Programming Language, J. Simon Richard
Choosing A Sophisticated, Robust, And Secure Programming Language, J. Simon Richard
The Downtown Review: An Interdisciplinary Journal Written and Peer-Reviewed by Mandel Honors College Students at Cleveland State University
This paper explores which programming languages maximize the quality and efficiency of software development projects requiring high levels of sophistication, security, and stability. Of the four languages discussed in this paper—C, C++, Java, and Rust—we conclude that Rust is the best for this application.
Supporting Software Engineers With Large Language Model-Based Automation, Ting Zhang
Supporting Software Engineers With Large Language Model-Based Automation, Ting Zhang
Dissertations and Theses Collection (Open Access)
In recent years, software engineering (SE) has witnessed significant growth, leading to the creation and sharing of an abundance of software artifacts such as source code, bug reports, and pull requests. Analyzing these artifacts is crucial for comprehending the sentiments of software developers and automating various SE tasks, ultimately leading to more human-centered automated SE and enhancing software development efficiency. However, the diverse and unstructured nature of software text poses a significant challenge to this analysis. In response, researchers have investigated a variety of approaches, including the utilization of natural language processing techniques. The advent of large language models (LLMs), …
She Elicits Requirements And He Tests: Software Engineering Gender Bias In Large Language Models, Christoph Treude, Hideaki Hata
She Elicits Requirements And He Tests: Software Engineering Gender Bias In Large Language Models, Christoph Treude, Hideaki Hata
Research Collection School Of Computing and Information Systems
Implicit gender bias in software development is a well-documented issue, such as the association of technical roles with men. To address this bias, it is important to understand it in more detail. This study uses data mining techniques to investigate the extent to which 56 tasks related to software development, such as assigning GitHub issues and testing, are affected by implicit gender bias embedded in large language models. We systematically translated each task from English into a genderless language and back, and investigated the pronouns associated with each task. Based on translating each task 100 times in different permutations, we …
Code Generation Based On Inference And Controlled Natural Language Input, Howard R. Dittmer
Code Generation Based On Inference And Controlled Natural Language Input, Howard R. Dittmer
College of Computing and Digital Media Dissertations
Over time the level of abstraction embodied in programming languages has continued to grow. Paradoxically, most programming languages still require programmers to conform to the language's rigid constructs. These constructs have been implemented in the name of efficiency for the computer. However, the continual increase in computing power allows us to consider techniques not so limited. To this end, we have created CABERNET, a Controlled Natural Language (CNL) based approach to program creation. CABERNET allows programmers to use a simple outline-based syntax. This syntax enables increased programmer efficiency.
CNLs have previously been used to document requirements. We have taken this …
Csc 71010/Csci 77100: Programming Languages/Software Engineering, Raffi Khatchadourian
Csc 71010/Csci 77100: Programming Languages/Software Engineering, Raffi Khatchadourian
Open Educational Resources
No abstract provided.
Introduction, Raffi Khatchadourian
Working With Control-Flow Graphs, Raffi Khatchadourian
Working With Control-Flow Graphs, Raffi Khatchadourian
Open Educational Resources
No abstract provided.
Reengineering And Refactoring, Raffi Khatchadourian
Reengineering And Refactoring, Raffi Khatchadourian
Open Educational Resources
No abstract provided.
Building An Ast Eclipse Plug-In, Raffi Khatchadourian
Building An Ast Eclipse Plug-In, Raffi Khatchadourian
Open Educational Resources
Complete the Building an AST Eclipse Plug-in assignment. Once it works, find a medium-sized open-source Java project to run your plugin on. You may want to explore GitHub. Import the project into Eclipse and run your plug-in on it. Report on the following, which may require you to change some of the source code so that it is convenient:
- Project name.
- Project URL.
- Project description.
- The number of classes in the project.
- The number of user-defined methods in the project.
- For each class, the number of method calls.
- Statistics about the method calls:
- The total number of method calls …
Wala Quick Start, Raffi Khatchadourian
Wala Quick Start, Raffi Khatchadourian
Open Educational Resources
Setting up and trying the TJ Watson Library for Analysis (WALA).
Computer Science 521 Intensive Introduction To Programming, Beth Allen
Computer Science 521 Intensive Introduction To Programming, Beth Allen
Open Educational Resources (OER)
This is a comprehensive, intensive introduction to computers, programming, data structures, abstraction, software engineering processes, and problem-solving fundamentals for learners preparing to take graduate-level courses in computer science.
The primary language used in this course is C++, with an introduction to other currently widely used languages, such as Java and Python.
Eclipse, Osgi, And The Java Model, Raffi Khatchadourian
Eclipse, Osgi, And The Java Model, Raffi Khatchadourian
Open Educational Resources
No abstract provided.
Abstract Syntax Trees (Asts) And The Visitor Pattern, Raffi Khatchadourian
Abstract Syntax Trees (Asts) And The Visitor Pattern, Raffi Khatchadourian
Open Educational Resources
No abstract provided.
Novel Deep Learning Methods Combined With Static Analysis For Source Code Processing, Duy Quoc Nghi Bui
Novel Deep Learning Methods Combined With Static Analysis For Source Code Processing, Duy Quoc Nghi Bui
Dissertations and Theses Collection (Open Access)
It is desirable to combine machine learning and program analysis so that one can leverage the best of both to increase the performance of software analytics. On one side, machine learning can analyze the source code of thousands of well-written software projects that can uncover patterns that partially characterize software that is reliable, easy to read, and easy to maintain. On the other side, the program analysis can be used to define rigorous and unique rules that are only available in programming languages, which enrich the representation of source code and help the machine learning to capture the patterns better. …
Tests As Maintainable Assets Via Auto-Generated Spies: A Case Study Involving The Scala Collections Library's Iterator Trait, Konstantin Läufer, John O'Sullivan, George K. Thiruvathukal
Tests As Maintainable Assets Via Auto-Generated Spies: A Case Study Involving The Scala Collections Library's Iterator Trait, Konstantin Läufer, John O'Sullivan, George K. Thiruvathukal
Computer Science: Faculty Publications and Other Works
In testing stateful abstractions, it is often necessary to record interactions, such as method invocations, and express assertions over these interactions. Following the Test Spy design pattern, we can reify such interactions programmatically through additional mutable state. Alternatively, a mocking framework, such as Mockito, can automatically generate test spies that allow us to record the interactions and express our expectations in a declarative domain-specific language. According to our study of the test code for Scala’s Iterator trait, the latter approach can lead to a significant reduction of test code complexity in terms of metrics such as code size (in some …
A Semantics Comparison Workbench For A Concurrent, Asynchronous, Distributed Programming Language, Claudio Corrodi, Alexander Heußner, Christopher M. Poskitt
A Semantics Comparison Workbench For A Concurrent, Asynchronous, Distributed Programming Language, Claudio Corrodi, Alexander Heußner, Christopher M. Poskitt
Research Collection School Of Computing and Information Systems
A number of high-level languages and libraries have been proposed that offer novel and simple to use abstractions for concurrent, asynchronous, and distributed programming. The execution models that realise them, however, often change over time---whether to improve performance, or to extend them to new language features---potentially affecting behavioural and safety properties of existing programs. This is exemplified by SCOOP, a message-passing approach to concurrent object-oriented programming that has seen multiple changes proposed and implemented, with demonstrable consequences for an idiomatic usage of its core abstraction. We propose a semantics comparison workbench for SCOOP with fully and semi-automatic tools for analysing …
Code Coverage And Postrelease Defects: A Large-Scale Study On Open Source Projects, Pavneet Singh Kochhar, David Lo, Julia Lawall, Nachiappan Nagappan
Code Coverage And Postrelease Defects: A Large-Scale Study On Open Source Projects, Pavneet Singh Kochhar, David Lo, Julia Lawall, Nachiappan Nagappan
Research Collection School Of Computing and Information Systems
Testing is a pivotal activity in ensuring the quality of software. Code coverage is a common metric used as a yardstick to measure the efficacy and adequacy of testing. However, does higher coverage actually lead to a decline in postrelease bugs? Do files that have higher test coverage actually have fewer bug reports? The direct relationship between code coverage and actual bug reports has not yet been analyzed via a comprehensive empirical study on real bugs. Past studies only involve a few software systems or artificially injected bugs (mutants). In this empirical study, we examine these questions in the context …
Grace's Inheritance, James Noble, Andrew P. Black, Kim B. Bruce, Michael Homer, Timothy Jones
Grace's Inheritance, James Noble, Andrew P. Black, Kim B. Bruce, Michael Homer, Timothy Jones
Computer Science Faculty Publications and Presentations
This article is an apologia for the design of inheritance in the Grace educational programming language: it explains how the design of Grace’s inheritance draws from inheritance mechanisms in predecessor languages, and defends that design as the best of the available alternatives. For simplicity, Grace objects are generated from object constructors, like those of Emerald, Lua, and Javascript; for familiarity, the language also provides classes and inheritance, like Simula, Smalltalk and Java. The design question we address is whether or not object constructors can provide an inheritance semantics similar to classes.
Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe
Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe
Publications and Research
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is daunting, especially in large and complex systems. We present an automated approach that recommends pointcuts that are likely to require modification due to a certain base-code change and ones that do not. Our hypothesis is that join points selected by a pointcut exhibit common structural characteristics. Patterns describing such commonalities recommend pointcuts that have potentially broken to the developer. The approach …
Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu
Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu
Publications and Research
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. In this paper, we present an automated approach that limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. To illustrate that the motivation behind our proposal is well founded, …
Rejuvenate Pointcut: A Tool For Pointcut Expression Recovery In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Awais Rashid
Rejuvenate Pointcut: A Tool For Pointcut Expression Recovery In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Awais Rashid
Publications and Research
Aspect-oriented programming (AOP) strives to localize the scattered and tangled implementations of crosscutting concerns (CCCs) by allowing developers to declare that certain actions (advice) should be taken at specific points (join points) during the execution of software where a CCC (an aspect) is applicable. However, it is non-trivial to construct optimal pointcut expressions (a collection of join points) that capture the true intentions of the programmer and, upon evolution, maintain these intentions. We demonstrate an AspectJ source-level inferencing tool called rejuvenate pointcut which helps developers maintain pointcut expressions over the lifetime of a software product. A key insight into the …
Enhanced Risk Analysis-Relative Impact Factorization, Basit Shahzad, Tanveer Afzal, Rizwana Irfan
Enhanced Risk Analysis-Relative Impact Factorization, Basit Shahzad, Tanveer Afzal, Rizwana Irfan
International Conference on Information and Communication Technologies
Software engineering is an area of development which always has the risk factor present and software engineering can hardly be done on some straight line. So, the manager has to handle the dynamically changing circumstances in order to complete the job. The target of development team is to develop the software according to the requirements within specified time. Wide variety of risks I are present that may grab the development effort. A good manager must ensure that all measures have been taken against the risks that may possibly come. This paper focuses on determining the relative impact of risk factors …
Object-Oriented Programming And Parallelism, Atanas Radenski
Object-Oriented Programming And Parallelism, Atanas Radenski
Mathematics, Physics, and Computer Science Faculty Articles and Research
Initially, object-orientation and parallelism originated and developed as separate and relatively independent areas. During the last decade, however, more and more researchers were attracted by the benefits from a potential marriage of the two powerful paradigms. Numerous research projects and an increasing number of practical applications were aimed at different forms of amalgamation of parallelism with object-orientation. It has been realized that parallelism is a inherently needed enhancement for the traditional object-oriented programming (OOP) paradigm, and that object orientation can add significant flexibility to the parallel programming paradigm.
Exploiting High Performance Fortran For Computational Fluid Dynamics, Volume 919, Ken Hawick, Geoffrey C. Fox
Exploiting High Performance Fortran For Computational Fluid Dynamics, Volume 919, Ken Hawick, Geoffrey C. Fox
Northeast Parallel Architecture Center
We discuss the High Performance Fortran data parallel programming language as an aid to software engineering and as a tool for exploiting High Performance Computing systems for computational uid dynamics applications. We discuss the use of intrinsic functions, data distribution directives and explicitly parallel constructs to optimize performance by minimizing communications requirements in a portable manner. In particular we use an implicit method such as the ADI algorithm to illustrate the major issues. We focus on regular mesh problems, since these can be efficiently represented by the existing HPF definition, but also discuss issues arising from the use of irregular …
Introducing Objects And Parallelism To An Imperative Programming Language, Atanas Radenski
Introducing Objects And Parallelism To An Imperative Programming Language, Atanas Radenski
Mathematics, Physics, and Computer Science Faculty Articles and Research
The problem of enhancing objects with parallelism has been in the focus of numerous research projects in the recent years, but a satisfactory and commonly accepted solution has not appeared yet. A major problematic point seems to be providing inheritance for parallel objects. The general objective of this paper is to contribute to a better understanding of the language design issues in the area of parallel object-oriented programming (OOP) and, in particular, to design a framework for parallel OOP with multiple inheritance. What makes our proposed framework different from the other parallel OOP languages is its easy to use and …