Gordon Fraser
YOU?
Author Swipe
View article: Detecting Gender Stereotypes in Scratch Programming Tutorials
Detecting Gender Stereotypes in Scratch Programming Tutorials Open
Gender stereotypes in introductory programming courses often go unnoticed, yet they can negatively influence young learners' interest and learning, particularly under-represented groups such as girls. Popular tutorials on block-based progr…
View article: Poster for LitterBox+: An Extensible Framework for LLM-enhanced Scratch Static Code Analysis
Poster for LitterBox+: An Extensible Framework for LLM-enhanced Scratch Static Code Analysis Open
Poster for our ASE 2025 Tool Demonstration Track submission. ArXiv: https://arxiv.org/abs/2509.12021 Implementation LitterBox: https://github.com/se2p/litterbox Scratch-GUI extension: https://github.com/se2p/nuzzlebug
View article: Search-based Hyperparameter Tuning for Python Unit Test Generation
Search-based Hyperparameter Tuning for Python Unit Test Generation Open
Search-based test-generation algorithms have countless configuration options. Users rarely adjust these options and usually stick to the default values, which may not lead to the best possible results. Tuning an algorithm's hyperparameters…
View article: RePurr: Automated Repair of Block-Based Learners’ Programs
RePurr: Automated Repair of Block-Based Learners’ Programs Open
Programming is increasingly taught using dedicated block-based programming environments such as Scratch. While the use of blocks instead of text prevents syntax errors, learners can still make semantic mistakes implying a need for feedback…
View article: Multiclass Classification and Prioritisation of Static Analysis Warnings Using Developer-Labelled Industrial Data
Multiclass Classification and Prioritisation of Static Analysis Warnings Using Developer-Labelled Industrial Data Open
Automatic static code analysis tools are used to identify code quality issues like vulnerabilities or performance problems. In practice, the high number of irrelevant warnings created by such tools is problematic, but can be addressed by p…
View article: RePurr: Automated Repair of Block-Based Learners' Programs
RePurr: Automated Repair of Block-Based Learners' Programs Open
Programming is increasingly taught using block-based languages like Scratch. While the use of blocks prevents syntax errors, learners can still make semantic mistakes, requiring feedback and help. As teachers may be overwhelmed by help req…
View article: Mutation Testing via Iterative Large Language Model-Driven Scientific Debugging
Mutation Testing via Iterative Large Language Model-Driven Scientific Debugging Open
Large Language Models (LLMs) can generate plausible test code. Intuitively they generate this by imitating tests seen in their training data, rather than reasoning about execution semantics. However, such reasoning is important when applyi…
View article: Teaching Loop Testing to Young Learners with the Code Critters Mutation Testing Game
Teaching Loop Testing to Young Learners with the Code Critters Mutation Testing Game Open
Serious games can teach essential coding and testing concepts even to younger audiences. In the Code Critter game critters execute short snippets of block-based code while traversing the game map, and players position magical portals (akin…
View article: AsserT5: Test Assertion Generation Using a Fine-Tuned Code Language Model (Replication Package)
AsserT5: Test Assertion Generation Using a Fine-Tuned Code Language Model (Replication Package) Open
Replication package for our AST 2025 paper ‘AsserT5: Test Assertion Generation Using a Fine-Tuned Code Language Model’ (https://doi.org/10.1109/AST66626.2025.00008; preprint: https://arxiv.org/abs/2502.02708). Contents of the replication p…
View article: Practical Pipeline-Aware Regression Test Optimization for Continuous Integration
Practical Pipeline-Aware Regression Test Optimization for Continuous Integration Open
Massive, multi-language, monolithic repositories form the backbone of many modern, complex software systems. To ensure consistent code quality while still allowing fast development cycles, Continuous Integration (CI) is commonly applied. H…
View article: Many-Objective Neuroevolution for Testing Games
Many-Objective Neuroevolution for Testing Games Open
Generating tests for games is challenging due to the high degree of randomisation inherent to games and hard-to-reach program states that require sophisticated gameplay. The test generator NEATEST tackles these challenges by combining sear…
View article: A Block-Based Testing Framework for Scratch
A Block-Based Testing Framework for Scratch Open
Block-based programming environments like Scratch are widely used in introductory programming courses. They facilitate learning pivotal programming concepts by eliminating syntactical errors, but logical errors that break the desired progr…
View article: Engaging Developers in Exploratory Unit Testing through Gamification
Engaging Developers in Exploratory Unit Testing through Gamification Open
Exploratory testing, known for its flexibility and ability to uncover unexpected issues, often faces challenges in maintaining systematic coverage and producing reproducible results. To address these challenges, we investigate whether gami…
View article: Combining Neuroevolution with the Search for Novelty to Improve the Generation of Test Inputs for Games
Combining Neuroevolution with the Search for Novelty to Improve the Generation of Test Inputs for Games Open
As games challenge traditional automated white-box test generators, the\nNeatest approach generates test suites consisting of neural networks that\nexercise the source code by playing the games. Neatest generates these neural\nnetworks usi…
View article: Acknowledging Good Java Code with Code Perfumes
Acknowledging Good Java Code with Code Perfumes Open
Java remains one of the most popular programming languages in education. Although Java programming education is well supported by study materials, learners also need more immediate support on the problems they face in their own code. When …
View article: WallMauer: Robust Code Coverage Instrumentation for Android Apps
WallMauer: Robust Code Coverage Instrumentation for Android Apps Open
Code coverage is the primary metric used to assess the quality of test suites, and it is the foundation of many automated techniques ranging from fault localization to search-based optimization approaches. Code coverage is measured by inse…
View article: Equitable Student Collaboration in Pair Programming
Equitable Student Collaboration in Pair Programming Open
Pair programming is considered a very beneficial method for software development and is gaining increased attention in computer science education. Both partners in a programming pair should be equal and active participants, alternating on …
View article: Girls Rocking the Code: Gender-dependent Stereotypes, Engagement & Comprehension in Music Programming
Girls Rocking the Code: Gender-dependent Stereotypes, Engagement & Comprehension in Music Programming Open
One of the greatest challenges in early programming education is to achieve learning success while also creating initial interest. This is particularly difficult for girls, who continue to be affected by persistent societal stereotypes and…
View article: Gamifying a Software Testing Course with Continuous Integration
Gamifying a Software Testing Course with Continuous Integration Open
Testing plays a crucial role in software development, and it is essential for software engineering students to receive proper testing education. However, motivating students to write tests and use automated testing during software developm…
View article: An Empirical Evaluation of Manually Created Equivalent Mutants
An Empirical Evaluation of Manually Created Equivalent Mutants Open
Mutation testing consists of evaluating how effective test suites are at detecting artificially seeded defects in the source code, and guiding the improvement of the test suites. Although mutation testing tools are increasingly adopted in …
View article: Engaging Young Learners with Testing Using the Code Critters Mutation Game
Engaging Young Learners with Testing Using the Code Critters Mutation Game Open
Everyone learns to code nowadays. Writing code, however, does not go without testing, which unfortunately rarely seems to be taught explicitly. Testing is often not deemed important enough or is just not perceived as sufficiently exciting.…
View article: Productive Coverage: Improving the Actionability of Code Coverage
Productive Coverage: Improving the Actionability of Code Coverage Open
Code coverage is an intuitive and widely-used test adequacy measure. Established coverage measures treat each test goal (e.g., statement or branch) as equally important, and code-coverage adequacy requires every test goal to be covered. Ho…
View article: Coding to Cope: Teaching Programming to Children with Emotional and Behavioral Disorders
Coding to Cope: Teaching Programming to Children with Emotional and Behavioral Disorders Open
Digital and computing literacy are essential skills in our modern society, but children with emotional and behavioral disorders are often left out, especially during their treatment in a clinic for child and adolescent psychiatry. This pap…
View article: An IDE Plugin for Gamified Continuous Integration
An IDE Plugin for Gamified Continuous Integration Open
Interruptions and context switches resulting from meetings, urgent tasks, emails, and queries from colleagues contribute to productivity losses in developers' daily routines. This is particularly challenging for tasks like software testing…
View article: IntelliGame in Action: An Experience Report on Gamifying JavaScript Unit Tests
IntelliGame in Action: An Experience Report on Gamifying JavaScript Unit Tests Open
This paper investigates the integration and assessment of IntelliGame, a gamification plugin initially designed for Java development, within the realm of JavaScript unit testing. We aim to verify the generalizability of IntelliGame to Java…
View article: Do Automatic Test Generation Tools Generate Flaky Tests?
Do Automatic Test Generation Tools Generate Flaky Tests? Open
Non-deterministic test behavior, or flakiness, is common and dreaded among developers. Researchers have studied the issue and proposed approaches to mitigate it. However, the vast majority of previous work has only considered developer-wri…
View article: NuzzleBug: Debugging Block-Based Programs in Scratch
NuzzleBug: Debugging Block-Based Programs in Scratch Open
While professional integrated programming environments support developers\nwith advanced debugging functionality, block-based programming environments for\nyoung learners often provide no support for debugging at all, thus inhibiting\ndebu…
View article: Gamifying a Software Testing Course with Continuous Integration
Gamifying a Software Testing Course with Continuous Integration Open
Testing plays a crucial role in software development, and it is essential for software engineering students to receive proper testing education. However, motivating students to write tests and use automated testing during software developm…
View article: Mutational Fuzz Testing for Constraint Modeling Systems
Mutational Fuzz Testing for Constraint Modeling Systems Open
Constraint programming (CP) modeling languages, like MiniZinc, Essence and CPMpy, play a crucial role in making CP technology accessible to non-experts. Both solver-independent modeling frameworks and solvers themselves are complex pieces …