Raffi Khatchadourian’s Profile

Faculty
Active 1 months, 1 weeks ago
Raffi Khatchadourian
Display Name
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
X (formerly Twitter)
khatchad

My Courses

CST4713 Dynamic Web Development

CST4713 Dy­namic Web De­vel­op­ment

In­tro­duces build­ing web pages dy­nam­i­cally, or­ga­niz­ing pro­jects into web ap­pli­ca­tions, and de­ploy­ing these ap­pli­ca­tions using a web server. Hands-on lab­o­ra­tory ex­er­cises re­in­force the ma­te­r­ial pre­sented in the lec­tures and en­able stu­dents to de­velop re­lated pro­gram­ming skills.

CST 2301 Mobile Device and Multimedia Programming FA2015

CST 2301 Mo­bile De­vice and Mul­ti­me­dia Pro­gram­ming FA2015

This course will cover how the Java lan­guage can sup­port ap­pli­ca­tions on mo­bile de­vices as cell phones, PDAs and other small com­pu­ta­tional de­vices. Stu­dents will learn the strengths and lim­i­ta­tions soft­ware de­vel­op­ment on small de­vices. Spe­cific top­ics will in­clude con­fig­u­ra­tions and pro­files; overview of pro­gram­ming mo­bile de­vices; stan­dard and cus­tom user in­ter­face el­e­ments and events; record stores and per­sis­tence; draw­ing and an­i­ma­tion using game APIs and 3D APIs; audio and video APIs; com­par­i­son of cur­rent tech­nolo­gies. At the con­clu­sion of the course, the stu­dent will be fa­mil­iar with a spe­cial set of Java classes de­signed to work on mo­bile de­vices and in­ter­act with mul­ti­me­dia files.

CST1201 Programming Fundamentals Open Educational Resource (OER)

CST1201 Pro­gram­ming Fun­da­men­tals Open Ed­u­ca­tional Re­source (OER)

This course is an in­ten­sive in­tro­duc­tion to com­puter pro­gram­ming using the Java lan­guage. Through lec­tures and lab as­sign­ments, stu­dents will learn the fun­da­men­tals of the Java pro­gram­ming lan­guage in­clud­ing con­trol struc­tures and pro­gram­mer-de­fined meth­ods. Con­cepts of Ob­ject-Ori­ented Pro­gram­ming will be demon­strated through the in­tro­duc­tion of ob­jects and in­her­i­tance. Some Java li­braries will be in­tro­duced in de­vel­op­ing ap­pli­ca­tion pro­jects, for ex­am­ple, the String class. Em­pha­sis in the course will be placed on the de­vel­op­ment, im­ple­men­ta­tion, and ex­e­cu­tion of pro­jects with an eye to in­dus­try stan­dards.

CST1201 Programming Fundamentals, SP2016

CST1201 Pro­gram­ming Fun­da­men­tals, SP2016

This course is an in­ten­sive in­tro­duc­tion to com­puter pro­gram­ming using the Java lan­guage. Through lec­tures and lab as­sign­ments, stu­dents will learn the fun­da­men­tals of the Java pro­gram­ming lan­guage in­clud­ing con­trol struc­tures and user-de­fined meth­ods. Con­cepts of ob­ject-ori­ented pro­gram­ming will be demon­strated through the in­tro­duc­tion of ob­jects and in­her­i­tance. Stu­dents also will learn to cre­ate sim­ple Graphic User In­ter­faces and web ap­pli­ca­tions. Some Java li­braries will be in­tro­duced in de­vel­op­ing ap­pli­ca­tion pro­jects, for ex­am­ple, string ma­nip­u­la­tion classes. Em­pha­sis in the course will be placed on the de­vel­op­ment, im­ple­men­ta­tion, and ex­e­cu­tion of pro­jects with an eye to in­dus­try stan­dards.

CST1201 Programming Fundamentals, FA2015

CST1201 Pro­gram­ming Fun­da­men­tals, FA2015

This course is an in­ten­sive in­tro­duc­tion to com­puter pro­gram­ming using the Java lan­guage. Through lec­tures and lab as­sign­ments, stu­dents will learn the fun­da­men­tals of the Java pro­gram­ming lan­guage in­clud­ing con­trol struc­tures and user-de­fined meth­ods. Con­cepts of ob­ject-ori­ented pro­gram­ming will be demon­strated through the in­tro­duc­tion of ob­jects and in­her­i­tance. Stu­dents also will learn to cre­ate sim­ple Graphic User In­ter­faces and web ap­pli­ca­tions. Some Java li­braries will be in­tro­duced in de­vel­op­ing ap­pli­ca­tion pro­jects, for ex­am­ple, string ma­nip­u­la­tion classes. Em­pha­sis in the course will be placed on the de­vel­op­ment, im­ple­men­ta­tion, and ex­e­cu­tion of pro­jects with an eye to in­dus­try stan­dards.

My Projects

Pointcut Change Prediction

Point­cut Change Pre­dic­tion

