Fall 2001 to Spring 2002

 

Title: Taming the Infinite: Verification of Parameterized Systems
Speaker: Amir Pnueli, Weizmann Institute of Science and New York University
Abstract: The task of formal verification sets out to establish with mathematical certainty that a reactive (hardware or software) system conforms with its specification. Two main paradigms are currently applied for performing this important task: MODEL CHECKING which, in a fully automatic manner, exhaustively explores all the reachable states of the system but is restricted to systems with a finite (and not too large) number of states, and DEDUCTIVE VERIFICATION, which requires user ingenuity and guidance, but can be applied to infinite-state systems.

In this talk, we will survey approaches which combine ideas from the two methods to achieve higher degrees of automation in the verification of infinite-state systems. After exploring the various sources for infinity within systems, which could be due to complex control or architectural structure or due to extensive data, we will identify the main techniques proposed to deal with this "state explosion", and can be used to reduce an infinite-state system into a finite one. These include the techniques of abstraction, (de)composition, reduction due to symmetry, and generic instantiation. Typical successful applications of these techniques are the uniform verification of parameterized systems, where we consider a family of networks whose size (e.g. number of processes) is a parameter, and the method is able to establish its correctness for any value of the parameter.

Title: How to find lots of bugs with system-specific static analysis
Speaker: Dawson Engler, Stanford University
Abstract: Systems software such as OS kernels, embedded systems, and libraries must obey many rules. Common examples include "accesses to variable A must be guarded by lock B," "kernel code must check user pointers for validity before dereferencing them," and "message handlers should free their buffers as quickly as possible to allow greater parallelism." While a single rule violation can crash a system, these rules are typically unchecked (or even documented).

The first part of this talk shows how to automatically check such rules using system-specific static analysis. In our approach, system builders write simple compiler extensions that automatically check their code for rule violations. The approach has found thousands of errors in real systems such as Linux, OpenBSD, the Xok exokernel, and the FLASH machine's embedded software. Most extensions were less than a hundred lines of code and written by implementers who had a limited understanding of the systems checked.

The second part of the talk describes how to automatically infer rules from the source code itself rather than having to know them a priori. The cornerstone of our approach is inferring "beliefs" from code that we then cross-check for contradictions. Beliefs are facts implied by code: a dereference of a pointer, "p", implies a belief that "p" is non-null, a call to "unlock(l)" implies that "l" was locked, etc. For beliefs we know the programmer must hold, such as the pointer dereference above, we immediately flag contradictions as errors. For beliefs that the programmer may hold, we can assume these beliefs hold and use a statistical analysis to rank the resulting errors from most to least likely. For example, if a call to "spin_lock" is paired with a call to "spin_unlock" 1000 times and not paired 1 time, this is a good indication that the code believes these calls must be paired, and that the single deviation is an error. The key feature of this approach is that it requires no a priori knowledge of truth: if two beliefs contradict, we know that one is an error without knowing what the correct belief is. Belief analysis allows us to infer 10-100 times things to check than if we relied on manual specification and to check properties we found impractical to manually specify.

Bio: Dawson Engler is an Assistant Professor and Terman Fellow at Stanford. He received his PhD from M.I.T. and his undergraduate degree from University of Arizona, the latter in large part funded by being a bouncer. His past work has ranged from extensible operating systems to dynamic code generation. His current research focuses on developing techniques to find as many interesting software errors as possible.

Title: Environment Management for Augmented Reality
Speaker: Steven Feiner, Columbia University
Abstract: As computers grow ever smaller and faster, the option of wearing them, rather than carrying or sitting in front of them, is rapidly becoming a reality. One especially promising approach for wearable user interfaces is augmented reality, in which the physical world is augmented with additional information. For example, a see-through, head-worn display can be used to overlay computer graphics on what the user normally sees.

This talk provides an overview of the work being done by Columbia's Computer Graphics and User Interfaces Laboratory to explore user interface design for collaborative mobile augmented reality systems. One issue that I will discuss is environment management, by which I mean the task of managing the presentation of a large number of virtual objects on many displays for many users. The use of see-through displays has a profound effect on the user interface, precisely because virtual objects appear in the same surrounding space as other users and physical objects. Thus, as a user's head moves, or anything visible through their see-through display moves, the user's combined view of the virtual and physical world also changes. For example, a static virtual object intended to be viewed next to a physical object may suddenly obscure or be obscured by it or other objects. To address these problems, we have developed a prototype environment management component that interactively manages the geometry of virtual objects to maintain desired viewplane relationships between them and other physical and virtual objects.

