Open Access. Powered by Scholars. Published by Universities.®

Physical Sciences and Mathematics Commons

Open Access. Powered by Scholars. Published by Universities.®

Programming Languages and Compilers

Java

Institution
Publication Year
Publication
Publication Type

Articles 1 - 30 of 45

Full-Text Articles in Physical Sciences and Mathematics

Chatgpt, Can You Generate Solutions For My Coding Exercises? An Evaluation On Its Effectiveness In An Undergraduate Java Programming Course, Eng Lieh Ouh, Benjamin Gan, Kyong Jin Shim, Swavek Wlodkowski Jul 2023

Chatgpt, Can You Generate Solutions For My Coding Exercises? An Evaluation On Its Effectiveness In An Undergraduate Java Programming Course, Eng Lieh Ouh, Benjamin Gan, Kyong Jin Shim, Swavek Wlodkowski

Research Collection School Of Computing and Information Systems

In this study, we assess the efficacy of employing the ChatGPT language model to generate solutions for coding exercises within an undergraduate Java programming course. ChatGPT, a large-scale, deep learning-driven natural language processing model, is capable of producing programming code based on textual input. Our evaluation involves analyzing ChatGPT-generated solutions for 80 diverse programming exercises and comparing them to the correct solutions. Our findings indicate that ChatGPT accurately generates Java programming solutions, which are characterized by high readability and well-structured organization. Additionally, the model can produce alternative, memory-efficient solutions. However, as a natural language processing model, ChatGPT struggles with coding …


Review Java Basics In 2 Weeks (Slides), Shoshana Marcus Jan 2023

Review Java Basics In 2 Weeks (Slides), Shoshana Marcus

Open Educational Resources

No abstract provided.


Cp6200 Javaprogramming2 Oer - Oop Assignment - Item And Shopping Cart Classes, Shoshana Marcus Jan 2023

Cp6200 Javaprogramming2 Oer - Oop Assignment - Item And Shopping Cart Classes, Shoshana Marcus

Open Educational Resources

No abstract provided.


Cp 6200 Java Programming 2 Syllabus (Oer), Shoshana Marcus Jan 2023

Cp 6200 Java Programming 2 Syllabus (Oer), Shoshana Marcus

Open Educational Resources

No abstract provided.


Cp6200 Javaprogramming2 Oer - Oop Course Project, Shoshana Marcus Jan 2023

Cp6200 Javaprogramming2 Oer - Oop Course Project, Shoshana Marcus

Open Educational Resources

No abstract provided.


Android Game, Ryan Weston Jan 2020

Android Game, Ryan Weston

Williams Honors College, Honors Research Projects

The purpose of this project was to create an endless runner game for Android coded in Java and XML and developed in Android Studio. In the game, the player controls a frog that jumps from lily pad to lily pad to avoid logs moving toward the player. The player must also maneuver the lily pads as they can randomly disappear. There are three difficulties in the game that vary the disappearance rate of lily pads as well as the frequency and acceleration rate of the log obstacles. The game also has a scoring system and saves the high score locally …


Semantic Patches For Java Program Transformation (Artifact), Hong Jin Kang, Thung Ferdian, Julia Lawall, Gilles Muller, Lingxiao Jiang, David Lo Jul 2019

Semantic Patches For Java Program Transformation (Artifact), Hong Jin Kang, Thung Ferdian, Julia Lawall, Gilles Muller, Lingxiao Jiang, David Lo

Research Collection School Of Computing and Information Systems

The program transformation tool Coccinelle is designed for making changes that is required in many locations within a software project. It has been shown to be useful for C code and has been been adopted for use in the Linux kernel by many developers. Over 6000 commits mentioning the use of Coccinelle have been made in the Linux kernel. Our artifact, Coccinelle4J, is an extension to Coccinelle in order for it to apply program transformations to Java source code. This artifact accompanies our experience report “Semantic Patches for Java Program Transformation”, in which we show a case study of applying …


Less-Java, More Learning: Language Design For Introductory Programming, Zamua Nasrawt May 2018

