Collaborative Programming

From CSWiki

Timothy L. Hinrichs

Postdoctoral Researcher, University of Chicago, Department of Computer Science

Abstract

Collaborative Programming involves settings in which groups of people cooperate to issue instructions to computer systems. Collaborative Programming differs from traditional programming settings because instruction sets can be incomplete and conflicting: no one knows everything, and a group of people rarely agree on everything. An incomplete instruction set may only say what to do some of the time or what actions the system is forbidden from performing. A conflicting instruction set may simultaneously instruct the system to perform some action and forbid the system from performing that same action.

Technology that supports collaborative programming settings must be able to combine independently authored instruction sets and be tolerant of incompleteness and conflicts. Logical languages are a natural foundation for such technology and hence draw upon and contribute to the results from logic and automated reasoning. This talk introduces collaborative programming and illustrates its utility with three examples, one of which is discussed in depth.

Biography

Timothy L. Hinrichs studies Computational Logic: the representation and processing of knowledge expressed using logical languages, e.g. Prolog and first-order logic.

He currently focuses on Collaborative Programming: settings in which groups of people cooperate to issue instructions to computer systems. Collaborative Programming differs from traditional programming settings because instruction sets can be incomplete and conflicting: no one knows everything, and a group of people rarely agree on everything. An incomplete instruction set may only says what to do under certain circumstances or what actions the system should not perform. A conflicting instruction set may simultaneously instruct the system to perform some action and forbid the system from performing that same action.

Technology that supports collaborative programming must be able to combine independently authored instruction sets and be tolerant of incompleteness and conflicts. Logical languages are a natural foundation for such technology and hence draw upon and contribute to the results of computational logic.

Hinrichs received a B.S. from the University of Illinois at Urbana-Champaign in Computer Science in 2001 and a Ph.D. from Stanford University in Computer Science in 2007. He is currently a Postdoctoral researcher in Computer Science at the University of Chicago.



To return to the main workshop page, click here.