I was a research assistant professor with HKUST from Sep 2008 to Sep 2010. Since Sep 2010, I joined Nanjing University (NJU) as an associate professor, and was later promoted to Ph.D. supervisor in 2014 and full professor in 2016.
I received the following awards or honors:
I received "Safety and Security of System Software Best Paper Award" (最佳论文奖) from NASAC 2018.
I received "ACM SIGSOFT Distinguished Paper Award" (杰出论文奖) from ASE 2018.
I received "NJU CS Virtue Star Award" (南京大学计算机学科美德之星奖) in 2017.
I received "NJU Du-Sha Teaching Award" (南京大学杜厦奖教金) in 2017.
I received "Jiangsu Computer Society Service Award" (江苏省计算机学会科技服务贡献奖) in 2016.
I was promoted to "IEEE senior member" and "CCF senior member" in 2016.
I received "Jiangsu Computer Society Service Award" (江苏省计算机学会科技服务贡献奖) in 2015.
I received "CCF Young Computer Scientist Award" (中国计算机学会CCF青年科学家奖) in 2015.
I received "ACM Nanjing Rising Star Award/Excellent Youth Scientist Award" (ACM南京新星奖/卓越青年科学家奖) in 2014.
I received "Best Paper Award" (最佳论文奖) from APSEC 2014.
I received "NJU BOB 'Jing'-Ying Teaching Award" (南京大学北京银行"京"英奖教金) in 2014.
I received "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 "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 IBM PhD Fellowship Award twice in 2005 and 2006.
My research interests include: big data software engineering, intelligent software testing and analysis, and adaptive and autonomous software systems. Here is a list of my publications. You may read my Google Scholar Citations or DBLP page .
Our research projects are around the construction and runtime support for intelligent software in open environments:
Addressing issues outside software:
CABOT is a middleware infrastructure supporting context management for adaptive applications. It offers inconsistency detection and resolution services for validating application contexts. [BISON04, ESECFSE05, SCIS15]
ICC/PCC incrementally detects context inconsistency. It builds on partial constraint checking and is extremely efficient. [ICSE06, TOSEM10, TOSEM10a]
OCC optimizes constraint checking by removing redundant link generation in inconsistency detection. [SEAMS07]
DCC supports decentralized constraint checking and protects privacy of contexts. [PERCOM08]
CON-C supports parallel constraint checking via CPU cores. [SCIS13]
GAIN supports parallel onstraint checking via GPU cores. It is extremely stable. [APSEC14, IST16]
GEAS-ORI/GEAS-OPT adaptively forms batches of context changes for further boosting constraint checking techniques. [ICSME17, TSE19]
CINA suppresses the detection of unstable context inconsistency. It derives instability conditions from consistency constraints and makes adaptive inconsistency detection scheduling. [TSE15, TSE15a, correction for the formal version]
SHAP/SHAP+ suppresses the detection of inconsistency hazard (or unstable context inconsistency) by learning patterns (or instability conditions) from detection history. [APSEC14, IST16]
D-BAD resolves detected context inconsistency by heuristics. It identifies contexts being most likely faulty. [ICDCS08]
IMPACT/EFFECT resolves context inconsistency by minimizing side effect to applications. [ESECFSE07, MOBIQUITOUS11]
CONSVIEW supports context inconsistency resolution among multiple applications. It uses consistent views to isolate applications from each other. [COMPSAC12]
AFCHECKER detects faults for model-based adaptive applications. It derives hidden features from adaptation rules and environmental data, and formulates deterministic and probabilistic constraints. Based on them, it prunes false positives in fault detection and prioritizes fault reports. [JSS13][website]
VERSA verifies model-based adaptive applications under uncertain environments. It reports and optimize probabilistic verification results. [ASE14, JSS18, TOIT18]
SIT tests model-based adaptive applications under uncertain environments by adaptive sampling of sensory inputs. [JSS16]
COMID derives invariants for testing cyber-physical adaptive applications by context refinement and multi-invariant generation. [TR19]
RESYNC/REMATCHING supports systematic recovery from consistency failure for model-based adaptive applications. [APSEC12, ASE13, MIDDLEWARE13]
CARE reduces synchronization and log overhead for recording and replaying concurrent Java programs. [ICSE14]
RWTRACE combines wait-free notification in Stride and speculation-retry design in CARE for recording and replaying concurrent C programs. [ASE15][website]
BC (Bisectional Coordination) uses spatial locality in shared memory accesses to significantly reduce access dependences in recording and replaying concurrent C programs. [FSE16]
SCHNAUZER systematically samples in a speed space to manifest concurrency bugs in a lightweight and effective way. [ESECFSE18]
DISSECTOR shows how to effectively distinguish beyond-inputs from within-inputs for guarding deep learning applications. [ICSE20]
SYNEVA/VISION synthesizes a mirror program to simulate the behavior of the knowledge program derived from training data, and decides by comparing the two programs whether the derived knowledge suits new scenarios. [QRS18, APSEC19]
We show how adversary-oriented structural coverage could not relate to real coverage. [ICSE19]
We show how to improve DNN testing efficiency for given operational contexts. [ESECFSE19]
UGA tests Android apps. It combines user input traces and random testing, systematically improving test coverage. [APSEC14, INTERNETWARE15]
COMBODROID combines human and machine intelligence to improve test coverage for Android apps.[ICSE20]
GAT tests Android apps. It derives gesture types from static analysis and conducts guided gesture testing. [APSEC16]
AATT/AATT+ tests Android apps. It manifests concurrency bugs by active input and schedule generation. [APSEC16, SCP18]
APE tests Android apps. It enhances testing effectiveness with runtime model evoluation. [ICSE19]
COSEDROID supports both computation and sensing offloading for Android apps (e.g., borrowing computation resources and battery power from other devices). [COMPSAC15]
DROIDLEAKS offers a comprehensive database of resource leak bugs in Android apps for public evaluation. [EMSE19]
2018 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2017 (Fall) Lecturer: Guidance to Software Engineering Research (081200C05/085211C06)
2017 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2016- Class advisor for undergraduate students enrolled in 2016 (Class 5)
2016 (Fall) Lecturer: Guidance to Software Engineering Research (081200C05/085211C06)
2016 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2015 (Fall) Lecturer: Guidance to Software Engineering Research (081202D10)
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 was 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 simply 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 were newly made. SDLPAL and Notch are free games. You can find them from 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.