Publications by Year
Publications by Type
Research Projects
Potential Student Projects
Name Mark Hills
Position Assistant Professor
Department of Computer science
East Carolina University
Office Science & Technology Building, C-110
Phone +1 252 328 9692
Picture of Mark

Who am I?

My name is Mark Hills. I am an Assistant Professor in the Department of Computer Science at East Carolina University, where I am part of the Software Engineering program.

Before moving to ECU, I was a Postdoctoral Researcher affiliated with Centrum Wiskunde & Informatica (CWI), where I am part of the SEN1/SWAT (Software Analysis and Transformation) group at CWI. From October 2009 to September 2011 I was also affiliated with INRIA Lille Nord Europe, working on the joint CWI/INRIA ATEAMS project.

Before that, I was a PhD student in the Formal Systems Lab in the Department of Computer Science at the University of Illinois at Urbana-Champaign.

Where am I?

I work at East Carolina University, located in Greenville, North Carolina. I am in office C-110 in the Science and Technology Building.

What do I do?

I am interested broadly in the field of programming languages and the intersection of programming languages with software engineering. The goal of my research is to improve software quality by providing better tools and techniques for analyzing, understanding, transforming, and verifying programs. To this end, my research has focused on several themes:

  • Software engineering: empirical software engineering, program comprehension, software metrics, software maintenance and evolution;
  • Static analysis: bug finding, analysis of domain-specific properties, applications of static analysis for program transformation (specifically, refactorings), enforcement of security properties in programs, reusable analysis frameworks;
  • Semantics of programming languages: language prototyping, modularity of language definitions, modeling complex object-oriented features, the performance impact of design choices in executable formalisms, uses of formal specifications for program verification;
  • Language implementation: implementation of IDE-supported analysis tools, language features for meta-programming languages, domain-specific languages for program analysis.

Currently I am looking into developing static analysis tools and techniques for large, open-source web systems written in PHP. As an aid to building these tools and techniques, I (with colleagues at CWI) am applying empirical techniques to analyze a large corpus of PHP software, which lets us see how, and how often, certain tricky language features are used. This helps us in focusing our efforts: unused features can be ignored, rarely used features can be treated in a more naive fashion without concerns about generating too many false positives, and patterns of feature usage can be taken into account to improve the results of an analysis. I am also looking at applications of these tools and techniques to refactoring, and am continuing to look at extending my thesis work on policy frameworks to streamline the creation of new analyses.

Most of my current research uses Rascal, a domain-specific language targeted at program analysis and transformation. Rascal grew out of work on ASF+SDF, a system for algebraic specification (ASF) and syntax definition (SDF), and RScript, a language built on top of ASF+SDF focused on representing and manipulating program facts as relations (the R in RScript). Rascal is a hybrid imperative/functional language with a rich set of datatypes and extensive pattern matching facilities. I am currently one of the contributors to the language, and occasionally answer Rascal questions on Stack Overflow (if someone doesn't beat me to it!). I am also working on static analysis tools for Rascal, which can be used both to help users find problems in their programs and to optimize the execution of Rascal code.

Some of my research also uses Maude, a language and system for rewriting logic, an extension of equational logic (specifically, order-sorted membership equational logic) that supports reasoning about nondeterminism and concurrency. I also was involved in some of the early work on the K Framework, a semantic technique and set of tools that grew out of work on the Rewriting Logic Semantics project. I am in the process of converting my thesis work, which uses a K semantics directly given in rewriting logic and earlier versions of the K tools, to use the current version of the K Framework.

More Information

My Publications are available organized both by year and by type of publication. I also maintain an online list of the presentations I have given. Information on my publications is also available through Google Scholar and DBLP.