Graduate Research Assistant Positions in Programming Languages and Software Engineering

Graduate Research Assistant Position in Programming Languages and Software Engineering


I am currently seeking a graduate student interested in programming languages and software engineering research to commence at the Fall 2018 semester. Potential research topics include (static/dynamic) program analysis and/or transformation (e.g., refactoring) with a focus on helping to maintain and/or evolve large and complex existing software systems. Potential topics also include automated bug finding approaches and software security w.r.t. software evolution and/or component composition. The successful candidate will be expected to work on projects that normally yield open source developer tool research prototypes, typically plug-ins to popular IDEs, build systems, or static analyzers. More information can be found on the main supervisor’s web page.

Of particular interest are students interested in applying to the City University of New York – CUNY’s Graduate Center Ph.D. program in Computer Science concurrently with the research assistantship.

Please see below for additional details on applying.  (more…)

Creating Faculty Portfolio Sites on the Commons | CUNY Academic Commons News

I was recently invited to write an article on creating faculty portfolios on the CUNY Academic Commons for the CUNY Academic Commons News. The article discusses several WordPress plugins to help maximize student/faculty engagement, and could be helpful to other faculty members using WordPress to host their websites.

Organizer for the 2018 International Workshop on API Usage and Evolution (WAPI’18) at ICSE’18

I am pleased to announce that our workshop entitled International Workshop on API Usage and Evolution has been accepted at the 40th International Conference on Software Engineering (ICSE), to take place May 27-June 3 2018, in Gothenburg, Sweden. The workshop is being co-organized with Sven Amann, Sarah Nadi, Hoan Nguyen, and Tien Nguyen.

Talk at IBM Programming Languages Day 2017 on December 4

I will be giving a talk at the 2017 IBM Programming Languages Day on December 4 at the IBM T.J. Watson Research Center in Yorktown Heights, NY. I will be discussing our recent work on empirically assessing new language features proactively via automated refactoring.

NJPLS at Princeton University, November 20th, 2017

I will be giving a talk at the New Jersey Programming Languages and Systems (NJPLS) seminar at Princeton University on November 20th, 2017 on Automated Refactoring of Legacy Java Software to Default Methods. Below is an abstract:

Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive ruleset that covers various corner-cases where default methods cannot be used. To demonstrate applicability, we implemented our approach as an Eclipse plug-in and applied it to 19 real-world Java projects, as well as submitted pull requests to popular GitHub repositories. The indication is that it is useful in migrating skeletal implementation methods to interfaces as default methods, sheds light onto the pattern’s usage, and provides insight to language designers on how this new construct applies to existing software.

Course on Software Analysis and Transformation at the GC in Spring 2018

I will be lecturing a course at the Graduate Center on Software Analysis and Transformation next Spring 2018 semester. Please encourage those interested to enroll. Below is a short blurb about the course description:

With the rise of mobile computing, cybersecurity, and big data, the need for software engineering tools to assist developers in cultivating and managing the complexity of large software systems has never been more evident, giving way to such tools as GitHub, Pivotal, and SonarQube. Software analysis and transformation has a variety of uses, including performance optimization (in compilers), decompiling, obfuscating, verifying program correctness, domain-specific programming languages, and software understanding, evolution, debugging, and testing in software engineering tools. The material will be useful for students working in compilers, developer tools, systems, software engineering, and programming languages.

Raffi presenting at ASE 2017

Raffi presenting at ASE 2017
Raffi presenting our tool demo paper on Defaultification Refactoring at ASE 2017


Defaultification Refactoring tool demonstration poster now available

The poster for our tool demonstration talk at ASE 2017 on “Defaultification Refactoring: A Tool for Automatically Converting Java Methods to Default” is now available!

Slides available for Defaultification Refactoring tool demonstration talk

Slides for our tool demonstration talk at ASE 2017 on “Defaultification Refactoring: A Tool for Automatically Converting Java Methods to Default” are now available!

Default Method Refactoting Talk at JSSST 2017

Hidehiko Masuhara presented a talk on our ICSE 2017 Default Method Refactoring paper at the 34th Convention of the Japan Society of Software Science (JSSST).

Preprint of ASE 2017 tool demo available

A preprint of our ASE 2017 tool demonstration paper entitled “Defaultification Refactoring: A Tool for Automatically Converting Java” is now available. (more…)

Need help with the Commons? Visit our
help page
Send us a message
Skip to toolbar