I received the following awards or honors (reversely chronological order):
I received the "CCF Youth Scientist Award" (CCF青年科学家奖) in 2015.
I received the "ACM Nanjing Rising Star Award/Excellent Youth Scientist Award" (ACM南京新星奖/卓越青年科学家奖) in 2014.
I received the "Best Paper Award" from APSEC 2014.
I received the "BOB 'Jing'-Ying Teaching Award" (南京大学北京银行"京"英奖教金) in 2014.
I received the "ACM SIGSOFT Distinguished Paper Award" from ICSE 2014.
I was selected into "Mountain-Climbing Talents" (南京大学登峰人才支持计划) (Level B) in 2013.
I was selected into "CVIC SE Talents" (中创软件人才奖) in 2012.
I received the "National Science and Technology Progress Award" (国家科学技术进步奖) (Second Class, 7/10) in 2011.
I was selected into "Outstanding Young Faculty of Nanjing University" (南京大学青年骨干教师) in 2011.
I was selected into "New Century Excellent Talents in University by the Ministry of Education" (教育部新世纪优秀人才) in 2010.
I am an ATC Certified ARM Engineer since 2007.
I received the IBM PhD Fellowship Award twice in 2005 and 2006, respectively.
My research interests include: big data software engineering, software testing and analysis, and adaptive and embedded system. You are welcome to talk to me if you have common interests. Here is a list of my publications. You may also read my Google Scholar Citations or DBLP page (results always mixed with others of similar names).
CABOT is a middleware infrastructure supporting context management for pervasive computing applications. It owns built-in inconsistency detection and resolution services for pervasive contexts. [BISON04, ESECFSE05, SCIS15]
ICC/PCC: ICC/PCC incrementally detects context inconsistency. It builds on partial constraint checking and is extremely efficient. It works for general first-order logic based consistency constraints. [ICSE06, TOSEM10, TOSEM10a]
OCC: OCC optimizes constraint checking by removing unnecessary link generation in inconsistency detection. [SEAMS07]
DCC: DCC supports decentralized constraint checking. It also helps protect privacy. [PERCOM08]
CON-C: CON-C supports parallel constraint checking. It exploits multiple CPU cores. [SCIS13]
GAIN: GAIN also supports parallel onstraint checking. It exploits multiple GPU cores and is extremely stable. [APSEC14], IST15]
CINA: CINA suppresses the detection of unstable context inconsistency. It derives vulnerability conditions from consistency constraints and match them against context changes to make smart inconsistency detection scheduling. [TSE15, TSE15a]
SHAP: SHAP suppresses the detection of inconsistency hazard/unstable context inconsistency by learning patterns from history inconsistency detection results. [APSEC14, IST15]
D-BAD: D-BAD resolves detected context inconsistency by heuristics. It aims to identify contexts being most likely faulty. [ICDCS08]
IMPACT/EFFECT: IMPACT/EFFECT resolves context inconsistency by minimizing side effect to applications. It is exhausitive but incremental, and therefore efficient. [ESECFSE07, MOBIQUITOUS11]
CONSVIEW: CONSVIEW supports context inconsistency resolution for multiple applications. It uses views to isolate applications and make inconsistency resolution conflict-free. [COMPSAC12]
AFCHECKER: AFCHECKER detects faults for model-based context-aware applications. It derives hidden features from adaptation rules and environmental data, and formulates them as deterministic and probabilistic constraints. Based on these constraints, it prunes false positives in fault detection and prioritizes reports for effective inspection. [JSS13][website]
VERSA: VERSA verifies model-based context-aware applications under uncertain environments. It reports probabilistic verification results for prioritized inspection. [ASE14]
RESYNC/REMATCHING: RESYNC/REMATCHING supports recovery from consistency failure for model-based context-aware applications. It decides an application's recoverability statically and supports it dynamically. [APSEC12, ASE13, MIDDLEWARE13]
UGA: UGA tests Android applications. It combines user input traces and random testing, and thus improves test coverage. [APSEC14, INTERNETWARE15]
COSEDROID: COSEDROID supports computation and sensing offloading for Android applications. It virtually borrows computation resources and battery power from other devices. [COMPSAC15]
GREENDROID: GREENDROID analyzes energy inefficiency issues for Android applications. It builds on Android-specific event rules and tainting analysis to calculate sensory data utilization. [MIDDLEWARE13, PERCOM13, IJSI14, TSE14, IEEESOFT15]
PERFCHECKER: PERFCHECKER analyzes GUI lagging, energy leak and memory bloat issues for Android applications. [ICSE14][website]
CARE: CARE uses cache to reduce synchronization and logging in record and replay for concurrent Java programs. It supports value determinism in replay. [ICSE14]
RWTRACE: RWTRACE combines wait-free notification in Stride and speculation-retry design in CARE for improved record and replay. It provides an open-source implementation. [ASE15][website]
PAR: PAR generates Java program patches alike human-written ones. This study investigates how such patches help developers as debugging aids. [FSE14]
CMD: CMD locates bugs in Java programs by metamorphic testing and concolic execution. [COMPSAC15]
ABC: ABC accelerates C/C++ project building by detecting redundant dependencies and avoiding redundant recompilation. [APSEC15]
AMCHECK/CUSTODES: AMCHECK/CUSTODES detects spreadsheet smells by program synthesis of formula patterns or cell culstering with strong/weak features. [ICSE14][ICSE16][website]
I'm looking for self-motivated students with commitment on software engineering and program analysis research. If you have good programming skills and wish to conduct useful research, please contact me. You are supposed to have background knowledge.
My postgraduate students (I am happy to work with them):
Present (MSc track, followed by PhD track):
Jun Sui (MSc; parallel constraint checking)
Xiangyu Wu (MSc; Android app offloading and testing)
Qiwei Li (MSc; energy diagnosis and race detection for Android apps)
Ruiqing Zhang (MSc; spreadsheet testing)
Xiaofan Li (MSc; pervasive computing systems)
Ying Zhang (MSc; with Prof. Xiaoxing Ma and Chun Cao; system engineering)
Necessary course that must be taken during graduate study for students in Institute of Computer Software
2015 (Fall) Lecturer: Principles and Techniques of Compilers (22010120)
2015 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2014 (Fall) Lecturer: Guidance to Software Engineering Research (081202D10)
2014 (Fall) Lecturer: Principles and Techniques of Compilers (22010120)
2014 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2013 (Fall) Lecturer: Guidance to Software Engineering Research (081202D10)
2013 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2012 (Fall) Lecturer: Guidance to Software Engineering Research (081202D30)
2012 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2011 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2009 (Fall) Lecturer: Computer and Programming Fundamentals I (COMP102, HKUST)
2008 (Fall) Lecturer: Programming Fundamentals and Methodology (COMP104, HKUST)
2007 (Spring) Final Year Projects Grader (FYP, HKUST)
2004 (Spring and Summar) Teaching Assistant: Java Programming (COMP201, HKUST)
2003 (Fall) Teaching Assistant: Programming Fundamentals and Methodology (COMP104, HKUST)
Hobbies and Thoughts
I love playing computer games, watching movies, hiking, thinking and daydreaming (O_O).
I am interested in game development. In early years, I worked with friends on two RPG games: NewPal and FreeRPG. We focused on a reusable game engine and supporting tools, and developed demo stories on them. Developing a complete game is different from just develping a demo. You may want to take a look at SDLPAL as a good example of complete game. Game development also requires passion. One positive example is Notch (刻痕) game series. Its first version was made by a non-cs student, who was also the main developer of later versions. All their pictures, music and stories are new, and all team members are students. SDLPAL and Notch are free games. You can find them from the Internet.
You may have experienced worries. Sometimes we care about how others think of us. Although we can learn from others' stories, we have to make our own decisions. Usually, following the way you have choosed by yourself, you will not feel regretful. When you feel worries, you may want to take a look at these words.