Raffi Khatchadourian’s Profile
Programming languages, software engineering
I received my MS and PhD in Computer Science from Ohio State University and my BS in Computer Science from Monmouth University. Prior to joining City Tech, I was a Software Engineer at Apple, Inc. in Cupertino, California, where I worked on Digital Rights Management (DRM) for iTunes, iBooks, and the App store. I also helped develop distributed software that tested various features of iPhones, iPads, and iPods.
My research has centered on techniques for automated software evolution, particularly those related to automated refactoring and source code recommendation systems. My work is focused on easing the burden associated with correctly and efficiently evolving large and complex software by providing automated tools that can be easily used by developers. I am also interested in automated analysis of Object-Oriented and Aspect-Oriented programs.
My Courses
CST4713 Dynamic Web Development
Introduces building web pages dynamically, organizing projects into web applications, and deploying these applications using a web server. Hands-on laboratory exercises reinforce the material presented in the lectures and enable students to develop related programming skills.
CST 2301 Mobile Device and Multimedia Programming FA2015
This course will cover how the Java language can support applications on mobile devices as cell phones, PDAs and other small computational devices. Students will learn the strengths and limitations software development on small devices. Specific topics will include configurations and profiles; overview of programming mobile devices; standard and custom user interface elements and events; record stores and persistence; drawing and animation using game APIs and 3D APIs; audio and video APIs; comparison of current technologies. At the conclusion of the course, the student will be familiar with a special set of Java classes designed to work on mobile devices and interact with multimedia files.
CST1201 Programming Fundamentals Open Educational Resource (OER)
This course is an intensive introduction to computer programming using the Java language. Through lectures and lab assignments, students will learn the fundamentals of the Java programming language including control structures and programmer-defined methods. Concepts of Object-Oriented Programming will be demonstrated through the introduction of objects and inheritance. Some Java libraries will be introduced in developing application projects, for example, the String class. Emphasis in the course will be placed on the development, implementation, and execution of projects with an eye to industry standards.
CST1201 Programming Fundamentals, SP2016
This course is an intensive introduction to computer programming using the Java language. Through lectures and lab assignments, students will learn the fundamentals of the Java programming language including control structures and user-defined methods. Concepts of object-oriented programming will be demonstrated through the introduction of objects and inheritance. Students also will learn to create simple Graphic User Interfaces and web applications. Some Java libraries will be introduced in developing application projects, for example, string manipulation classes. Emphasis in the course will be placed on the development, implementation, and execution of projects with an eye to industry standards.
CST1201 Programming Fundamentals, FA2015
This course is an intensive introduction to computer programming using the Java language. Through lectures and lab assignments, students will learn the fundamentals of the Java programming language including control structures and user-defined methods. Concepts of object-oriented programming will be demonstrated through the introduction of objects and inheritance. Students also will learn to create simple Graphic User Interfaces and web applications. Some Java libraries will be introduced in developing application projects, for example, string manipulation classes. Emphasis in the course will be placed on the development, implementation, and execution of projects with an eye to industry standards.
My Projects
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken because of changes made to the base-code is a daunting task, especially in large and complex systems. This project represents an automated approach that recommends a set of pointcuts that are likely to require modification due to a particular change in the base-code. Our hypothesis is that join points captured by a pointcut exhibit a varying degree of common structural characteristics on multiple levels. We use patterns describing such commonality to recommend pointcuts that have potentially broken to the developer, as well as point the developer in a direction in which the pointcut should be altered. We implemented our approach as an extension to the popular Mylyn Eclipse IDE plugin, which maintains focused contexts of entities relevant to the current task. We show that this approach is useful in revealing broken pointcuts by applying it to multiple versions of several open source projects and evaluating the accuracy of the recommendations produced against actual modifications made on these systems.
Automatic Migration of Legacy Java Method Implementations to Interfaces
Java 8 is one of the largest upgrades to the popular language and framework in over a decade. It offers several new, key features that can help make programs easier to read, write, and maintain, especially in regards to collections. These features include Lambda Expressions, the Stream API, and enhanced interfaces, many of which help bridge the gap between functional and imperative programming paradigms and allow for succinct concurrency implementations. We investigate several open issues related to automatically migrating (refactoring) legacy Java software to use enhanced interfaces correctly, efficiently, and as completely as possible. Our goal is to help developers to maximally understand and adopt this new feature thus improving their software.
Port NetBeans Lambda Expression Refactoring to Eclipse
Java 8 is one of the largest upgrades to the popular language and framework in over a decade. There are several new key features of Java 8 that can help make programs easier to read, write, and maintain. Java 8 comes with many features, especially related to collection libraries. These include such new features as Lambda Expressions, the Stream API, enhanced interfaces, and more. While JDT Core/UI has incorporated many Java 8 quick fixes and refactorings, there are still many features left to be done. For example, NetBeans has a refactoring that converts loops to Lambda expressions. This project is for exploring the porting of the such conversion mechanism in NetBeans to Eclipse. These may be manifested as refactoring and/or “quick fixes.” This project is open source. Please see the site link for downloads.
Enumerization Refactoring: Converting Legacy Java Applications to use Language Enumeration Types
The Convert Constants to Enum refactoring for Eclipse provides an automated approach for transforming legacy Java code to use the new enumeration construct. This semantics-preserving tool increases type safety, produces code that is easier to comprehend, removes unnecessary complexity, and eliminates brittleness problems that normally prevent separate compilation.
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Oriented Software
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. In this project, we use an automated approach which limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. To illustrate that the motivation behind our proposal is well-founded, we first empirically establish that join points captured by a single pointcut typically portray a significant amount of unique structural commonality by analyzing patterns extracted from 23 AspectJ programs. Then, we demonstrate the usefulness of our technique by rejuvenating pointcuts in multiple versions of 3 of these programs. The results show that our parameterized heuristic algorithm was able to automatically infer new join points in subsequent versions with an average recall of 0.93. Moreover, these join points appeared, on average, in the top 4th percentile of the suggestions, indicating that the results were precise.
My Clubs
Computer Information Association
The Computer Club is a student organization that provides a creative and safe learning environment where college students interested in computers and technology come together to explore their own ideas. The club will plan and organize projects and activities, outside the classroom, with the purpose of enhancing technical skills and knowledge. It is designed to create an environment of team work, along with, enhancing interpersonal and social skills.
We welcome the CityTech community to learn and grow in the areas of electrical and telecommunications technology. Every semester we provide a series of seminars with speakers that present the latest research. In addition, various workshops are also provided.
Computer Systems Technology Colloquium
The Computer Systems Technology (CST) Colloquium is dedicated to providing the students, staff, and faculty of New York City College of Technology, the City University of New York, and the greater public with access to information regarding the latest developments in computing from both a research and industrial perspective. We strive to schedule speakers that have a prominent influence in the computing field and that can engage our audience to have a deeper understanding and passion for computers, software engineering, programming languages, networks, and other topics.
Computer Information Association
The Computer is a student organization that provides a creative and safe learning environment where college students majoring in computer related courses and/or interested in computers and technology, work together with other students to explore their own ideas, develop skills, and build confidence in themselves through the use of technology. The computer club plan and organize projects and activities with the purpose of enhance technical skills and knowledge outside the classrooms and develop team work skills and interpersonal communications among the club members. Members will learn to appreciate and enjoy a variety of software applications and technologies including such technologies as web design, programming, networks, video games design, phone application design and multimedia presentations. Meeting dates and time: Thursdays 12:45-2:15 pm Meeting Location: N906 Phone Number: (347) 699-CLUB (2582) Email: computerclubcitytech@gmail.com
Music Club formed to promote musicality among students in City Tech. The club consists of students who enjoy and play music. Vocalists and Instrumentalists alike.