Publications Projects Experience Awards About Me

Publications

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


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.

Projects

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]


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.

Experience


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, 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.


UBER Technologies, Inc.

Offered Ph.D. Software Engineer Internship

Summer 2019.


Huawei Research

Offered Intern-Analysis Tool

Summer 2019.


Kharazmi Award

Third Place (Computer Science Section), 2007.

About Me

I am a Ph.D. student at UT Dallas and I am doing my Ph.D. in Software Engineering. I am working under the supervision of Prof. Andrian Marcus. My long-term goal is to make the life easier for programmers: this can be in the form of bringing formal methods to everyday life (to make programs bug-free or more reliable) or automating common debugging tasks. Currently, I am working on automated program repair.

© 2020 Ali Ghanbari. Powered by w3.css