Bio: Steven Feiner is a Professor of Computer Science at Columbia University, where he directs the Computer Graphics and User Interfaces Laboratory. He received a Ph.D. in Computer Science from Brown University in 1987. His research interests include virtual environments and augmented reality, knowledge-based design of graphics and multimedia, information visualization, wearable computing, and hypermedia. Prof. Feiner is coauthor of Computer Graphics: Principles and Practice (Addison-Wesley, 1990) and of Introduction to Computer Graphics (Addison-Wesley, 1993). He is an associate editor of ACM Transactions on Graphics, has served on the executive boards of the IEEE Computer Society Technical Committee on Visualization and Graphics, and the IEEE Computer Society Task Force on Human-Centered Information Systems, and is a member of the steering committees for the IEEE Symposium on Information Visualization, the IEEE and ACM International Symposium on Augmented Reality, and the IEEE Symposium on Wearable Computers. Over the past year, he has been general chair of IEEE Information Visualization 2001, symposium co-chair of the IEEE and ACM International Symposium on Augmented Reality 2001, and program co-chair of the International Symposium on Mixed Reality 2001. In 1991 he received an Office of Naval Research Young Investigator Award.

Title: Optimizing Component Interaction
Speaker: Mark Wegman, IBM T.J. Watson Research Center
Abstract: Programmers are increasingly programming by component assembly. This is despite the fact that the use of components tend to decrease the performance of the program. The programmers who design the components do not know anything about the environment the components will be used in, and can therefore not tailor the components for each specific use. For modularity reasons the users of components should not know what is in them. The efficiency of a program suffers from the use of such generic components, since it fundamentally depends on the interactions between the components (including calling callee interactions). The performance of a component based program is therefore often less than optimal.

Optimizing component interaction is a fundamental problem in constructing efficient component-oriented programs. Our work lays out a foundation for reformulating the implementation of the interaction between components, with the goal of optimizing the assembled system. Our approach amounts to automatically choosing among a number of candidate implementation alternatives for each of the data structures and communication mechanisms that the components use during their interactions. This choice is done by an interesting combination of dynamic and static analysis. The system becomes aware of alternatives one component can offer to another and what kinds of uses another requires and so we can get the two interacting better via the system than seems permissible with good software engineering practice.

Some of our initial work in this area has shown how to transform one example of component interaction optimization into a graph problem, and has proposed analysis of dynamics and fast graph reduction heuristics as an efficient technique for solving the problem. Our hope is that this work will inspire debate that ultimately will lead to a new area of investigation, within the field of compiler-performed optimization, with the potential to achieve orders of magnitude improvements in the performance of component-oriented programs.

Bio: Mark Wegman received his undergraduate degree from NYU and his Ph.D. from Berkeley. He has been at IBM Research working on program analysis and related topics for more than 20 years. He is known for his work in data compression, and program optimization and static single assignment analysis for programming languages. More recently he has worked with some groups at IBM building technologies for visualizing the behavior of object oriented programs and automatically animating them. In addition to programmer productivity, his professional interests include, compiler technologies and programming languages, algorithm design, and information theory.

Mark is a fellow of the ACM and has recently been elected to the technical committee of the IBM Academy of Science and Engineering (modelled on the National Academy). He is also a senior manager at IBM Research responsible for the area of Object and Enterprise Programming.

Title: Computational Geometry for Sculpture
Speaker: George Hart, State University of New York at Stony Brook
Abstract: Computer scientist/sculptor George W. Hart will display and explain a range of his mathematically based sculptures and the algorithms that underlie them. These include works made of traditional materials such as metal, wood, acrylic, paper, or common household objects, plus computer-assembled sculptures made by "rapid prototyping" techniques. Also shown will be three-minute videos of the assembly of two recent large commissions: a six-foot sculpture constructed from 642 CDROMs at the Computer Science building at U.C. Berkeley, and a five-foot sculpture constructed at a community "barn raising" event, at the Northport Public Library.

For examples of Hart's work, see http://www.georgehart.com

Title: Artificial Intelligence and the Imminent Revolution in Brain Science
Speaker: Tom M. Mitchell, Fredkin Professor of Computer Science, Carnegie Mellon University
Abstract: The study of the human brain is undergoing a major revolution due to the recent invention of new, highly precise techniques for measuring human and animal brain activity. For example, functional Magnetic Resonance Imaging (fMRI) now provides scientists a safe, non-invasive means of producing a three-dimensional "movie" of human brain activity with a spatial resolution of 3mm, and a temporal resolution of 300 milliseconds (i.e., three snapshots per second). As a result, scientists are able for the first time to see the detailed patterns of cortical activity that constitute human cognitive processes such as language processing, vision, memory and problem solving. This talk will overview these new techniques and recent scientific results, and will examine the significant role that artificial intelligence and computer science can play in the coming revolution in brain science.


Distinguished Lecture Series