| |
Areas of research in Computer Science:
Programming Languages
Programming Languages and Systems Programming is a central and
fundamental topic in computer science which concerns all aspects
related to programming. The research in the Programming Language Group
at NUS School of Computing includes research into particular
programming languages, fundamental research such as type systems,
program analysis and verification of software, paradigms of
programming, and aspects arising from concurrent, parallel and
distributed programming. There is also overlap with software
engineering work in formal methods as described in the software
engineering portion of this report.
Our research can be classified along the following dimensions:
- Theoretical Foundations: models of concurrency, semantics
and logics of programming languages, etc.
- Functional Programming: extension of type systems,
enhancing functional programming languages, etc.
- Constraint Programming: constraint logic programming (CLP),
algorithms for Constraint Satisfaction Problems (CSP), scheduling and
timetabling algorithms, constraint solving frameworks and systems, etc.
- Program Analysis and Transformations: abstract
interpretation, reasoning about programs and partial evaluation.
- Formal Methods: verification, model checking and theorem
proving
- Dependable Software: detection of software vulnerabilities,
systematic construction of dependable software, specification mining
- Programming Paradigms: principles and practice of aspect
oriented programming
- Applications of Programming Paradigms: applications of
constraint programming to reallife combinatorial problems such as
sports scheduling, rostering, resource allocation, etc.
- Programming for Web 2.0
Research Findings and their Applications
- Scalable precision in analysing large software
- Must/may analysis to distinguish real software bugs from
false alarms
- Achieving accurate heap analysis with separation logic
- Type systems for rich languages, user-definable overloading
and XML
- Type error reporting
- Dynamic program slicing
- Visualisation for white-box tuning for local search
algorithms
- Enhancing constraint propagation for optimisation problems
- Modelling and solving using ad-hoc constraints

Figure 1: Vis: a local search visualizer. Stochastic Local
Search is often used for solving complex decision problems, e.g., in a
resource allocation problem, we might need to decide in a production
line when a particular component should be produced; in a vehicle
routing problem, we might need to determine what a good schedule is for
a group of vehicles to do pickup and delivery to minimise total time
required. Although stochastic local search methods are often effective,
they need to be tuned to get good results. The screenshot shows a
prototype system which visualises the behaviour of a local search for a
problem
and this is used to improve the search.
Commercialisation
Constraint and Optimisation Technology: Martin Henz, in collaboration
with FriarTuck Pte Ltd, has secured innovative projects in the
reporting period. The most notably projects among these projects are a
workforce management project with the Maritime Port Authority of
Singapore (MPA) and an operating theatre scheduling project with the
National University Hospital (NUH). The latter project is a joint
venture with NUH, funded by the Infocomm Development Authority of
Singapore (IDA), and includes Fujitsu and SAP as partners.
Research Highlights
JSlice (A. Roychoudhury) is the first dynamic slicing tool for
debugging and the understanding of Java programs. JSlice is currently
distributed on SourceForge and is deployed in 15 different countries
for research and development. Places of use include universities (such
as Carnegie Mellon Purdue and McGill), research labs (such as IBM TJ
Watson) and companies (such as Agitar Software). The tool has also been
adopted as a teaching aid in graduate courses (in universities such as
North Carolina State University and University of Delaware).
The faculty members involved in programming
languages
research are:- CHIN Wei Ngan
- HENZ Martin
- JAFFAR Joxan
- KHOO Siau Cheng
- ROYCHOUDHURY Abhik
- SULZMANN Martin
- VOICU Razvan
- YAP Hock Chuan, Roland
Software Engineering
Software engineering research covers techniques for developing high
quality software and the use of formal methods. Software engineering
research ranges from using web-based knowledge engineering (semantic
web) to software reuse techniques for designing high-variability
software components, and through to debugging. In formal methods, the
research looks at the problems of specification and verification of
software. There is synergy with the faculty and research in the
programming languages in the areas of program verification, debugging
and system specification.
The research can be classified along the following dimensions:
- debugging
- integrated modelling techniques
- software specification
- program and software composition
- software engineering methodologies
- software reuse
- semantic web and ontologies
Research Highlights
- JSlice: the first dynamic slicing tool for Java (see also the Programming Languages section)
- Meta programming for software reuse with XVCL
- Reasoning for the semantic web
- Efficient specification miners

Figure 2: The specification of a piece of software tells you what the
software is supposed to do - it can be thought of as a contract which
defines the software. Unfortunately for many pieces of software, the
specification may not have been written or is not available. This
diagram shows a prototype system which is able to produce
specifications directly from the software itself, i.e., it addresses
the problem of Specification Mining.
The faculty members involved in software engineering
research are:
- DONG Jin Song
- JARZABEK Stanislaw
- RAJAPAKSE Damith Chatura
- WADHWA Bimlesh
|