DevOps for Academia
This project is an effort towards creating necessary build pipeline for software projects developed by students in academic settings. It aims to bridge the process gap between academic and industrial projects. As a key benefit, the project enables automated and semi-automated grading of students’ projects through unit testing.
Team: Tyler Rockwood, Melissa Thai, Adam Michael, Adalyn Johnson, Jonathan Jenkins, and Chandan Rupakheti
Source Code: https://ada.csse.rose-hulman.edu/groups/RoseBuild
Grant: KEEN Grant
Smell Buster is a software maintenance tool that uses source code to gauge the quality of the code as a project evolves over time. By visualizing the code quality metrics and detecting smells in the codebase through static analysis, the Smell Buster tool can help project manager plan the future development efforts and allocate necessary resources where they are needed the most in the project.
Team: Dharmin Shah and Chandan Rupakheti
Source Code: https://github.com/RhitSerg/SmellBuster
Grant/ Awards: ACM Student Research Competition Travel Award and IPROP Best Student Project Travel Award
D. Shah, C. R. Rupakheti, The Backbone Project, Poster, ACM SIGCSE, March 2015. [pdf]
Algorithm Recognition and Recommendation Framework
The key idea behind this work was to develop an automated program assistant software that would read programming code written by novice programmers, analyze the code for errors, and recommend a sequence of edits to fix those errors. Based on the knowledge base supplied to the framework, which consisted of correct programs developed by advanced developers, the framework would recommend a sequence of edits to drive the novice programmer towards a correct solution.
The framework, written in Java uses Eclipse’s Java Development Tools (JDT) for source code analysis. We are able to analyze the structural properties (syntax) of programs using JDT. The framework works even in the presence of compile errors, a typical situation for new CSSE students. We envision such a tool being useful in our freshmen and sophomore classes where we teach students programming for the first time.
Team: Kurtis Zimmerman, Richard Thai, and Chandan Rupakheti
Source Code: https://github.com/RhitSerg/RecommendationFramework
K. Zimmerman, C. R. Rupakheti, An Automated Framework for Recommending Program Elements to Novices, In Proceedings of IEEE/ACM International Conference on Automated Software Engineering (ASE), Lincoln, Nebraska, USA, November 2015, pp. 283-288. [pdf]
CriticAL: A Critic for API and Libraries
This project provides a framework for critiquing API-client code in three ways:
- it explains the complex interaction of API elements,
- it criticizes the improper use of the API, and
- it recommends the related API elements that may be needed next by the user.
- C. R. Rupakheti, D. Hou, Evaluating Forum Discussions to Inform the Design of an API Critic, In Proceedings of IEEE International Conference on Program Comprehension (ICPC), Passau, Germany, June 2012, pp. 53-62. [pdf]
- C. R. Rupakheti, D. Hou, CriticAL: A Critic for APIs and Libraries, In Proceedings of IEEE International Conference on Program Comprehension (ICPC), Passau, Germany, June 2012, pp. 241-243. (Best Tool Demo Paper Award) [pdf]
- C. R. Rupakheti, D. Hou, Satisfying Programmers’ Information Needs in API-Based Programming, In Proceedings of IEEE International Conference on Program Comprehension (ICPC), Kingston, Ontario, Canada, June 2011, pp. 250-253. [pdf]
- C. R. Rupakheti, A Critic for API Client Code using Symbolic Execution, PhD Thesis, Clarkson University, May 2012. [pdf]
EQ: Equals Checker
EQ is a static analysis tool for checking problems related to the Object.equals(Object) method in Java. It works in two layers:
- Low level error detection through path-sensitive data flow analyses
- High level semantic errors through a constraint solver
The path-sensitive, inter-procedural analysis framework is built on top of Soot which forms the basis for high-level model generation in Alloy. Using this framework, the checker detects programming errors such as NullPointerException and ClassCastException, and semantic problems related to equivalence relation (reflexivity, symmetry, and transitivity) specified in java.lang.Object. EQ is implemented as an Eclipse Plugin and can be installed from the update site.
- C. R. Rupakheti, D. Hou, Finding Errors from Reverse-Engineered Equality Models Using a Constraint Solver, In Proceedings of IEEE International Conference on Software Maintenance (ICSM), Riva del Garda, Terentino, Italy, September 2012, pp.77-86. [pdf]
- C. R. Rupakheti, D. Hou, EQ: Checking the Implementation of Equality in Java, In Proceedings of IEEE International Conference on Software Maintenance (ICSM), Williamsburg, Virginia, USA, September 2011, pp. 590-593. [pdf]
- C. R. Rupakheti, D. Hou, An Empirical Study of Design and Implementation of Object Equality in Java, In Proceedings of IBM Center for Advanced Studies on Collaborative Research Conference (CASCON), ACM, Toronto, Canada, October 2008, pp. 111-125. [pdf]
- C. R. Rupakheti, A Path-Based Approach For Analyzing Object Equality in Java, Master’s Thesis, Clarkson University, May 2010. [pdf]