Dept. of Computer Science
George Mason University
Interested in working with me as a student researcher or
collaborating on a project? Feel free to contact me!
Read more about the kind of work I do below.
Advances in machine learning have led to advances in the software and services we build and provide. However, despite ethical concerns that come with these advances, such as software fairness, our approach to building software has remained relatively the same. The goal of this research is to explore and improve ethical software development tools and practices.
Software testing is one method developers use to improve software quality and versatility. Current testing approaches help developers write and run tests, and may even present correlations to test failures. However, they do not attempt to point out the cause of a given test failure or unexpected result. The goal of this research is to create new testing techniques and tools that will help developers identify, trace, and compare passing and failing test executions and remove software defects.
The physical work environment of software engineers can have various effects on their satisfaction and the ability to get the work done. The goal of this research is to explore the work environments technical workers are in and how those environments affect their productivity. For this research, I analyze various types of work environments and various environmental factors that can, and have, had an effect on productivity as well as the relationship between satisfaction with work environment and productivity. We provide concrete, actionably results that can be applied in real world setting, as well as drive further research on improving developer productivity
Building quality software products, with as few defects as possible, is an important goal for software developers. Static analysis tools have the potential to provide quick feedback to developers, helping them to eliminate defects early in the development process, when they are cheap to fix. Despite the potential benefits of using these tools, developers end up spending a lot of time figuring out the context of the defect and how to fix it and therefore do not make frequent use of these tools. Our research aims to find out why developers are or are not using static analysis tools and how we can help make using these tools easier and more efficient for the developer. One direction for improvement my research is exploring is the ability to use programmer knowledge and experience to improve tool output.