Raffi Khatchadourian’s Profile

Faculty
active 1 month, 3 weeks ago
Raffi Khatchadourian
Title
Assistant Professor
Department
Computer Systems Technology
Office Location
N913
Academic interests

Programming languages, software engineering

Bio

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.

Work Phone
(718) 260-5325
Twitter
Skype
khatchad
CUNY Academic Commons

My Courses

CST4713 Dynamic Web Development

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

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)

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

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

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

Office of the Provost

Office of the Provost

City Tech’s Source for Academic Affairs Information

Pointcut Change Prediction

Pointcut Change Prediction

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

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

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

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.

My Clubs

Music Club

Music Club

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.

Computer Information Association

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

Computer Systems Technology Colloquium

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.

Mobile Application Developers

Mobile Application Developers

Welcome to Mobile Application Developers (M.A.D.)! The mobile market is HOT! Come join the club and share ideas and create new projects! All levels of expertise are welcome!

Math Club

Math Club

What do mathematicians do? Can mathematics be fun and interesting? Do you like free pizza? The Math Club is open to everyone with an interest in logic puzzles, games of chance or strategy, and mathematics in general. We host a variety of math related events, math talks, math games, math puzzles, field trips, math competitions, and more. Feel free to stop by on Thursdays in Namm N719, from 1-2pm.