Member of the UCF Cyber Security and Privacy Cluster (CyberSP).
Code and multimodal models turned into developer tools that hold up under real use.
What coding agents can do, where they break, and how we would know either way.
Teaching machines to read a screen the way a user does — pixels, hierarchy, intent.
in research funding to date, from government and industry sources.
Four of these started as undergraduates.
A GitHub bot that localizes bugs in Android apps by combining UI interaction traces with text retrieval. A developer files an issue with a reproduction trace; LadyBug replies with a ranked list of the files most likely to contain the defect.
Seven contributors, 387 commits — and the merge at the top of the log is one of the seniors.
LadyBug: A GitHub Bot for UI-Enhanced Bug Localization in Mobile Apps — a Tool Demonstration paper at ICSME 2025, the IEEE International Conference on Software Maintenance and Evolution.
Mahmud, Chen, Achille, Alvarez-Velez, Bansil, Ijieh, Karanch, De Silva, Chaparro, Marcus, Moran. arxiv.org/abs/2508.05085
Six of the eleven authors were the Senior Design team.
Two of them flew to Auckland, New Zealand to present it.
AI coding agents now write a real share of production software. Two basic instruments are still missing: a way to see what a single agent run actually did, and a way to measure how often agents get it right on the software people touch.
A tool that makes a single agent session legible — so a developer can see what the agent did, and why.
You ask the agent to add pagination to the orders endpoint. It runs for 40 minutes. The test suite is green. You skim the diff and merge.
Support tickets. Three customers report orders in their history that were never theirs. The tenant filter is gone.
You open the diff, then the logs. Neither one tells you what the agent was doing when it removed that filter.
The agent’s reasoning is gone. Only its output survives.
The diff is small and looks reasonable. build_query() is where the tenant filter went — edited at event 112, in a file the diff barely mentions, for a reason that appears in neither artifact.
The log has every step and no structure.
The diff has structure and no steps.
Nothing connects a line of code to the decision that produced it.
When was this line written, and what was the agent trying to do?
Where did the agent go in circles or undo its own work?
What did it read before it made the decision?
Which changes were never covered by a test?
We supply real JSONL session traces from Claude Code, Codex and similar agents.
A benchmark anyone can submit a coding agent to, with a public leaderboard and the statistics behind every score.
Proc. ACM Softw. Eng. 3, ISSTA, Article 181 (October 2026).
doi.org/10.1145/3832272
You would not be starting from a blank page. The benchmark, the harness, the generated patches and the codebooks are all released — and the paper that motivates the project is peer reviewed.
github.com/SageSELab/UI-Program-Repair — 96 bugs, five tools, every patch we generated, and the nine-category codebook your platform will score against.
We built DroidFixBench — 50 real bugs mined from open-source Android apps and 46 synthetic ones — and ran five repair techniques across all 96.
Across all five tools on the 50 real bugs, 3.3% of patches were correct and 67% did not compile. On synthetic bugs the same tools look excellent. The gap is the finding.
We hand-coded a statistically significant sample of 379 failed patches into nine categories.
35 patches referenced GUI component IDs that do not exist · 37 called Android methods that do not exist · 18 invented Activities. The models hallucinate the interface they cannot see.
Five tools, fixed models, one moment in 2025. A new coding agent ships roughly every month.
Two years of work, and 379 patches read one at a time by human annotators.
By design we measured classical repair first. Claude Code, Codex and Gemini CLI on these 96 bugs remain unmeasured.
So the project is not another study. It is the platform that keeps the question answered.
| # | Agent | Real | Synth | $ / fix |
|---|---|---|---|---|
| 1 | agent-alpha | 21.0% | 89.1% | $1.84 |
| 2 | agent-beta | 18.0% | 91.3% | $4.10 |
| 3 | team-gamma | 14.0% | 84.8% | $0.62 |
| 4 | OpenHands | 12.0% | 84.8% | — |
| 5 | ChatRepair | 8.0% | 67.4% | — |
Rows 4 and 5 are our published results — the seed of the board. The rest shows what submissions would look like.
The rank is the hook. The drill-down is the contribution: per-bug outcomes, real versus synthetic, failures classified against our nine-category codebook, and the cost, tokens and wall-clock of every run.
Front-end heavy. Data visualization, developer tooling, and real user research if you want it. You build the instrument every engineer using an agent is currently missing.
Infrastructure heavy. Docker, Android emulators, CI at scale, and a public web front end. You build the scoreboard this field gets judged on.
Both projects end with an artifact that does not currently exist, released publicly under the lab’s name — and yours.