This paper describes a collection of algorithms that we developed and implemented to facilitate the automatic recovery of the modular structure of a software system from its source code. We treat automatic modularization as an optimization problem. Our algorithms make use of traditional hill-climbing and genetic algorithms.
Despite advances in software engineering, software faults continue to cause system downtime. Software faults are difficult to detect before the system fails, especially since the first symptom of a fault is often system failure itself. This paper presents a computational geometry technique and a supporting tool to tackle the problem of timely fault… (More)
Parallel distributed detection schemes for M-ary hypothesis testing often assume that for each observation the local detector transmits at least log 2 M bits to a data fusion center (DFC). However, it is possible for less than log 2 M bits to be available, and in this study we consider 1-bit local detectors with M > 2. We develop conditions for asymptotic… (More)
Two methods for finding the center and radius of a circular starting line of a racetrack in an ancient Greek stadium are presented and compared. The first is a method employed by the archaeologists who surveyed the starting line and the second is a least-squares method leading to a maximum-likelihood circle. We show that the first method yields a circle… (More)
Description: This course is organized around a collection of interesting applications. Google PageRank, and principal coordinate analysis. Each application will be preceded by discussion of the relevant concepts from Linear Algebra. These will be partly review from your previous linear algebra course and partly new material. You will also learn how to do… (More)
Complex software systems have become commonplace in modern organizations and are considered critical to their daily operations. They are expected to run on a diverse set of platforms while interoperating with a wide variety of other applications. Although there have been advances in the discipline of software engineering, software faults, and malicious… (More)
Distributed applications rely on packet-switched networks to connect their various elements. This paper describes a technique that can help software engineers and network administrators characterize and detect unfamiliar networked applications by matching them to a single, or a combination of several, analogous and familiar networked application(s). This… (More)