"uuid","repository link","title","author","contributor","publication year","abstract","subject topic","language","publication type","publisher","isbn","issn","patent","patent status","bibliographic note","access restriction","embargo date","faculty","department","research group","programme","project","coordinates"
"uuid:e80e5662-612e-4b16-9e68-d5d3934ac635","http://resolver.tudelft.nl/uuid:e80e5662-612e-4b16-9e68-d5d3934ac635","An analysis of Java release practices on GitHub","Roest, Vivian (TU Delft Electrical Engineering, Mathematics and Computer Science)","Proksch, S. (mentor); Poulsen, C.B. (graduation committee); Delft University of Technology (degree granting institution)","2024","This paper examines the release practices of Java Maven Repositories on GitHub. Most prior research in this vein has been done on Maven Central, the largest Maven package repository. However, GitHub hosts 15.5 million Java repositories, and is left untapped. Additionally of interest is the fact that GitHub provides a competitor to Maven Central, GitHub packages. To this end, the paper establishes an index of all Java repositories on GitHub. Furthermore, this dataset also includes Maven configuration (POM.xml) files. Additionally, an in-depth analysis is done of a sample of 500 000 of those 15.5 million repositories. This sample ended up containing 170 798 Java Maven repositories that had those POM.xml files. In this sample we discovered that of those 170 798, 6 507 (≈ 3.8%) had set up distribution configuration. Maven Central ended up being the most popular but GitHub packages and others ended up being quite popular as well. In the external repositories configured in those Java projects we notice a distinct lack of GitHub packages, other repositories were still present. We theorize that the lower popularity of GitHub packages is because it requires authentication, which is not trivial to set up. We discuss several approaches that can improve this situation.","Java; Maven; GitHub; scraping; Maven Central; data acquisition","en","bachelor thesis","","","","","","","","","","","","Computer Science and Engineering","CSE3000 Research Project",""
"uuid:ca25bd8e-d9fb-4c76-80d5-c4cc748ff539","http://resolver.tudelft.nl/uuid:ca25bd8e-d9fb-4c76-80d5-c4cc748ff539","From Course to Online Learning Paths: Improving the Teacher's Experience of an Existing Online Node-link Course Tool","Lips, Maarten (TU Delft Electrical Engineering, Mathematics and Computer Science)","Specht, M.M. (mentor); Migut, M.A. (graduation committee); Valle Torre, M. (graduation committee); Delft University of Technology (degree granting institution)","2023","The online website Skill Circuits is a tool developed by teachers at the Delft University of Technology. Skill Circuits is an online learning tool that presents students with a node-link (i.e. a tree) structure where each node represents a skill, containing tasks that aim to teach the skill. The website aims to benefit teachers, by letting them think how all the 'skills' in their course relate and whether or not they have sufficient material to teach these skills. At the same time, the website aims to benefit students by giving them a learning path to follow, where each step is a small task, and each skill is visually connected to previous skills, showing how the learning material is connected.
This thesis aimed to help new teachers understand the concept of these node-link structures --- called skill circuits --- and also expand the website with features to help them evaluate their skill circuits, both before and during the course.
A documentation help page was developed, which explained the concept and intended usage of the website and was accompanied by a proof-of-concept skill circuit explaining the same topics. Tools to help evaluate a skill circuit were also developed, which included tools that could be used before the course was held, and tools that used analytics generated by students. One noteworthy tool took inspiration from the Constructive Alignment principle, where a teacher can label parts of their skill circuit with learning objectives to see if there is alignment with their course material.
All of these features were evaluated with a small focus group consisting of teachers, which showed enthusiasm toward the proposed features.","EdTech; Instructional Design; learning analytics; Java; Web Application","en","master thesis","","","","","","","","","","","","Electrical Engineering","",""
"uuid:038ba3fe-f235-467e-9d14-251e7c57d068","http://resolver.tudelft.nl/uuid:038ba3fe-f235-467e-9d14-251e7c57d068","Uncovering secrets of the Maven Repository: Java Build Aspects: An empirical analysis","Bot, Gideon (TU Delft Electrical Engineering, Mathematics and Computer Science)","Keshani, M. (mentor); Proksch, S. (mentor); Chakraborty, S.S. (graduation committee); Delft University of Technology (degree granting institution)","2023","The Maven Central Repository hosts over 11 million packages. As Maven itself is a build tool for Java, the majority of these packages are Java archives.
This research aims to analyze these packages and look into various build aspects of these projects (the research questions): are Java modules used, what Java versions are used and how is the compiler configured? This is done by downloading a subset of these packages and looking at both the final artifact and the attached Project Object Model (Maven configuration). Specifically, one version is randomly selected from each distinct package hosted on Maven Central and then analyzed.
This research helps inform Java language developers and library maintainers. It captures parts of the build system evolution over a span of more than a decade. Precisely, version adoption, reproducibility and desirable build features are all important metrics for project maintainers in any software ecosystem. In the end, 473352 packages were analyzed. Firstly, it was found that Java modules are rare: only 6919 (1.69% of the artifacts with an archive) of the packages use Java modules. Secondly, the most common Java version used is Java SE 8 (182476 packages) representing almost half of all analyzed packages. All long-term support versions (Java SE 8, 11, 17 and 21) make up roughly half of the available packages. Thirdly, only 54.98% of artifacts configure the Maven compiler plugin with the most used parameters being the source and target Java versions. The most common additional compiler flags are verbosity settings, providing more feedback and code analysis from both the linter and compiler.","Java; Maven; Repository; Build Cycle; Configuration","en","bachelor thesis","","","","","","","","","","","","Computer Science and Engineering","CSE3000 Research Project",""
"uuid:f05ab738-0fde-48bc-b3b3-4a8a1345db4c","http://resolver.tudelft.nl/uuid:f05ab738-0fde-48bc-b3b3-4a8a1345db4c","Phased Type Checker For Java: A Type Checker For a Subset of Java Built On Scope Graph Semantics","Thabet, Omar (TU Delft Electrical Engineering, Mathematics and Computer Science)","Delft University of Technology (degree granting institution)","2023","Traditional type-checking programs are typically designed for specific programming languages, re- sulting in complex and tightly coupled imperative implementations. One of the challenges faced by type checkers is ensuring consistent name-binding resolution in the presence of new names and sym- bols added to the environment. To address this issue, Statix, a domain-specific meta-language for specifying static semantics us- ing scope graphs and constraints aims to reduce the gap between the language specification and the implementation of the type checker. Statix rules define the static semantics of language constructs by employing constraints over type terms and con- straints that define and query a scope graph. To demonstrate this concept, Ministatix, an implemen- tation of the Statix core, is utilized to create a sound type checker for a subset of Java. Ministatix re- solves name bindings in an interleaved manner as the scope graph is constructed. This paper examines an alternative method of us- ing scope graphs for type checking, which involves type checking in separate phases in order to ensure stable queries in the scope graph. Thus avoiding complexities associated with name-binding resolu- tion in Ministatix. We provide an explanation of the required phases and compare the phased type checker to Ministatix in terms of supported Java features, testing, code declarativity and readability, and feature extendability","Type Checking; Phased Type Check- ing; Scope Graphs; Stable Variable Name Reso- lution; Java Type Checker","en","bachelor thesis","","","","","","","","2023-07-31","","","","Computer Science and Engineering","CSE3000 Research Project",""
"uuid:dc59471d-6956-450d-bbd7-733ae5ff3f92","http://resolver.tudelft.nl/uuid:dc59471d-6956-450d-bbd7-733ae5ff3f92","Comparing Code extraction from Agda to Java to existing Methods","Zimmerhackl, Lukas (TU Delft Electrical Engineering, Mathematics and Computer Science; TU Delft Programming Languages)","Cockx, J.G.H. (mentor); Escot, L.F.B. (graduation committee); Delft University of Technology (degree granting institution)","2022","Dependent programming languages such as Agda show a lot of promise in creating new ways of writing code, but currently suffer from a lack of support and features. In this paper we attempt to create a new back-end for Agda targeting Java which has a huge and thriving ecosystem.
We implement the new back-end for Agda in Haskell and we describe the benefits and drawbacks of targeting Java. Firstly we go into the existing methods of compiler Agda, then we go into how to compile Agda to Java and what the main challenges where creating the compiler and what solutions were implemented to solve these. Afterwards Agda2Java is compared to the existing methods of compiling Agda code by means of benchmarks and analyzing the execution time. We show that at its current state, Java does not seem to be a promising back-end for Agda, but that there is work being done on Java that might change this perception.","Agda; Java; Agda2Java; Code Extraction; Compilation","en","bachelor thesis","","","","","","","","","","","","Computer Science and Engineering","CSE3000 Research Project",""
"uuid:bf649e9c-9d53-4e8c-a91b-f0a6b6aab733","http://resolver.tudelft.nl/uuid:bf649e9c-9d53-4e8c-a91b-f0a6b6aab733","Machine Learning for Software Refactoring: a Large-Scale Empirical Study","Gerling, Jan (TU Delft Electrical Engineering, Mathematics and Computer Science)","Finavaro Aniche, M. (mentor); van Deursen, A. (graduation committee); Erkin, Z. (graduation committee); Delft University of Technology (degree granting institution)","2020","Refactorings tackle the challenge of architectural degradation of object-oriented software projects by improving its internal structure without changing the behavior. Refactorings improve software quality and maintainability if applied correctly. However, identifying refactoring opportunities is a challenging problem for developers and researchers alike. In a recent work, machine learning algorithms have shown great potential to solve this problem. This thesis used RefactoringMiner to detect refactorings in open-source Java projects and computed code metrics by static analysis. We defined the refactoring opportunity detection problem as a binary classification problem and deployed machine learning algorithms to solve it. The models classify between a specific refactoring type and a stable class using the metrics as features. Multiple machine learning experiments were designed based on the results of an empirical study of the refactorings. For this work, we created the largest data set of refactorings in Java source code to date, including 92800 open-source projects from GitHub with a total of 33.67 million refactoring samples. The data analysis revealed that Class- and Package-Level refactorings occur most frequently in early development stages of a class, Method- and Variable-Level refactorings are applied uniformly during the development of a class. The machine learning models achieve high performance ranging from 80\% to 89\% total average accuracy for different configurations of the refactoring opportunity prediction problem on unseen projects. Selecting a high Stable Commit Threshold (K) improves the recall of the models significantly, but also strongly reduces the generalizability of the models. The Random Forest (RF) classifier shows great potential for the refactoring opportunity detection, it can adapt to various configurations of the problem, identifies a large variety of relevant metrics in the data and is able to distinguish different refactoring types. This work shows that for solving the refactoring opportunity detection problem a large variety of metrics is required, as a small set of metrics cannot represent the complexity of the problem.","Refactoring; software engineering; machine learning; data set; open source; Java","en","master thesis","","","","","","http://doi.org/10.5281/zenodo.4267824 Appendix: Data Analysis and Machine Learning Experiments ShowEdit http://doi.org/10.5281/zenodo.4267711 Appendix: Refactoring Data Set ShowEdit https://github.com/refactoring-ai/Data-Collection Repository link Refactoring Mining Tool ShowEdit https://github.com/refactoring-ai/Machine-Learning Repository link Machine Learning Pipeline","","","","","","Computer Science","",""
"uuid:1fe836a3-1874-497e-b05e-666588168717","http://resolver.tudelft.nl/uuid:1fe836a3-1874-497e-b05e-666588168717","Learning Off-By-One Mistakes: An Empirical Study on Different Deep Learning Models","Sellik, Hendrig (TU Delft Electrical Engineering, Mathematics and Computer Science)","Finavaro Aniche, M. (mentor); Paridon, Onno van (graduation committee); Hauff, C. (graduation committee); van Deursen, A. (graduation committee); Delft University of Technology (degree granting institution)","2020","Mistakes in binary conditions are a source of error in many software systems. They happen when developers use < or > instead of <= or >=. These boundary mistakes are hard to find for developers and pose a manual labor-intensive work. While researches have been proposing solutions to identify errors in boundary conditions, the problem remains a challenge. In this thesis, we propose deep learning models to learn mistakes in boundary conditions and train our model on approximately 1.6M examples with faults in different boundary conditions. We achieve an accuracy of 85.06%, a precision of 85.23% and a recall of 84.82% on a controlled dataset. Additionally, we perform tests on 41 real-world boundary condition bugs found from GitHub and try to find bugs from the Java project of Adyen. However, the false-positive rate of the model remains an issue. We hope that this work paves the way for future developments in using deep learning models for defect prediction.","Deep learning; java; off-by-one; error; detection; Machine Learning","en","master thesis","","","","","","","","","","","","Computer Science","",""
"uuid:af699991-77ca-4be2-9339-9fb1e9273690","http://resolver.tudelft.nl/uuid:af699991-77ca-4be2-9339-9fb1e9273690","Investigating deprecation misuse: A taxonomy, alternatives, controlled experiment, and experiment platform","Bridié, Dereck (TU Delft Electrical Engineering, Mathematics and Computer Science)","van Deursen, Arie (mentor); Sawant, Anand (graduation committee); Delft University of Technology (degree granting institution)","2020","Deprecation in Java is a language feature that allows API producers to mark program elements as obsolete. However, previous work has identified that this mechanism is co-opted to indicate another concept entirely: a misuse of deprecation. This leaves room for improvement because deprecation warning mechanisms do not fully describe the true reasoning with which API producers choose to misuse the deprecation mechanism. In this thesis, we create a taxonomy of five reasons why API producers misuse the deprecation functionality found in open-source software by analyzing 763 methods. Using this taxonomy, we create alternatives meant to help API producers avoid deprecation misuse by introducing five new annotations meant to be specific in API abnormalities. To test this proposed alternative, we conduct a user study. However, as no current experimental settings fit our needs, we create an experimental platform, RESPIRED, publishing it to improve the state-of-the-art in software engineering experiments. Finally, we test our alternatives using this platform, finding that changing only the warning text does not have a significant impact on developers.","java; deprecation; misuse; Controlled Experiment","en","master thesis","","","","","","","","","","","","Computer Science","",""
"uuid:fb66b583-3367-4722-be46-58bbd818b93c","http://resolver.tudelft.nl/uuid:fb66b583-3367-4722-be46-58bbd818b93c","Socio-Hydrology of Keduang Sub-basin in Central Java, Indonesia using case study approach: Understanding the relation between hydrology of Keduang sub-basin and social aspects using qualitative case study","Wahyu Satrio Ardiko, Wahyu (TU Delft Civil Engineering and Geosciences)","Mostert, E. (mentor); Hermans, L.M. (graduation committee); Hoes, O.A.C. (graduation committee); Delft University of Technology (degree granting institution)","2019","Since coined in 2011, socio-hydrology studies have been dominated with mathematical models developed by mostly hydrologists, which often did not take social aspects into account so seriously. Some people argued that more attention into the social part of socio-hydrology should be given, because often the social aspects were too oversimplified. This thesis research tried to dig deeper into the social aspects of a socio-hydrology system. Keduang sub-basin was chosen to be the case study, as it has a sedimentation problem which has caused a huge operational problem of Gajah Mungkur dam, a multipurpose dam that mainly works as a flood control and hydropower plant in Solo river basin, the largest basin in Java Island of Indonesia.
This research used the case study research approach proposed by Yin (2013). Three different analysis were done to examine the system: stakeholder analysis to identify the relevant actors and their characteristics, historical events analysis to examine what the actors have done that were related to the sedimentation issue, and Socio-cultural, Technological, Economic, Environmental, Political, Legal and Ethical (STEEPLE) analysis, to investigate those each sectors as external factors that might influence the decision making of the related actors. To summarize the analysis, a conceptual model was created to describe the socio-hydrology system of Keduang sub-basin.
There are a total of 10 relevant actors in the system, which come from 3 different groups: government, society and external actors. The government consists of 7 government agencies, the society represents farmers, and the external factors consist of researchers and donators. Between these 3 groups of actors, there is a feedback loop connection between the government and the society, which implies that the government has created some programs based on the society characteristic. Meanwhile, the external actors only interact with the government towards coordination.
The human-water interactions are different between the government and society, the government has a negative feedback loop with the water system, which means the government reduce what occurs in the water system, for example the high sediment in the system influences the government to remove the sediment. Surprisingly, it is not the case for the society, as it has a positive feedback loop especially regarding high sediments. Once the river had high sediments, people started to throw more garbage there thinking it would not be back clean, which would make the river even worse.
The actions done by the government and society are not only influenced by the water system, but also other external factors. For the government, economic, socio-cultural and politic factors are very influential to their actions. On the other hand, economic and socio-cultural factors are very influential to the society actions. These external factors seem to be more influential than the water system itself for their actions towards the water system.
Qualitative socio-hydrology study is clearly different with the quantitative study. Qualitative focuses on the why and how of relations in the system. It can give a good understanding on how such relations occur in the system. Hence, qualitative study can complement the quantitative study so that the model for quantitative study will not be oversimplified and based on valid reasoning.