Less-Java, More Learning: Language Design For Introductory Programming, Zamua Nasrawt

Senior Honors Projects, 2010-2019

Less-Java is a new procedural programming language with static, strong, and inferred typing, native unit testing, and support for basic object-oriented constructs. These features make programming in Less-Java more intuitive than traditional introductory languages, which will allow professors to dedicate more class time to overarching computer science concepts and less to syntax and language-specific quirks.


Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara Apr 2018

Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do not use) new language features is important in programming language research and engineering because it gives designers insight into the usability of the language to create meaning programs in that language. This knowledge, in turn, can drive future innovations …


Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara Apr 2018

Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do not use) new language features is important in programming language research and engineering because it gives designers insight into the usability of the language to create meaning programs in that language. This knowledge, in turn, can drive future innovations …


Project Emerald: Designing A Language To Be Fun, Addison Bostian Apr 2018

Project Emerald: Designing A Language To Be Fun, Addison Bostian

Scholars Day

For a computer language to be fun, it needs to be flexible, powerful, and easy to use. Emerald is a compromise between all of these features.


Project Emerald: Designing A Language To Be Fun, Addison Bostian Jan 2018

Project Emerald: Designing A Language To Be Fun, Addison Bostian

Honors Theses

I designed the language described here to be, first and foremost, fun. I wanted it to be a programmer's go-to language, the language that you pick up for personal projects or utilities. I felt the way to make this happen was to make it fun to write in. In order to accomplish this, the language derives from several existing languages, taking what I believed were the best parts of each of them. Combining principles from multiple languages sounds like a good idea, I quickly ran into problems that would make developing a compiler extremely difficult, if not impossible. Because of …


Defaultification Refactoring: A Tool For Automatically Converting Java Methods To Default, Raffi T. Khatchadourian, Hidehiko Masuhara Oct 2017

Defaultification Refactoring: A Tool For Automatically Converting Java Methods To Default, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Enabling interfaces to declare (instance) method implementations, Java 8 default methods can be used as a substitute for the ubiquitous skeletal implementation software design pattern. Performing this transformation on legacy software manually, though, may be non-trivial. The refactoring requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods. All of this is necessary to preserve type-correctness and confirm semantics preservation. We demonstrate an automated refactoring tool called Migrate Skeletal Implementation to Interface for transforming legacy Java code to use the new default construct. The …


Convergence Technologies For Sensor Systems In The Next Generation Networks, Conor Gildea, Declan Barber Jun 2017

Convergence Technologies For Sensor Systems In The Next Generation Networks, Conor Gildea, Declan Barber

The ITB Journal

This paper describes an approach to the internetworking of sensory nodes in a converged network environment. This preliminary investigation of sensory network creation is driven by a joint applied research project which seeks to establish the feasibility of the real-time remote monitoring of animal welfare while in transit between Ireland, Europe and the Middle East. This paper examines the use of Java to create sensor services in converging architectures which leverage the Internetworking protocols and describes our implementation of such a system.


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara May 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive …


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara May 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 introduces enhanced interfaces, allowing for default (instance) methods that implementers will inherit if none are provided [3]. Default methods can be used [2] as a replacement of the skeletal implementation pattern [1], which creates abstract skeletal implementation classes that implementers extend. Migrating legacy code using the skeletal implementation pattern to instead use default methods can require significant manual effort due to subtle language and semantic restrictions. It requires preserving typecorrectness by analyzing complex type hierarchies, resolving issues arising from multiple inheritance, reconciling differences between class and interface methods, and ensuring tie-breakers with overriding class methods do not alter …


Empirical Study Of Usage And Performance Of Java Collections, Diego Costa, Artur Andrzejak, Janos Seboek, David Lo Apr 2017

Empirical Study Of Usage And Performance Of Java Collections, Diego Costa, Artur Andrzejak, Janos Seboek, David Lo

Research Collection School Of Computing and Information Systems

