There are two driving forces in computer systems research, effectively defining the goals and the parameters within which we work. These are the applications , which place computational demands on systems, and the basic circuit and communication technologies , which place bounds on what is actually possible. The process of synthesising new structures must operate at all levels, ranging from languages and their implementation, through protocols, micro-architectures, and the optimisation techniques for mapping computations onto computing structures. It also is a continuing challenge to harness the theoretical tools arising from foundational research, but one which we believe is essential. The scientific and engineering challenges outlined above are addressed through research into four primary themes.
Systems comprise collections of components , embracing both software and circuitry.
We are concerned with how to express the components of a system, how to partition components into a parallel or distributed form, and the interactions between components. For example, in the design of parallel systems a key challenge is how to make parallel software engineering a mainstream activity. The motivation is to make parallel programming as accessible as sequential programming. This requires better ways of expressing parallel algorithms, and possibly even new languages. Several members of the institute are actively researching this area.