Publications Software Experience Awards

To God Be The Glory

My name is Ali Ghanbari. I am a CIFellows Postdoctoral Research Associate at Iowa State University working with Dr. Hridesh Rajan. My research interests span the intersection of programming languages, software engineering, and data science. Specifically, I use programming languages and data science tools and techniques to solve software engineering problems related to software testing, verification, and repair. Currently, we are developing techniques for automated debugging (fault localization and repair) of deep neural networks. Our research is generously funded by National Science Foundation.

I received my PhD from The University of Texas at Dallas in Software Engineering. I was fortunate to work under the supervision of Dr. Andrian Marcus. Prior to that, I received my Masters and Bachelor's degrees from Amirkabir University of Technology (Tehran Polytechnic) both in Software Engineering.

Updates

Serving as Program Committee Member for Artifact Evaluation and Extended Review Committees for OOPSLA 2023

Our demo paper is accepted for publication in ASE 2022

Our papers are accepted for publication in ISSTA 2022

My paper is accepted for publication in APR 2022

Serving as a Program Committee Member for APR 2022

Joined ISU as a Postdoctoral Research Associate

Thrilled to become a 2021 Class of CIFellows

Publications

Shibboleth: Hybrid Patch Correctness Assessment in Automated Program Repair

Ali Ghanbari and Andrian Marcus

Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering (ASE'22)

Demo Track, To appear 4 pages, 2022. [pdf]


Faster Mutation Analysis with MeMu

Ali Ghanbari and Andrian Marcus

Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'22)

Demo Track, pp. 781--784, 2022. [pdf]


Patch Correctness Assessment in Automated Program Repair Based on the Impact of Patches on Production and Test Code

Ali Ghanbari and Andrian Marcus

Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'22)

pp. 654--665, 2022. [pdf]


Revisiting Object Similarity-based Patch Ranking in Automated Program Repair: An Extensive Study

Ali Ghanbari

International Workshop on Automated Program Repair (APR’22)

pp. 16--23, 2022. [pdf]


Toward Speeding up Mutation Analysis by Memoizing Expensive Methods

Ali Ghanbari and Andrian Marcus

Proceedings of the 43rd ACM/IEEE International Conference on Software Engineering (ICSE'21)

NIER Track, pp. 71--75, 2021. [pdf]


PRF: A Framework for Building Automatic Program Repair Prototypes for JVM-Based Languages

Ali Ghanbari and Andrian Marcus

Proceedings of the 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE '20)

Demo Track, pp. 1570--1573, 2020. [pdf, website, video]


ObjSim: Lightweight Automatic Patch Prioritization via Object Similarity

Ali Ghanbari

Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'20)

Demo Track, pp. 541--544, 2020. [pdf, website, video]


Can Automated Program Repair Refine Fault Localization? A Unified Debugging Approach

Yiling Lou, Ali Ghanbari, Xia Li, Lingming Zhang, Zhang Haotian, Dan Hao, Lu Zhang

Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'20)

pp. 75--87, 2020. [pdf]


PraPR: Practical Program Repair via Bytecode Mutation

Ali Ghanbari and Lingming Zhang

Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering (ASE'19)

Demo Track, pp. 1118--1121, 2019. [pdf, website, video]


Toward Practical Automatic Program Repair

Ali Ghanbari

Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering (ASE'19)

SRC Track, pp. 1262--1264, 2019. [pdf]


Practical Program Repair via Bytecode Mutation

Ali Ghanbari, Samuel Benton, and Lingming Zhang

Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'19)

pp. 19--30, 2019. [pdf]


Defexts: A Curated Dataset of Reproducible Real-world Bugs for Modern JVM Languages

Samuel Benton, Ali Ghanbari, and Lingming Zhang

Proceedings of the 41st ACM/IEEE International Conference on Software Engineering (ICSE'19)

Demo Track, pp. 47--50, 2019. [pdf]


Technical Reports


Toward Practical Automatic Program Repair

PhD Dissertation (The University of Texas at Dallas), 2021.


Can Automated Program Repair Refine Fault Localization?

Yiling Lou, Ali Ghanbari, Xia Li, Lingming Zhang, Dan Hao, and Lu Zhang

CoRR abs/1910.01270

arXiv, 2019. [pdf]


A Language-based Approach to Datarace Prevention

MSc Thesis (Amirkabir University of Technology), 2014.


Object-Oriented Design, Formal Verification, and Implementation of a Microkernel

BSc Project (Amirkabir University of Technology), 2012.

Software

Shibboleth

Shibboleth is a versatile system for automatic assessment of the patches generated by test-based generate-and-validate APR systems. Shibboleth leverages lightweight static and dynamic heuristics from both test and production code to rank and classify the patches.

[website]


MeMu

MeMu is a system for reducing mutant execution time, through memoizing the most expensive methods in the system. Memoization is a program optimization technique that allows bypassing the execution of expensive methods and reusing pre-calculated results, whenrepeated inputs are detected. MeMu can be used on its own or alongside existing mutation analysis acceleration techniques.

[website, video]


PRF

PRF is a Java-based framework that allows researchers to build prototypes of test-based generate-and-validate automatic program repair techniques for JVM languages by simply extending it with their patch generation plugins.

[website, video]


ObjSim

ObjSim is a lightweight, automatic patch prioritization system based on the concept of similarity between objects. Users of test case based generate-and-validate automatic program repair (APR) systems, designed for JVM-based languages, are the envisioned users of this tool. Being a syntactically independent concept, object similarity makes ObjSim JVM language agnostic and allows it to be incorporated with any APR tool targeting JVM-based programming languages (e.g., Java, Kotlin, Scala, etc.). Our experiments show that ObjSim is quite effective: applying ObjSim on the fix reports gerenated by PraPR for 55 fixable Defects4J bugs results in prioritizing 16.67% more genuine fixes in top-1 position and the average rank of genuine fixes improves by almost 10%.

[website, video]


ProFL

ProFL improves upon spectrum-based and mutation-based fault localization by leveraging patch-execution results (from program repair) as the feedback information for fault localization.

[website]


PraPR

PraPR (Practical Program Repair) is a mutation-based automated program repair (APR) tool operating at the level of JVM bytecode. PraPR is based on simple mutation operators derived from mining thousands of real-world bug-fix commits. Being based on simplistic bytecode-level program transformations, PraPR has two main advantages over state-of-the-art APR techniques: (1) the burden of producing syntactically correct mutants, and compilation overhead (which at least involves parsing and type checking), is eliminated so the tool is able to explore a huge search space within a reasonable amount of time; (2) it is a JVM-language-agnostic APR tool that can be applied to more than 6 popular JVM-based languages. PraPR has been able to correctly fix 43 and 9 bugs from real-world Java (from Defects4J V1.4.0) and Kotlin (from Defexts), resp., projects while being over 10X faster than the state-of-the-art APR techniques. PraPR is publicly available in Maven Central Repo and can be applied to arbitrary Maven/Gradle-based Java, or Kotlin, projects.

[website, video]


Object Utils

An efficient, well-tested, and easy-to-use Java library for (de)serializing, hashing, computing distance, and dynamically defining equals method for aribitrary Java objects. This open source library is publicly available on Maven Central Repository.

[website]


Fix Patterns Miner

A scalable GumTree-based framework for mining bug-fix patterns from large datasets of bug-fix commits.

[website]


ASM-Ext

Yet another (but faster!) static analysis framework based on ASM. This framework computes call graphs, control flow graphs, and does dataflow analysis.


Camelspider

A Soot-based datarace detection system for Java. Camelspider does summary-based analysis and summarizes the effects of each method in the program in a reverse pseudo-topological order of the call graph. The aggregated summary is then analyzed for finding conflicting events without any happened-before relation between them. Camelspider is proven to be sound, and being summary-based (and thanks to its compact graph representation), it is scalable.


CCS-OS

My first self-motivated, large-scale programming project done from 2005 to 2006, when I was in high-school. CCS is a simple, yet novel, disk operating system fully developed in x86 assembly.

Work Experience


Research


Postdoctoral Research Associate


Working as a CIFellows Postdoctoral Research Associate at Iowa State University. My research focuses on fault localization and repair of deep neural networks, as well as modular decomposition of such programs.


Research Assistant


Worked at SEERS lab under the supervision of Prof. Andrian Marcus. My research during my PhD mainly focused on automated program repair.


Teaching


Sole Instructor

CS/SE 4348.0U2.19U - Operating Systems Concepts, Summer 2019, The University of Texas at Dallas

I had the unique experience of teaching to 19 bright students. My goal was not just to familiarize my students with the basic operating system concepts, rather I made them practice the concepts by assigning two non-trivial programming tasks. My goal was to prepare them for real-world responsibilities in advanced industry or academia. In the first programming task, the students were asked to implement a simple distributed file system and in the second assignment, they were asked to implement a word count program using the simplistic map-reduce framework that they had constructed.


Teaching Assistant

CS/SE/CE 6367 - Software Testing Validation and Verification, Spring 2018, The University of Texas at Dallas

CS/SE/CE 3354 - Software Engineering, Spring 2018, The University of Texas at Dallas

CS/CE 4337 - Organization of Programming Languages, Fall 2017, Spring 2021, Fall 2021, The University of Texas at Dallas

Awards

ACM Student Research Competition

IEEE/ACM International Conference on Automated Software Engineering

Third Place (Graduate Section), 2019.


IEEE Software Testing Contest

First Place, 2019.

First Place, 2018.


Kharazmi Award

Third Place (Computer Science Section), 2007.

© 2022 Ali Ghanbari. Powered by w3.css