Donglin Liang

Assistant Professor 
Computer Science and Engineering

EE/CS 6-205
University of Minnesota
Phone: 612-626-7508

dliang@cs.umn.edu

  "We are what we repeatedly do. Excellence, then, is not an act, but a habit." - Aristotle

    Research Opportunities
      Projects are available for both Master students and PhD students. These projects are in various areas such as anlaysis of Java programs, program visualization, testing and analysis of programs in ubiquitous computing environment, understanding the complexity of programs. RA positions are available. If interested, please contact me.

    Research Overview
Our mission: Bridging the cognition gap between software specification (formal/informal) and the software implementation.
Analyer
      Ever-increasing demands and complexity of software systems have constantly called for improvement in software quality and programming productivity. Software quality and programming productivity greatly depend on  the capabilities of programmers in reasoning about, understanding, and verifying software artifacts. The main goal of my current research is to develop techniques and tools that can enhance such capabilities. My current research focuses on the following areas.
      • Investigate, through empirical studies and case studies, the complexities involved in testing, reasoning, and verifying programs. Such  investigation would identify the requirements for practical programming development tools that handle such complexities. The investigation also provides insights in developing effective techniques and tools.
      • Investigate new program analysis techniques that can automatically extract information from program artifacts to support various software development and maintenance activities. The investigation involves developing and evaluating techniques that can efficiently handle, as precisely as possible, various language features  (e.g. pointers, references, dynamic binding, recursive data structures) in program analyses and verification. The investigation also involves developing systems that effectively gather the dynamic information from program execution when the program is being tested or is being used by the real users.
      • Develop effective software visualization techniques. These techniques provide various viewing and navigating capacities for uitlizing the information extracted from the program or the program execution for better understanding the program behaviors.
The ultimate goal of my research is to facilitate practical software tools for developing, testing, debugging, and maintaining of real software. 

    Software Systems