E-RACE, A Hardware-Assisted Approach to Lockset-Based Data Race Detection for Embedded Products
Limited research exists for identifying data races under the specific characteristics found in embedded systems. E-RACE is a new style of data-race identification tool which directly utilizes specialized hardware capabilities to monitor the flow of data and instructions. Compared to existing data race analysis approaches, the hardware-assisted E-RACE tool has advantages of recognizing data-race issues without requiring extensive software code instrumentation. The tool is integrated into an Embedded Unit Testing Driven Development Framework to encourage the construction of testable code and early identification of data-races.

title: A Hardware-Assisted Tool for Fast, Full Code Coverage Analysis
abstract: Software reliability can be improved by using code coverage analysis to ensure that all statements are executed at least once during the testing process. When full code coverage information is obtained through software code instrumentation, high runtime performance overheads are incurred. Techniques that perform deferred or selective code instrumentation have shown success in reducing run-time overheads; however, the execution profile remains distorted. Techniques have been proposed that use internal processor hardware during the data gathering process, e.g. program counter logging. These approaches have been shown to reduce overheads; but currently trade swift execution for sparse code coverage. By combining the branch-vector hardware designed for debugging modern embedded processors with on-demand code coverage analysis, we have developed a new tool which provides full code coverage, while minimizing performance distortions. Experimental results show a performance impact of only 8 - 12%, while still providing 100% code coverage information.

title: Empirical analysis of the correlation between amount-of-reuse metrics in the C programming language
abstract: Disclosed are the magnesium salts of N-carboxyamino acids, a process for their preparation, and their use of lubricating oil additives.

title: Aristotle: a system for development of program analysis based tools
abstract: Aristotle provides program analysis information, and supports the development of software engineering tools. Aristotle's front end consists of parsers that gather control flow, local dataflow and symbol table information for procedural language programs. We implemented a parser for C by incorporating analysis routines into the GNU C parser; a C++ parser is being implemented using similar techniques. Aristotle tools use the data provided by the parsers to perform a variety of tasks, such as dataflow and control dependence analysis, dataflow testing, graph construction and graph viewing. Most of Aristotle's components function on single procedures and entire programs. Parsers and tools use database handler routines to store information in, and retrieve it from, a central database. A user interface provides interactive menu-driven access to tools, and users can view results textually or graphically. Many tools can also be invoked directly from applications programs, which facilitates the development of new tools. To assist with system development and maintenance, we are also creating support tools for managing bug and test suite databases.

title: The CORC experience: survey of founding libraries. Part II

title: Cryptographic Information Recovery Using Key Recover
abstract: A note to readers: the authors consider that all techniques for key recovery may be viewed as having a position on a broad continuum. The only way to avoid misunderstanding is to identify particular techniques by listing their specific characteristics, rather than using multiply-defined terms. Different characteristics have advantages in different environments, so there is no 'best' key recovery technique. The paper notes some typical advantages and disadvantages of several techniques but should not be construed as an endorsement of any particular technique relative to another. Similarly, the authors recognize that terminology may vary from country to country. Cryptographic information recovery techniques provide for the recovery of plaintext from encrypted data. This (exceptional) need arises when the cryptographic keys involved are not available. For example, data files may have been encrypted using a key derived from a now forgotten or misplaced password. Overlapping and confusing terminology has been applied to the techniques of information recovery, including key escrow, key backup, key recovery, and trusted third party (ttp), all of which refer to methods for retrieving, recovering, or re-constructing keys. Even the underlying concept of 'trust' has broad meaning. Instead of attempting to 'define' these terms precisely, a continuum of functionality is defined. Several generic technologies, together with desirable characteristics of cryptographic information/key recovery techniques, are described.

title: The CORC experience: survey of founding libraries. Part I
abstract: This survey, conducted in late 1999, found that CORC founding libraries shared a strong interest in controlling Internet resources and finding ways to catalog such resources quickly. Many cataloged in MARC. Although only a small number of them experimented with Dublin Core, many of them wanted to explore its potential for organizing Internet resources. Other metadata schemes were also used by some libraries. Overall, the founding libraries considered their CORC experience positive, but had several concerns. Their experience suggests that more work is needed to make fast, automated cataloging a reality. Since the findings of this study reflect experience with CORC at the developmental stage, the researchers proposed that CORC usage be monitored to identify trends in organizing Internet resources. A survey of CORC subscribers could be conducted to understand usage patterns and guide CORC’s development and improvement.

title: Running the Table: An AI for Computer Billiards
abstract: Billiards is a game of both strategy and physical skill. To succeed, a player must be able to select strong shots, and then execute them accurately and consistently. Several robotic billiards players have recently been developed. These systems address the task of executing shots on a physical table, but so far have incorporated little strategic reasoning. They require AI to select the 'best' shot taking into account the accuracy of the robotics, the noise inherent in the domain, the continuous nature of the search space, the difficulty of the shot, and the goal of maximizing the chances of winning. This paper develops and compares several approaches to establishing a strong AI for billiards. The resulting program, PickPocket, won the first international computer billiards competition.