Point­cut fragility is a well-doc­u­mented prob­lem in As­pect-Ori­ented Pro­gram­ming; changes to the base-code can lead to join points in­cor­rectly falling in or out of the scope of point­cuts. De­cid­ing which point­cuts have bro­ken be­cause of changes made to the base-code is a daunt­ing task, es­pe­cially in large and com­plex sys­tems. This pro­ject rep­re­sents an au­to­mated ap­proach that rec­om­mends a set of point­cuts that are likely to re­quire mod­i­fi­ca­tion due to a par­tic­u­lar change in the base-code. Our hy­poth­e­sis is that join points cap­tured by a point­cut ex­hibit a vary­ing de­gree of com­mon struc­tural char­ac­ter­is­tics on mul­ti­ple lev­els. We use pat­terns de­scrib­ing such com­mon­al­ity to rec­om­mend point­cuts that have po­ten­tially bro­ken to the de­vel­oper, as well as point the de­vel­oper in a di­rec­tion in which the point­cut should be al­tered. We im­ple­mented our ap­proach as an ex­ten­sion to the pop­u­lar Mylyn Eclipse IDE plu­gin, which main­tains fo­cused con­texts of en­ti­ties rel­e­vant to the cur­rent task. We show that this ap­proach is use­ful in re­veal­ing bro­ken point­cuts by ap­ply­ing it to mul­ti­ple ver­sions of sev­eral open source pro­jects and eval­u­at­ing the ac­cu­racy of the rec­om­men­da­tions pro­duced against ac­tual mod­i­fi­ca­tions made on these sys­tems.

Automatic Migration of Legacy Java Method Implementations to Interfaces

Au­to­matic Mi­gra­tion of Legacy Java Method Im­ple­men­ta­tions to In­ter­faces

Java 8 is one of the largest up­grades to the pop­u­lar lan­guage and frame­work in over a decade. It of­fers sev­eral new, key fea­tures that can help make pro­grams eas­ier to read, write, and main­tain, es­pe­cially in re­gards to col­lec­tions. These fea­tures in­clude Lambda Ex­pres­sions, the Stream API, and en­hanced in­ter­faces, many of which help bridge the gap be­tween func­tional and im­per­a­tive pro­gram­ming par­a­digms and allow for suc­cinct con­cur­rency im­ple­men­ta­tions. We in­ves­ti­gate sev­eral open is­sues re­lated to au­to­mat­i­cally mi­grat­ing (refac­tor­ing) legacy Java soft­ware to use en­hanced in­ter­faces cor­rectly, ef­fi­ciently, and as com­pletely as pos­si­ble. Our goal is to help de­vel­op­ers to max­i­mally un­der­stand and adopt this new fea­ture thus im­prov­ing their soft­ware.

Port NetBeans Lambda Expression Refactoring to Eclipse

Port Net­Beans Lambda Ex­pres­sion Refac­tor­ing to Eclipse

Java 8 is one of the largest up­grades to the pop­u­lar lan­guage and frame­work in over a decade. There are sev­eral new key fea­tures of Java 8 that can help make pro­grams eas­ier to read, write, and main­tain. Java 8 comes with many fea­tures, es­pe­cially re­lated to col­lec­tion li­braries. These in­clude such new fea­tures as Lambda Ex­pres­sions, the Stream API, en­hanced in­ter­faces, and more. While JDT Core/UI has in­cor­po­rated many Java 8 quick fixes and refac­tor­ings, there are still many fea­tures left to be done. For ex­am­ple, Net­Beans has a refac­tor­ing that con­verts loops to Lambda ex­pres­sions. This pro­ject is for ex­plor­ing the port­ing of the such con­ver­sion mech­a­nism in Net­Beans to Eclipse. These may be man­i­fested as refac­tor­ing and/or “quick fixes.” This pro­ject is open source. Please see the site link for down­loads.

Enumerization Refactoring: Converting Legacy Java Applications to use Language Enumeration Types

Enu­mer­iza­tion Refac­tor­ing: Con­vert­ing Legacy Java Ap­pli­ca­tions to use Lan­guage Enu­mer­a­tion Types

The Con­vert Con­stants to Enum refac­tor­ing for Eclipse pro­vides an au­to­mated ap­proach for trans­form­ing legacy Java code to use the new enu­mer­a­tion con­struct. This se­man­tics-pre­serv­ing tool in­creases type safety, pro­duces code that is eas­ier to com­pre­hend, re­moves un­nec­es­sary com­plex­ity, and elim­i­nates brit­tle­ness prob­lems that nor­mally pre­vent sep­a­rate com­pi­la­tion.

Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Oriented Software

Point­cut Re­ju­ve­na­tion: Re­cov­er­ing Point­cut Ex­pres­sions in Evolv­ing As­pect-Ori­ented Soft­ware

