Name Mark Hills
Position Assistant Professor
Department of Computer Science
East Carolina University
Office Science & Technology Building, C-110
Phone +1 252 328 9692
Email mhills@cs.ecu.edu
Mark Hills

Office Hours

For Fall 2016, my office hours will be Wednesday from 1pm to 3pm; Thursday from 10am to 12pm; and Friday from 1pm to 2pm. You can also contact me to schedule an appointment if you cannot meet with me during those times.

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 also part of the graduate Software Engineering program.

Before moving to ECU, I was a Postdoctoral Researcher affiliated with Centrum Wiskunde & Informatica (CWI), where I was 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 and developer productivity by providing better tools and techniques for creating, analyzing, understanding, transforming, and verifying programs.

Collaborating with colleagues at CWI, I'm currently looking into how empirical information about software systems can inform the creation of precise program analysis tools. Most of this work has taken place in the context of PHP, a dynamic scripting language that is widely used, including on many open-source projects, but that still lacks adequate tool support. We have been able to see how, and how often, language features that are typically hard to analyze are used, and then use this information to build analyses focused on issues like resolving which files will be included at runtime and which values will be used in some reflective features of the language. We are also investigating how (and why) the use of the language changes over time, and how specific features and APIs, such as database libraries, are used. The PHP AiR framework, available on GitHub, provides the core support for our work on PHP, and is free to download and use.

Along with this, I'm looking at how domain-specific languages can be used to more efficiently build program analysis tools, handle complex aspects of mobile application development, and enable more flexible interaction with NoSQL databases. As an example, I am currently working on a language, DCFlow, for declaratively specifying the control flow rules of a language, and am also starting to look at other languages for analysis aspects such as type inference. I am also interesting in applying empirical techniques to the DSL design process, helping us to ensure that we have a solid grasp of the actual usage scenarios that we should support. This has resulted in two prototype languages for declaring complex gestures in mobile applications using embedded DSLs in both Java (for Android) and Swift (for iOS).

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, DBLP (note that this has changed, apparently there are now other researchers with the same name), ResearchGate, and ORCID. Information about the classes I teach and ongoing research projects will be available soon.