You are here

Programming Languages

URL: http://plg.uwaterloo.ca

Contact Person: Peter Buhr, pabuhr@uwaterloo.ca

Group Members:   Tim Brecht, Peter Buhr, Charlie Clarke, Gordon Cormack, Michael Godfrey, Ric Holt, Ondrej Lhoták

Overview

The Programming Languages Group (PLG) conducts work in programming languages and software engineering. These areas are related by the underlying use of basic programming-language technologies: composition methodologies, scanning, parsing, symbol tables, type theory, code generation, static/dynamic analysis and code management.

Programming Languages

A primary language feature affecting high-performance software on multi-core/multi-processor computers is concurrency support, in the language, the runtime system, and associated tools. Because concurrent programming is complex, multiple kinds of support are needed to aid in its composition, development, testing, debugging, and tuning. Peter Buhr is developing uC++, which extends C++ with light-weight coroutines, monitors and tasks, futures, asynchronous exception handling, asynchronous I/O and real-time specification; as well, tools are being developed for profiling, debugging, visualizing and replaying of concurrent programs. Tim Brecht and Peter Buhr are developing concurrent memory-management approaches for use with or without garbage collection. Tim Brecht and Peter Buhr are developing very high-performance multi-threaded web-servers. Ondrej Lhoták is working on compilation techniques targeting data-parallel and multicore processors.

Ondrej Lhoták is developing techniques for interprocedural program analysis of object-oriented and aspect-oriented programs using Binary Decision Diagrams to compactly represent and efficiently manipulate analysis facts. Peter Buhr is developing an extended version of C, called Cforall, with parametric polymorphism and overloading. Gord Cormack is working on polymorphic type inference algorithms, particularly for higher-rank types. This includes exploring the connections between polymorphic type systems and generalizations of the semiunification problem.

Software Engineering

Of primary concern in large software systems is the ability to understand software architecture, evolution, and migration, which involves performing detailed case studies of how and why large software systems evolve over time. PLG interests in these software-engineering issues overlap with the Software Architecture Group (SWAG). Ric Holt and Michael Godfrey have developed tools for reverse engineering and architecture visualization including the SWAGkit toolset for architecture analysis and visualization, and the CLICS toolset for source code cloning analysis. The Portable Bookshelf uses a toolkit to generate hierarchical architecture information from code, to be presented and navigated using a web-based paradigm.

PLG researchers are actively involved in industrial collaborations, most notably with Nortel Networks, IBM, Bell Canada, HP and Sun Microsystems.