Point­cut fragility is a well-doc­u­mented prob­lem in As­pect-Ori­ented Pro­gram­ming; changes to the base-code can lead to join points in­cor­rectly falling in or out of the scope of point­cuts. In this pro­ject, we use an au­to­mated ap­proach which lim­its fragility prob­lems by pro­vid­ing me­chan­i­cal as­sis­tance in point­cut main­te­nance. The ap­proach is based on har­ness­ing ar­bi­trar­ily deep struc­tural com­mon­al­i­ties be­tween pro­gram el­e­ments cor­re­spond­ing to join points se­lected by a point­cut. The ex­tracted pat­terns are then ap­plied to later ver­sions to offer sug­ges­tions of new join points that may re­quire in­clu­sion. To il­lus­trate that the mo­ti­va­tion be­hind our pro­posal is well-founded, we first em­pir­i­cally es­tab­lish that join points cap­tured by a sin­gle point­cut typ­i­cally por­tray a sig­nif­i­cant amount of unique struc­tural com­mon­al­ity by an­a­lyz­ing pat­terns ex­tracted from 23 As­pectJ pro­grams. Then, we demon­strate the use­ful­ness of our tech­nique by re­ju­ve­nat­ing point­cuts in mul­ti­ple ver­sions of 3 of these pro­grams. The re­sults show that our pa­ra­me­ter­ized heuris­tic al­go­rithm was able to au­to­mat­i­cally infer new join points in sub­se­quent ver­sions with an av­er­age re­call of 0.93. More­over, these join points ap­peared, on av­er­age, in the top 4th per­centile of the sug­ges­tions, in­di­cat­ing that the re­sults were pre­cise.

My Clubs

Computer Systems Technology Colloquium

Com­puter Sys­tems Tech­nol­ogy Col­lo­quium

The Com­puter Sys­tems Tech­nol­ogy (CST) Col­lo­quium is ded­i­cated to pro­vid­ing the stu­dents, staff, and fac­ulty of New York City Col­lege of Tech­nol­ogy, the City Uni­ver­sity of New York, and the greater pub­lic with ac­cess to in­for­ma­tion re­gard­ing the lat­est de­vel­op­ments in com­put­ing from both a re­search and in­dus­trial per­spec­tive. We strive to sched­ule speak­ers that have a promi­nent in­flu­ence in the com­put­ing field and that can en­gage our au­di­ence to have a deeper un­der­stand­ing and pas­sion for com­put­ers, soft­ware en­gi­neer­ing, pro­gram­ming lan­guages, net­works, and other top­ics.

Math Club

Math Club

What do math­e­mati­cians do? Can math­e­mat­ics be fun and in­ter­est­ing? Do you like free pizza? The Math Club is open to every­one with an in­ter­est in logic puz­zles, games of chance or strat­egy, and math­e­mat­ics in gen­eral. We host a va­ri­ety of math re­lated events, math talks, math games, math puz­zles, field trips, math com­pe­ti­tions, and more. Feel free to stop by on Thurs­days in Namm N719, from 1-2pm.

IEEE Club @ CityTech

IEEE Club @ CityTech

We wel­come the CityTech com­mu­nity to learn and grow in the areas of elec­tri­cal and telecom­mu­ni­ca­tions tech­nol­ogy. Every se­mes­ter we pro­vide a se­ries of sem­i­nars with speak­ers that pre­sent the lat­est re­search. In ad­di­tion, var­i­ous work­shops are also pro­vided.

Computer Information Association

Com­puter In­for­ma­tion As­so­ci­a­tion

The Com­puter Club is a stu­dent or­ga­ni­za­tion that pro­vides a cre­ative and safe learn­ing en­vi­ron­ment where col­lege stu­dents in­ter­ested in com­put­ers and tech­nol­ogy come to­gether to ex­plore their own ideas. The club will plan and or­ga­nize pro­jects and ac­tiv­i­ties, out­side the class­room, with the pur­pose of en­hanc­ing tech­ni­cal skills and knowl­edge. It is de­signed to cre­ate an en­vi­ron­ment of team work, along with, en­hanc­ing in­ter­per­sonal and so­cial skills.

Computer Information Association

Com­puter In­for­ma­tion As­so­ci­a­tion

The Com­puter is a stu­dent or­ga­ni­za­tion that pro­vides a cre­ative and safe learn­ing en­vi­ron­ment where col­lege stu­dents ma­jor­ing in com­puter re­lated courses and/or in­ter­ested in com­put­ers and tech­nol­ogy, work to­gether with other stu­dents to ex­plore their own ideas, de­velop skills, and build con­fi­dence in them­selves through the use of tech­nol­ogy. The com­puter club plan and or­ga­nize pro­jects and ac­tiv­i­ties with the pur­pose of en­hance tech­ni­cal skills and knowl­edge out­side the class­rooms and de­velop team work skills and in­ter­per­sonal com­mu­ni­ca­tions among the club mem­bers. Mem­bers will learn to ap­pre­ci­ate and enjoy a va­ri­ety of soft­ware ap­pli­ca­tions and tech­nolo­gies in­clud­ing such tech­nolo­gies as web de­sign, pro­gram­ming, net­works, video games de­sign, phone ap­pli­ca­tion de­sign and mul­ti­me­dia pre­sen­ta­tions. Meet­ing dates and time: Thurs­days 12:45-2:15 pm Meet­ing Lo­ca­tion: N906 Phone Num­ber: (347) 699-CLUB (2582) Email: com­put­er­clubc­i­tytech@​gmail.​com