I have received the following awards or honors (reversely chronological order):
I was selected into "南京大学登峰人才支持计划" (Level B) in 2013.
I was awarded "中创软件人才奖" in 2012.
I was awarded "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 was awarded IBM PhD Fellowship twice in 2005 and 2006, respectively.
I am interested in software engineering, software testing and analysis, and pervasive computing. 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).
Our current research projects include CABOT and ADAM two series:
CABOT: CABOT is a middleware infrastructure supporting context management for pervasive computing applications. It owns built-in consistency management services that enable efficient context inconsistency detection and automated inconsistency resolution for applications. [BISON04, ESECFSE05]
CABOT-PCC: CABOT-PCC extends CABOT middleware with the ability of incrementally detecting context inconsistencies. It builds on our partial constraint checking technique and works extremely efficient. Its high performance is independent of consistency constraints and totally transparent to applications. [ICSE06, TOSEM10, TOSEM10a]
CABOT-OCC: CABOT-OCC optimizes constraint checking by suppressing redundant links generated from inconsistency detection. It largely saves time/space cost for calculaing/storing inconsistency detection results. [SEAMS07]
CABOT-DCC: CABOT-DCC supports constraint checking in a decentralized manner. It helps protect privacy of distributed hosts in context inconsistenty detection. [PERCOM08]
CABOT-CCC: PCC, OCC and DCC work sequentially. CABOT-CCC supports constraint checking in a concurrent manner. It exploits multi-core computing capability to systematically improve checking efficiency [SCIS13].
CABOT-DBAD: CABOT-DBAD extends CABOT middleware with the ability of automatically resolving detected context inconsistencies with heuristic rules. It deploys our drop-bad idea to identify contexts that are most likely to be faulty. It is efficient and works better than existing heuristic-based techniques. [ICDCS08]
CABOT-EFFECT: CABOT-EFFECT resolves context inconsistencies by automatically choosing the solution that minimizes the impact of doing so on applications. It exhausitively but efficiently compares all solutions by incremental analysis and reuse of previous analysis results. [ESECFSE07, MOBIQUITOUS11]
CABOT-CONSVIEW: CABOT-CONSVIEW supports context inconsistency resolution for multiple applications running on the same middleware. It relies on consistent context views to isolate different applications to make their resolving requirements conflict-free. [COMPSAC12]
ADAM: ADAM extends CABOT middleware by supporting defect analysis for model-based context-aware applications. It deploys a set of assertion checkers to monitor well-known error patterns so as to track specific defects in these applications. It adopts incremental rule evaluation to guarantee tracking efficiency and effectiveness. [JSS12, INTERNETWARE12, IJSI13]
ADAM-AFCHECKER: ADAM-AFCHECKER supports fault analysis for model-based context-aware applications. It derives hidden features from adaptation rules and an application's running environment. It formulates these features into deterministic constraints and probabilistic constraints. Based on these constraints, it prunes false positives in fault reports and prioritizes remaing ones for effective fault inspection. [JSS13][website]
ADAM-REMATCHING: ADAM-REMATCHING enables model-based context-aware applications with the ability of automatically recovering from consistency failures, which imply an application's internal state (understanding to environment) deviating from its actual external environment. ADAM-REMATCHING includes a static analysis tool for deciding an application's recoverability and dynamic support that guides its error recovery at runtime. [APSEC12, ASE13, MIDDLEWARE13]
ADAM-GREENDROID: ADAM-GREENDROID enables automated analysis of portable context-aware applications, e.g., Android applications, for their energy efficiency. It builds on a derived application model that captures application-generic temporal rules for event handler scheduling, and a tainting-based analysis technique to examine sensory data utilization at runtime states of an application. ADAM-GREENDROID has successfully located real energy inefficiency problems in popularly downloaded Android applications. [PERCOM13, MIDDLEWARE13]
ADAM-PERFCHECKER: ADAM-PERFCHECKER focuses on performance issues of context-aware smartphone applications. It extends our previous focus of energy efficiency to GUI lagging, energy leak and memory bloat three common bug types. ADAM-PERFCHECKER has successfully detected real performance issues in popularly downloaded Android applications. [ICSE14][website]
ADAM-CARE: ADAM-CARE generalizes ADAM's program analysis to common Java programs that own interleaving threads accessing shared memory objects. It deploys a software cache to guide effective and efficient program execution record and replay. It guarantees value determinism to assist debugging concurrent Java programs. [ICSE14]
We also have ongoing research projects on dynamic software updating, automated bug-fixing, and spreadsheet testing. I'm looking for self-motivated students with commitment on software engineering and analysis research. This is a fast-growing area that keeps generating research opportunities. If you have good programming skills and wish to conduct interesting research, please contact me. You are supposed to have background knowledge before approaching me.
My postgraduate students (I am happy to work with them and they are excellent!):
Hailong Ge (MSc graduated in 2012; co-supervised with Prof. Xiaoxing Ma; thesis title: "Design and Implementation of a Software Framework for Self-adaptive Applications")
Hao Chen (MSc graduated in 2012; co-supervised with Prof. Xiaoxing Ma; thesis title: "A Mobile Robot Middleware Supporting Self-adaptive Programming")
Present (MSc track, followed by PhD track):
Xiaokang Chen (MSc student; working on context inconsistency resolution)
Xuezhi Hong (MSc student; working on collaborative self-adaptive application)
Lei Jiang (MSc student; working on context inconsistency resolution)
Hui Sun (MSc student; co-supervised with Prof. Xiaoxing Ma; working on self-adaptive application platform)
Wang Xi (MSc student; working on context inconsistency detection)
Hao Jin (MSc student; co-supervised with Prof. Xiaoxing Ma; working on software testing and analysis)
Xiujiang Li (MSc student; co-supervised with Prof. Xiaoxing Ma; working on dependable self-adaptive application)
Jun Sui (MSc student; working on context inconsistency detection)
Xiangyu Wu (coming soon!)
Qiwei Li (coming soon!)
Ruiqing Zhang (coming soon!)
Xiaofan Li (coming soon!)
Linghao Zhang (PhD student; co-supervised with Prof. Xiaoxing Ma; working on dependable self-adaptive application)
Haibin Yang (PhD student; co-supervised with Prof. Xiaoxing Ma; working on context inconsistency resolution)
Tianxiao Gu (PhD student; co-supervised with Prof. Xiaoxing Ma and Dr. Chun Cao; working on dynamic software updating)
Yi Qin (PhD student; working on software coordination)
Yanyan Jiang (PhD student; co-supervised with Prof. Xiaoxing Ma; working on concurrent program)
Wenhua Yang (MSc student; working on dependable self-adaptive application)
Xiaoqian Zhu (MSc student; co-supervised with Prof. Xiaoxing Ma; working on automata theory)
Reviewing the following journals (alphabetic order):
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 some friends on two RPG games: NewPal and FreeRPG. We focused on a reusable game engine and supporting tools, and developed demo stories based on them. Developing a complete game is very different from just develping a game engine with demo stories. You may want to take a look at SDLPAL as a good example of complete game. Game development also requires great passion. One positive example is Notch (刻痕) game series. Its first version was made by a non-cs student, who was also the main designer and programmer of later versions. All their pictures, music, and stories are new (not copied from other games), and all development 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' successful 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.