Collection data structures have a major impact on the performance of applications, especially in languages such as Java, C#, or C++. This requires a developer to select an appropriate collection from a large set of possibilities, including different abstractions (e.g. list, map, set, queue), and multiple implementations. In Java, the default implementation of collections is provided by the standard Java Collection Framework (JCF). However, there exist a large variety of less known third-party collection libraries which can provide substantial performance benefits with minimal code changes.


Pop-Up Java: An Augmented Reality Mobile Game To Teach Java, Richard Myers Jan 2017

Pop-Up Java: An Augmented Reality Mobile Game To Teach Java, Richard Myers

Georgia Undergraduate Research Conference

As computers become more and more ubiquitous, it becomes increasingly important and prevalent to teach coding. Coding builds important life skills such as organization, higher order thinking, self-esteem, socialization and teamwork, among many others. However, learning the skills necessary to design and create an efficient program from scratch takes a lot of practice that can often be confusing and frustrating to newcomers.

There are a large number of programming languages in the world, each with their own merits. The TIOBE Programming Community Index calculates the popularity of programming languages by tallying search queries on major search engines, and shows that …


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara Jan 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi T. Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive …


Writing Jml Specifications Using Java 8 Streams, Yoonsik Cheon, Zejing Cao, Khandoker Rahad Nov 2016

Writing Jml Specifications Using Java 8 Streams, Yoonsik Cheon, Zejing Cao, Khandoker Rahad

Departmental Technical Reports (CS)

JML is a formal behavioral interface specification language for Java to document Java program modules such as classes and interfaces. When composing JML specifications, one frequently writes assertions involving a collection of values. In this paper we propose to use Java 8 streams for writing more concise and cleaner assertions on a collection. The use of streams in JML can be minimal and non-invasive in the conventional style of writing assertions. It can also be holistic to write all assertions in the abstract state defined by streams. We perform a small case study to illustrate our approach and show its …


Mining Revision Histories To Detect Cross-Language Clones Without Intermediates, Lingxiao Jiang, Zhiming Peng, Lingxiao Jiang, Hao Zhong, Haibo Yu, Jianjun Zhao Sep 2016

Mining Revision Histories To Detect Cross-Language Clones Without Intermediates, Lingxiao Jiang, Zhiming Peng, Lingxiao Jiang, Hao Zhong, Haibo Yu, Jianjun Zhao

Research Collection School Of Computing and Information Systems

To attract more users on different platforms, many projects release their versions in multiple programming languages (e.g., Java and C#). They typically have many code snippets that implement similar functionalities, i.e., cross-language clones. Programmers often need to track and modify cross-language clones consistently to maintain similar functionalities across different language implementations. In literature, researchers have proposed approaches to detect cross-language clones, mostly for languages that share a common intermediate language (such as the .NET language family) so that techniques for detecting single-language clones can be applied. As a result, those approaches cannot detect cross-language clones for many projects that are …


Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara Mar 2016

Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara

Publications and Research

The skeletal implementation pattern is a software design pattern that defines an abstract class that provides a partial interface implementation. However, since Java allows only single class inheritance, if implementers decide to extend a skeletal implementation, they will not be allowed to extend any other class. Also, discovering the skeletal implementation may require a global analysis. Java 8 enhanced interfaces alleviate these problems by enabling interfaces to contain (default) method implementations, which implementers inherit. Java classes are then free to extend a different class, and a separate abstract class is no longer needed; developers considering implementing an interface need only …


Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara Mar 2016

Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara

Publications and Research

The skeletal implementation pattern is a software design pattern consisting of defining an abstract class that provides a partial interface implementation. However, since Java allows only single class inheritance, if implementers decide to extend a skeletal implementation, they will not be allowed to extend any other class. Also, discovering the skeletal implementation may require a global analysis. Java 8 enhanced interfaces alleviate these problems by allowing interfaces to contain (default) method implementations, which implementers inherit. Java classes are then free to extend a different class, and a separate abstract class is no longer needed; developers considering implementing an interface need …


Automated Refactoring Of Legacy Java Software To Enumerated Types, Raffi T. Khatchadourian Jan 2016

Automated Refactoring Of Legacy Java Software To Enumerated Types, Raffi T. Khatchadourian

Publications and Research

Modern Java languages introduce several new features that offer significant improvements over older Java technology. In this article we consider the new enum construct, which provides language support for enumerated types. Prior to recent Java languages, programmers needed to employ various patterns (e.g., the weak enum pattern) to compensate for the absence of enumerated types in Java. Unfortunately, these compensation patterns lack several highly-desirable properties of the enum construct, most notably, type safety. We present a novel fully-automated approach for transforming legacy Java code to use the new enumeration construct. This semantics-preserving approach increases type safety, produces code that is …


Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi T. Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe Nov 2015

Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi T. 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 …


Conception, Design And Construction Of A Remote Wifi Vehicle Using Arduino, Clayton Broman Mar 2014

Conception, Design And Construction Of A Remote Wifi Vehicle Using Arduino, Clayton Broman

Physics

The scope of this senior project was to make a wireless vehicle controlled via Internet Protocol. This vehicle operates remotely and without direct line of sight. Commands are sent from a program running on a laptop and transmitted using a wireless router. Visual data is retrieved from a network camera, mounted on the vehicle, in real-time, to see where you are going.


Extending Java For Android Programming, Yoonsik Cheon Apr 2012

Extending Java For Android Programming, Yoonsik Cheon

Departmental Technical Reports (CS)

Android is one of the most popular platforms for developing mobile applications. However, its framework relies on programming conventions and styles to implement framework-specific concepts like activities and intents, causing problems such as reliability, readability, understandability, and maintainability. We propose to extend Java to support Android framework concepts explicitly as built-in language features. Our extension called Android Java will allow Android programmers to express these concepts in a more reliable, natural, and succinct way.


Technologies For Ubiquitous Supercomputing: A Java Interface To The Nexus Communication System, Ian Foster, George K. Thiruvathukal, Steven Tuecke Nov 2011

Technologies For Ubiquitous Supercomputing: A Java Interface To The Nexus Communication System, Ian Foster, George K. Thiruvathukal, Steven Tuecke

George K. Thiruvathukal

We use the term ubiquitous supercomputing to refer to systems that integrate low- and mid-range computing systems, advanced networks and remote high-end computers with the goal of enhancing the computational power accessible from local environments. Such systems promise to enable new applications in areas as diverse as smart instruments and collaborative environments. However, they also demand tools for transporting code between computers and for establishing flexible, dynamic communication structures. In this article, we propose that these requirements be satisfied by introducing Java classes that implement the global pointer and remote service request mechanisms defined by a communication library called Nexus. …


Enumeration Refactoring: A Tool For Automatically Converting Java Constants To Enumerated Types, Raffi T. Khatchadourian, Benjamin Muskalla Sep 2010

Enumeration Refactoring: A Tool For Automatically Converting Java Constants To Enumerated Types, Raffi T. Khatchadourian, Benjamin Muskalla

Publications and Research

Java 5 introduces several new features that significantly improve older Java technology. We consider the new enum construct, which provides language support for enumerated types. Before Java 5, programmers needed to employ various patterns to compensate for the absence of enumerated types in Java. Unfortunately, these compensation patterns lack several highly desirable properties of the enum construct, notably type-safety. We demonstrate an automated refactoring tool called Convert Constants to Enum for transforming legacy Java code to use the new enumeration construct. An interprocedural type inferencing algorithm that tracks the flow of enumerated values drives the approach, and the tool is …


Freedom Of Choice As A Motivational Factor In Active Learning, Atanas Radenski Jul 2009

Freedom Of Choice As A Motivational Factor In Active Learning, Atanas Radenski

Mathematics, Physics, and Computer Science Faculty Articles and Research

Freedom to choose what, when, and how to contribute in a learning process can motivate students to actively engage and achieve more in their studies. However, freedom of choice complicates course management and may deter instructors from allowing such freedom. Our approach is to utilize existing functionality of course management systems such as Moodle to automatically facilitate and coordinate free student choices and provide much needed relief for instructors at the same time. Using Moodle we have developed novel digital study packs that blend freedom of choice with guidance and control. Our survey shows that assisted freedom of choice is …