EClass: An execution classification approach to improving the energy-efficiency of software via machine learning Energy efficiency at the software level has gained much attention in the past decade. This paper presents a performance-aware frequency assignment algorithm for reducing processor energy consumption using Dynamic Voltage and Frequency Scaling (DVFS). Existing energy-saving techniques often rely on simplified predictions or domain knowledge to extract energy savings for specialized software (such as multimedia or mobile applications) or hardware (such as NPU or sensor nodes). We present an innovative framework, known as EClass, for general-purpose DVFS processors by recognizing short and repetitive utilization patterns efficiently using machine learning. Our algorithm is lightweight and can save up to 52.9% of the energy consumption compared with the classical PAST algorithm. It achieves an average savings of 9.1% when compared with an existing online learning algorithm that also utilizes the statistics from the current execution only. We have simulated the algorithms on a cycle-accurate power simulator. Experimental results show that EClass can effectively save energy for real life applications that exhibit mixed CPU utilization patterns during executions. Our research challenges an assumption among previous work in the research community that a simple and efficient heuristic should be used to adjust the processor frequency online. Our empirical result shows that the use of an advanced algorithm such as machine learning can not only compensate for the energy needed to run such an algorithm, but also outperforms prior techniques based on the above assumption.Highlights:  Adaptively adjusting the processor frequency can conserve energy in program execution.  Existing techniques are limited to simple heuristics due to the energy concern in computing heuristics.  We propose EClass, a supervised machine learning technique.  Experimentation shows that EClass conserves at least 9.1% more energy than simple heuristic techniques.  It demonstrates that advanced techniques can outperform simple techniques even though the former consume more energy themselves.* Unlocking energy efficiency in performing activities is a universal step to deal with global warming and support our digital society. On the other hand, modern software applications have an increasing tendency to interact with various hardware components such as WiFi and GPU, or establish software networks (say, over the Internet) with other application components such as map services at run time. Such a usage trend may increase the resource utilization of a running application component. However, the delays incurred when communicating with other components or issuing commands to the underlying operating system followed by receiving the responses may not require a processor to run at a full speed, which provides various opportunities for an energy-aware task scheduling technique [5] [11] [22] to modify the resources allocated to the application component for completing a program execution.. Dynamic Voltage and Frequency Scaling (DVFS) [2] is a technology originally developed for hardware processors that allows a change in processing speed by selecting an alternate processor frequency. For instance, by writing a value to a special-purpose processor register designated for setting up the processor voltage (and hence frequency) to one of the processor-supported configurations, an application may choose to slow down the clock frequency of its servicing processor during idle or low processor utilization periods of the application. For example, on the Intel XScale platform, a desired processor frequency can be selected by writing a value to the Core Clock Configuration Register (CCCR) and setting the FCS bit of the CCLKCFG register to activate the change in processor frequency [19] .. Running a process at a lower frequency may lengthen the overall execution time, which may not result in spending less energy as a whole when compared with setting the processor at a higher frequency to complete the same program execution. Hence, two fundamental problems in setting the above values are to determine (1) when a technique needs to adjust the processor frequency and (2) what the value of processor frequency should be. In general, there are static techniques and dynamic techniques, differing by whether dynamic monitoring of program executions is available.. For ease of presentation, we refer to a set of inputs to a particular program as a test suite, and refer to a program that executes a test suite at run time as a task. We note that in the real-time systems community, a test suite is often referred to as a workload. Hence, to balance between the two communities, we use the terms test suite and workload interchangeably.. In general, static techniques [4] [23] [32] analyze the source code of a program, estimate the worst case timing requirements for all possible paths, and use such information to compute frequency values statically for different parts of the program. Such values can be used prior to the execution of the program for any workload. However, static techniques may fail to capture specific characteristics of particular executions of the program. Hence, an underlying processor may not be best tuned for a particular workload. Moreover, it is commonly known that static analysis cannot scale well enough to handle large applications. Dynamic techniques [2] [9] [35] complement static techniques by monitoring program executions to obtain more precise resource utilization statistics. However, they can only analyze the executions corresponding to a given workload. Based on a monitored portion of an execution, such a technique may apply various policies to predict the best frequency value for the next interval, such as by computing an optimal frequency for the current monitoring interval and deeming it to be the best [14] [16] . Dynamic techniques are more scalable than static techniques in handling applications of a practical size. Nevertheless, they may slow down the original execution of a program by incurring execution monitoring and computation of an optimal frequency, and cannot be applied to an API-like framework that cannot be executed by its own. Despite these limitations, dynamic techniques have been widely practiced because of its ability to optimize the energy usage for general program executions, which is particularly attractive when aggressive energy conservation is mandatory. In this paper, we study dynamic techniques.. A test suite for a program can be mapped to a set of program executions. The use of a portion of an execution to predict the frequency value for the remaining portion of the same execution may likely result in a locally optimal solution. For instance, for an execution with an increasing demand of computational needs until the very last few instructions of the execution, using a moving average or the latest value of the estimated optimal frequency value based on the monitored portion may be inadequate for predicting the frequencies for the unexecuted portion of the execution. Moreover, to reduce the performance overhead incurred by computing an optimal frequency, many existing techniques [2] [16] [35] use simple formulas such as doubling or halving the current value to compute a new frequency value based on an existing one. Although such simple formulas may empirically be effective in saving energy, their corresponding techniques do not capture the design rationale of such formulas.. In this paper, we use three major insights to address the above problems in finding a solution.. • First, a typical program is written to serve a particular purpose and is implemented as a set of program modules. Although a program tends to perform distinct activities in different executions, given a specific subset of a test suite, the program tends to execute similar sets of program modules of the same program, possibly in different orders and with different module occurrence patterns in various execution fragments. For instance, a program must contain a set of basis paths. Although different executions of the program may visit the same program module and run different sequences of statements in this particular module, such executions can be considered as different compositions of these basis paths.. • Second, although different orders and patterns may result in different nonfunctional program behaviors, we observe that even the most I/O-intensive (but typical) programs, such as file management programs, involve some periods of computational-intensive executions. Suppose we define I/O-intensive periods in these programs as less than 25% CPU utilization. In our empirical study, the probability of encountering such an I/O-intensive segment in the most I/O-intensive application is merely 9%, indicating that the probability of encountering k consecutive I/O-intensive segments is only 0.09 k , or 0.00006561 when k is 4, which is a small number. Such a low probability shows that we may use short chains of fragments to model the program processor utilization that covers over 99.9% of all the scenarios encountered.. • Third, the available number (n) of processor frequencies is a small number (such as 11 for XScale in [19] ). Because of the presence of computational-intensive and I/Ointensive modules in an interval, in many cases, they lead to the use of highest few and lowest few frequencies, respectively, as the optimal processor frequency. Hence, although there are theoretically n k possible combinations when modeling all such fragments, since the given value of k is small, the number of combinations is bounded in practice by a small value. Our empirical study confirms this hypothesis. Because of such a small number of combinations, our technique can keep the entire dataset of such values in the memory (rather than storing them in a database or on disk with an excessive amount of memory page swapping) and locate the optimal frequency by a direct lookup approach. Such a lookup can be efficiently and simply implemented as a hash function provided that one can classify and consolidate utilization values into distinct patterns, and use them as keys to this function. The simplicity further reduces the chance of introducing faults in the implementation, thus enhancing the reliability of the approach.. The net result is a technique that we call EClass, standing for Execution Classification. EClass is capable of using a small number of utilization patterns extracted from the executions of a small fraction of a workload to characterize almost all the scenarios of program execution fragments. Because of such a characteristic, EClass is able to provide a solution that empirically outperforms a solution based on a single execution.. Based on executions on the same platform, EClass starts with a training phase for a task. CPU utilization and energy consumption values are collected during training executions in order to determine hardware-and task-specific parameters in the energy model. Utilization values are then clustered and the optimal frequencies for each distinct pattern (of a fixed length) are pre-computed according to the energy model, and stored offline for the frequency assignment algorithm. During online execution, the best frequency is predicted and the current processor frequency is adjusted whenever the execution exhibits a known utilization pattern. The predicted frequency can also be fine-tuned linearly based on the desired execution time. We also adapt EClass to develop a complementary technique called Target. Target treats the execution time of an interval in previous runs of the same test case as if it were the execution time for the same interval in the current run for energy optimization.. We evaluated EClass and Target on a cycle-accurate power simulator for a realistic hardware platform [17] . We compared them with two existing representative algorithms (which we call Online [14] and PAST [35] ), and a random energy optimization strategy (denoted by Random) over three real-life medium-sized subject applications (minigzip, djpeg, and jikespg) from the CSiBE benchmark [15] . Experimental results show that for each subject, the savings achieved by EClass and Target are always better than that achieved by each of Online, PAST, and Random, and on average, EClass and Target can save 9.1% more energy in absolute terms compared with the peer techniques, and up to 52.9% savings for specific applications. The difference in energy savings between EClass and Target is less than 2.2% in all cases because EClass is able to operate in unseen executions whereas Target cannot. The evaluation results show that in terms of energy savings, EClass is the best among all five techniques studied in the experiment. The empirical results are inspiring in that although pattern classification can be much less efficient (and hence requiring more energy) than simply setting a value as in Online, this extra cost can be wellcompensated at the end.. The main contribution of this work is threefold: (1) It demonstrates the use of a machine learning approach to effectively characterize program executions without excessive training data. (2) It proposes two new online strategies, namely EClass and Target, which efficiently use such characterizations to predict optimal frequencies for execution fragments. (3) It reports an experiment that verifies the above insights and the proposed techniques. Our experimental results demonstrate that energy-awareness research can benefit significantly from advanced or search-based algorithms.. The rest of the paper is organized as follows: Section II gives a motivating example. Section III describes our models and the details of the algorithm. Section IV presents the experimental results and an evaluation. Section V summarizes related literature on energy optimization. Section VI concludes the paper. Energy efficiency is an important issue in many areas of computing. In this paper, we have presented a framework for an energy-aware frequency assignment algorithm for DVFS processors. It distinguishes program phases during training executions and utilizes such information to make online frequency assignment decisions efficiently. We have presented an algorithm known as EClass. It samples intervals of executions and computes optimized frequencies for these intervals, followed by clustering the intervals into groups. During an online execution, EClass monitors the runtime statistics for the execution of an interval and uses a lookup approach to identify the best matched optimized frequency for the upcoming interval of the execution.. An EClass algorithm was implemented in Java and was evaluated against two existing algorithms on a cycle-accurate power simulator using three real-life applications. Results show that the proposed algorithm can, on average, save 9.1% more energy than another black-box algorithm based on online learning. Although our algorithm is general, the presence of a training phase requires some efforts prior to using the algorithm on the fly. An adapted algorithm Target is specifically customized for optimizing executions of the same test case.. A particular contribution of this paper is that according to experimental results, although classification can be much less efficient (and hence requiring more energy) than simply setting a value as in Online, the cost can be well compensated. The results show that energy-awareness research can benefit from advanced algorithms.. In the future, we will investigate whether the window size and checking interval can be automatically deduced and optimized for a task. Previous work [28] has shown that program phases are more pronounced with shorter intervals. Finer granularity may improve the result of our technique provided that the overhead associated with traditional DVFS can be overcome. We are also eager to extend the technique to multi-threaded, multi-core, and virtualized environments. One of the major challenges is to model the aggregated execution behavior of threads running simultaneously on cores that share common resources such as L2 cache. Recent research on execution time over multi-core systems (such as [31] ) usually requires detailed analysis of the hardware to achieve accurate runtime predictions. While accuracy is important in areas such as Worst-Case Execution Time (WCET) analysis, approximations may be sufficient for the purpose of energy-efficiency. A promising approach is to extend the training phase of our technique to estimate the aggregated execution behavior of various tasks with different utilization patterns. We also believe that cross-platform training can be interesting, albeit challenging.. Our work and its experience have not considered the influences of power-saving features of existing operating systems and different hardware architectures. A future extension on this direction is useful. Moreover, the number of performance parameters provided by an operating system is much richer than what we have used in our experiment. It will be interesting to develop a generic methodology to select a good combination so that our work can be automatically tailored for in a specific computing environment. Previous research tried to reduce energy consumption of different system components such as memory and wireless networking components by exploiting the low-power modes or execution behavior of these components [18] [25] [27] [33] [37] . In many computing systems, however, CPU is still the most important core component and the primary power consumer among components with multiple power operation modes. Previous research in cluster-wide power management also focuses on task scheduling over DVFS-capable processors [6] .. Chen and Kuo [8] summarized numerous research results on DVS platforms for real-time systems in a survey paper. They categorized the techniques by the types of real-time jobs, scheduling, and processor architectures; the methodology to extract slack time for energy savings; the scope of energy consuming components considered and options available to reduce energy; the available information of workload characteristics; and the optimization objectives involved. The literature reviewed included analytical studies conducted earlier, optimal algorithms that run in exponential time, and heuristics algorithms that run in polynomial time with approximation bounds. Among the heuristics algorithms reviewed, none of them was reported to utilize machine learning as the primary technique. Thus, we believe that machine learning is a novel extension to the study of energy-efficient task executions.. Borrowing the terminology from software testing, existing approaches can be classified as "black-box" or "white-box". Black-box approaches rely on different runtime statistics to predict future execution behavior, and are oblivious to program structure. Although these techniques may not accurately predict changes in CPU utilization, they are usually praised for their ease of implementation and wide applicability. On the other hand, white-box approaches rely on the knowledge of program structure or implementation details. Program phases are identified using source code analysis or knowledge of execution behavior, and are used to assist frequency assignment. Despite these requirements, white-box techniques are usually more fine-grained and perform better for the corresponding tasks.. Recent research in the area of energy conservation of computing devices focus on high-level aspects such as optimizing computing resources in a cloud by consolidating the tasks onto the minimum number of servers [30] . Another recent track of publications tackles the problem in specific domains such as data-flow applications [2] , real-time systems [39] , and services with well-defined energy and delay cost functions [1] . Little breakthrough has been achieved for energy conservation of computing tasks in a more general context.. Energy-aware task scheduling in real-time embedded systems has also generated much attention in the past decade. Research in real-time systems usually incorporates other dimensions such as task completion deadlines [20] and reliability [38] . To accurately measure energy consumption, we adopted XEEMU [17] , a cycle-accurate power simulator that simulates executions of C programs on XScale processors. According to [17] , the simulator achieves accurate energy consumption estimation to within 1.6% error on average compared with real hardware. One of the major advantages of using an accurate simulator rather than physical hardware is that it improves the reproducibility of the experimental results and facilitates fair comparisons with future research efforts. The frequency assignment algorithms are implemented in Java, and executed once for each test case over a dedicated instance of the simulator so that the statistics of each simulation correspond entirely and specifically to the execution of the test case.. We extracted three types of performance attribute values V from the XEEMU simulator as parameters to our energy and prediction models: sim_cycle_*, sim_memory_dep, and sim_diss_*. First of all, sim_cycle_* is the total simulation time in cycles per frequency. As explained before, the simulation time depends on frequency; this counter is an obvious choice to indicate the end of each interval for all algorithms in terms of the number of elapsed cycles. sim_memory_dep is the total number of stall cycles caused solely by the memory, which matches the definition of t off in equation (1) . Similar events related to data stalls were used in other studies [11] and were shown to be effective for the estimation of onchip and off-chip duration and power consumption. sim_diss_* constitutes the basis of comparison between the algorithms. It is the total power dissipation per frequency (in watts), including power consumed by the processor and the memory. The reading represents the total power (P off + P on ) in equation (4) . We have reconfirmed our understanding of this counter by observing that the total energy consumption reported by the simulator always matches the sum of the values of sim_diss_* multiplied by sim_cycle_*.. We modified the source code of the simulator so that it would pause at the end of each interval, output the running values of the first two statistics, and await new frequency settings (if any). In the training phase, f* i,j is computed by solving equation (5) with m = 3 using the roots function in MATLAB. Note that the authors of [7] [29] [38] [39] also assumed cubic power models. If the computed solution lies between two frequencies supported by XEEMU, the more energy-efficient of the two (according to equation (4)) is used. We note that further energy savings may be achieved by running each frequency for part of the duration of the interval [29] , but we have adopted the simpler approach to avoid additional overhead. The classification function Γ is initialized in the Expectation Maximization (EM) algorithm with automatic selection of the number of clusters n using cross-validation. The primary advantage of our choice of implementation over other clustering algorithms is that it is well-established with a strong statistical basis, runs in linear time with respect to input size, and converges fast [12] . Clustering and classification is done using the EM clustering algorithm provided in Weka [36] .

O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Virtualized games for teaching about distributed systems Complex distributed systems are increasingly important in modern computer science, yet many undergraduate curricula do not give students the opportunity to develop the skill sets necessary to grapple with the complexity of such systems. We have developed and integrated into an undergraduate elective course on parallel and distributed computing a teaching tool that may help students develop these skill sets. The tool uses virtualization to ease the burden of resourcing and configuring complex systems for student study, and creates varied "firefighting" gaming scenarios in which students compete to keep the system up and running in the presence of multiple issues. Preliminary experience indicates that (1) students find the tool engaging and (2) it is a manageable way in which to give students a novel perspective on interaction with complex distributed systems. Given the importance of distributed systems for the next decade of computing and beyond, it is critical that computer science educators train students who can understand such systems and contribute to their evolution. In fact, the Joint Task Force on Computing Curricula of the IEEE Computer Society and the ACM, in its 2001 report on curricuPermission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. lum guidelines for undergraduate degree programs in computer science, [1] identified the increasing importance of the world-wide web and networking technology as one of the key drivers for the need for revisiting computing curricula. Unfortunately, it is perceived that the rate of development of curricula in distributed systems has lagged behind the (very rapid) rate of deployment of these technologies in practice. For example, IBM and Google recently lamented this situation and launched a significant initiative to help universities develop advanced curricula for large scale distributed computing, in order to "prepare students to harness the potential of modern computing systems." They have made a multiyear commitment to providing universities with hardware, software, and services to advance training in large-scale distributed computing [7] .. We believe that there is much interesting work to be done by computer science educators in developing curricula that more fully introduce students to distributed systems at the undergraduate level. One important direction in this vein is developing techniques to give students the opportunity to experiment with, appreciate, and even enjoy the complexity and power of large and complex distributed systems. In practice, such systems, such as a supply-chain application, span multiple languages and platforms at multiple sites and interact via one or more sorts of middleware. Producing students who can work at higher levels of such large systems is a substantial challenge. In this paper we describe one approach to improving the distributed systems curricular experience in support of this larger goal.. While many institutions teach undergraduates about distributed systems, to date many or most projects in these courses are of a very limited scope. This is primarily for two reasons. First, it is a major effort to get a nontrivial distributed system up and running correctly; it requires significant attention to configuration issues, support staff that is knowledgeable about the middleware and participating systems, and substantial dedicated hardware. Second, assuming such an environment is available, it is difficult for students to manage the development, deployment and testing of code on anything but a small number of nodes.. Distributed projects of a limited scope are sufficient for teaching students certain concepts in distributed systems. If one wants to teach students how to get two nodes to communicate over a socket or a remote procedure call, experiment with simple concurrency, or experience a threemachine deadlock, a simple application on 2-3 machines is more than sufficient. Our hypothesis is, however, that many concepts -such as scalability, heterogeneity, robustness, fault-tolerance, and the ability to think about composing a distributed systems out of a number of smaller pieces -can be taught much more effectively through interaction with larger and more complex systems. In addition, we hypothesize that students need a different set of skills to work with such systems, which includes the ability to think about the system at multiple levels of detail, from the broad system architecture to the details of individual components, and to learn how to navigate between these levels and chose the appropriate one at the appropriate time.. In this paper we present the rationale behind, design of and preliminary experience with a teaching tool that potentially can help students develop the necessary skill sets. This tool draws upon two important elements. First, it uses a virtualization layer to overcome many of the obstacles in resourcing, setup and configuration that make it difficult for instructors to work with substantial distributed system projects. Second, on top of this virtualization layer we build a novel gaming environment in which students work in teams to understand and keep running smoothly a nontrivial distributed system.. The basis of our game is a barebones but fully functional integrated website that combines features of social networking and video sharing. The site displays (mock) advertisements when different pages are viewed. The game generates artificial traffic against the site, and the overall system metric of health is the number of advertisements served and resulting "revenue." The game -a sort of firefighting exercise -begins when the game administrator "breaks" part of the system in some way. Students notice that the system's performance has degraded because ads and revenue have dropped off. They then work, typically in teams, to figure out what is wrong with the system and fix it.. We believe that this approach has several possible advantages, both in terms of engaging students and enabling them to learn about distributed systems in different ways. It should enable them to understand scalability issues when they see how a complex system scales and does not scale, understand by experience both the diversity of failure modes in a distributed system, and the important subtleties in designing distributed algorithms that can handle those failures. It should also help them gain skills in plunging into and understanding a complex system. This is an important point -most students who work with distributed systems will not start programming from scratch but rather need to understand and contribute to a pre-existing system. Our game can introduce them to this (sometimes daunting) undertaking in an engaging way.. We note that this paper is not a full-fledged research study as we are not yet at the point of conducting a rigorous evaluation of the game's educational impact. Rather, this paper should be viewed as a cross between an experience report, in which we share our experience in designing the game and deploying it in a limited way, and a philosophical paper which argues that more creative work is required to teach students about the reality of distributed systems, and that virtualization and gaming provide one interesting direction to pursue. There has been a great deal of work on using game development in computer science curricula as a way to increase student engagement and retention, e.g. [8, 15] . There has been relatively less work, however, on developing gaming environments within which computer science concepts can be taught. Educators in the field of information security education have developed a number of capture-the-flag style games, many of which use virtualization to create the individual nodes e.g. [18] . The SimSE project [11] designed a simulation game for teaching about the software engineering process in a more realistic way. Game2Learn is a project that teaches introductory programming by using a multiplayer online role-playing game in which players need to carry out elementary programming activities to advance through the game [2] . Virtualization is also increasingly enabling innovation in CS curricula [5] .. Until recently there has been relatively little work on innovative methodologies to teach distributed systems when compared to other areas of computer science -overall there are 10-15 papers out of 1000+ published in the 2000-2008 SIGCSE and ITiCSE conferences. These include several papers on innovative ways to conceptualize distributed algorithms, [14, 16, 12] , or on ways to teach specific distributed technology such as grid computing methodology [6] . There are several attempts at environments for building small-scale distributed projects such as DPLab [3] , or for visualizing communication patterns in student programs [4] . None of these attempt to give students the opportunity to work with a large-scale integrated project of any sort.. As noted in the introduction, recently Google and IBM announced an initiative to help train the next generation of students to be equipped to build internet-scale distributed systems [7] . This effort has led to the devlopment of curricula focused on large-scale data processing using Hadoop, a powerful high-level tool for parallelizing large-scale computations over large collections of servers, e.g. [9] . The Hadoop/MapReduce model provides a very clean and highly abstract way to think about parallelizing large data-intensive applications. Infrastructure issues of fault tolerance, processor allocation, etc. are entirely hidden from the application programmer. In contrast, we are interested in training students who can think about that infrastructure layer and build the software necessary to support such high-level abstractions.. An assumption that underlies our work is that most institutions that offer degree programs in computer science give students at best experience with distributed systems of relatively limited scope. We attempted to validate this assumption by carrying out a limited survey of computing curricula in the 52 private campuses in New York Stat that offered bachelors degrees in computer science. Based on the websites of the institutions, we determined that 18 had dedicated elective courses in distributed systems and that only 7 of those 19 had significant projects. While our survey methodology is quite rough, we view it as some validation for our assumption.

O O O O O B I O B I O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O


Layered acting for character animation : While watching a real-time display of her actions, an animator performs a hopping motion, sketching the trajectory of a kangaroo.We introduce an acting-based animation system for creating and editing character animation at interactive speeds. Our system requires minimal training, typically under an hour, and is well suited for rapidly prototyping and creating expressive motion. A real-time motion-capture framework records the user's motions for simultaneous analysis and playback on a large screen. The animator's realworld, expressive motions are mapped into the character's virtual world. Visual feedback maintains a tight coupling between the animator and character. Complex motion is created by layering multiple passes of acting. We also introduce a novel motion-editing technique, which derives implicit relationships between the animator and character. The animator mimics some aspect of the character motion, and the system infers the association between features of the animator's motion and those of the character. The animator modifies the mimic by acting again, and the system maps the changes onto the character. We demonstrate our system with several examples and present the results from informal user studies with expert and novice animators. Animation should come from the heart, not from the head. Current modeling and animation packages favor control over ease of use and demand a level of expertise from the user that is out of reach for all but a few highly skilled animators. Direct motion capture allows expert actors to animate human characters, but is fraught with a different set of difficulties, particularly when animating nonhuman characters and when attempting to edit existing motion. We present an interface that supports the many benefits of performance animation yet allows for the mapping betweeen the animator and character to be established in ways that are both flexible and easy to understand.. We had several goals in mind when designing our system. We wanted our system to have an easy-to-use and efficient interface appropriate for a novice with little training. We wanted to give the user control and the ability to create motions that have a sense of personality, often lacking in 3-d animation. Our results and user studies indicate that we have made progress towards achieving these goals.. We introduce a system that allows users to create and edit character animation by acting. A motion capture system and a set of reflective props, or widgets, provide the connection between the actor and the character, as shown in Figure 1 ). The motion capture system frees the animator from the confines of a mouse, a keyboard, and a limited workspace. The user animates by acting while watching a large display for instant feedback. The system requires minimal training, typically under an hour, because it innately captures users' expressiveness from their acting.. The key contributions of our work lie in how the animator's motions are mapped to those of the character, and how animation can be built upon layer by layer. The mapping from actor to character is created by a combination of explicit and implicit controls. Explicit control is used for rapid prototyping of the initial animation. In each layer, multiple related degrees of freedom (DOFs) of the character are modified simultaneously. Layering allows the animator to focus on one aspect of the animation at a time, whereas working with all aspects at once can be overwhelming. When editing, implicit control can be created by automatically inferring which DOFs the animator is trying to control. The system implicitly creates the mapping of real-world motion to that of the character for editing; the mapping may involve both spatial and temporal transformations.. The rest of the paper proceeds as follows. First, we discuss relevant related work and give an overview of the system and the interface. We then provide details of the algorithms for motion creation, motion editing with explicit transformations, and inferred motion editing with implicit transformations. Finally, we conclude with results, user studies, and future work. We used a variety of characters with arbitrary rigs to evaluate the versatility and effectiveness of our framework. The animators started by roughly sketching the trajectories of the motions and then added details in subsequent layers. The playback speed was usually slowed down to give the animator more control over the character. To be effective, animators had to be aware of the speed of the animation to avoid moving too quickly and creating spastic and unrealistic motion. The duration of the animation process depended on the speed of the playback for the addition of layers and the number of times a layer was performed before the animator was satisfied. Synthesis Using a combination of the performance animation and explicit editing techniques described in Section 5, we created animations of a bird, kangaroo, and a spider. The bird was created in two layers, and the animation process lasted only two minutes. First, the trajectory of the bird was defined using the absolute mapping. Then, the user animated the wings with the trajectory-relative mapping. The camera was attached to the bird trajectory, allowing the user to animate while flying with the bird. This view was useful when the bird was difficult to animate from a static view.. We animated a kangaroo jumping in a zig-zag pattern using several interaction paradigms. The animation consisted of six layers and was produced in twenty minutes. The animator used the absolute mapping to sketch the trajectory of the kangaroo in a jumping zig-zag pattern, as shown in Figure 1 . In the second layer, the animator bent the legs for the jumping motion. A table was used as a reference for the ground plane. The iterative process continued with the tail, arms, and head. The torso was modified using the additive mapping to add anticipation and follow-through to the jumping. Figure 3 shows the final kangaroo motion. This pipeline is typical of how a user would animate a character with our system.. The spider animation also consisted of six layers and was created in twenty minutes. Again, the user started by defining the trajectory with the absolute mapping. Next, two of the legs were animated simultaneously with two widgets. The rest of the legs were animated in a similar manner. The choice of what legs to animate together was left to the user, and there was no restriction on the number of legs animated at once. Finally, the animator added head motion using the trajectory-relative mapping to give the spider more personality. Using the additive mapping, the animator added bounce and sway to the torso of the spider while still maintaining the walk cycle. The spider animation shows how our system can be used to create complex motion efficiently. The animator performed the motion of all eight legs with just two widgets, but her variability in step size and timing produced an appealing spider walk (Figure 4 ).. Explicit Editing Using our explicit editing technique, the user can also edit previously captured motion data. Using a motioncapture sequence of a broad jump, the animator exaggerated the jump and added a back flip. Both transformations were done in just one motion, taking under a minute to edit.. We also edited a two-character boxing scenario that required synchronizing two unrelated motion-capture sequences. The twelve-second animation consisted of three layers and was completed after five minutes. The animation sequence started with one boxer punching and the other bouncing in place. The animator edited the bouncing boxer to react to the punches of the other. In the first layer, the user added torso motion for absorbing stomach Figure 5 : Top: The animator mimics the arm swing of the walking motion. Bottom: He edits by bending his elbow. The system infers that the user is controlling both arms of the character with just one arm. The motion is changed to make both arms swing with bent elbows.. punches. Next, the user made the boxer's head react to the hits. Finally, the hips were pulled back to make the stomach punches more realistic. This animation showed us how easily and effectively an animator can edit animations that require timing adjustments.. Implicit Editing We used the implicit editing technique to change the style of arm swinging in a walk sequence. First, the animator mimicked the motion seen on the screen by swinging his right arm. Then, he performed the motion differently, bending the elbow ( Figure 5 ). The system discovered the mappings from the widget to the character's left and right arms and remapped the arms accordingly. The user input was treated as only 2-d because the subspace algorithm deemed the third dimension inconsequential.. We edited the world position and orientation of a character in a broad jump and a spinning jump sequence. The system mapped the user input to the character's left foot in the world frame. The feet were pinned, and the edits preserved these constraints by transforming them both in space and in time. The system calculated timewarps between the user mimic and the character features, as well as the user edit and the user mimic, to align the semantics of all the motions. Although the timing of the jumps changed, characteristics such as the arm swings were timewarped to preserve the semantics. In the spinning jump edit, the animator changed the direction of the character spin. With just one widget, the animator simultaneously controlled both translation and orientation, six DOFs, with ease.. We also edited the spider walk described above. The animator mimicked one leg with respect to the spider body. The system discovered that the animator controlled not just one leg, but all legs by determining the phase shifts relating the leg motions. In this example, the leg movement had enough error that the system reverted to directly solving for Y from X rather than using X − S (T (X)). The mimic and edit were only 1-d, but the nullspaces of the spider's leg features reproduced the remaining two dimensions of the original spider motion. The legs were remapped using the detected phase shifts, enabling the animator to preserve the gait of the spider but reanimate all legs by just editing one. The research presented in this paper was inspired by previous contributions to interactive and easy-to-learn interfaces, especially those intended for novices. Existing work includes sketching outlines into 3-d shapes [Igarashi et al. 1999] , sculpting surfaces, [Schkolne et al. 2001] , and using plush toys for interaction with virtual environments [Johnson et al. 1999] .. Many animators rely on explicit keyframing, where at a specific instant in time, they have full control of a character. The difficulty comes when animators want to express dynamic, fluid motion, particularly when multiple degrees of freedom should be manipulated in unison. We allow the user to edit multiple DOFs over a period of time, and because time is inherent in the process of acting, rather than in an axis of a graph, we retain the intuition that is lacking from keyframes and graph editors.. Motion capture has a long history in computer animation as a mechanism for transferring live motion to the digital domain. Motion capture can record the nuances that give feeling and expressiveness to motion; however, it also has several limitations. The computer-generated character may not have the same physique or dimensions as the human actor. The desired motion may be too dangerous to act and capture in real life or may involve impossible motions requiring superheroic speed or strength. We rely on motion-capture technology to support our work, but we do not tie the character's motion directly to that of the actor. This indirect interaction links us closer to the realm of puppeteering.. Puppeteering and performance animation have been shown to be powerful tools for the expert user. An animator uses a specialized input device, ranging from an exoskeleton to a force-feedback stylus, to control a character through some direct mapping of DOFs. Personality is imparted directly onto the character from the nature of the control. Our work follows on this work with the goal of enabling novice users to easily create expressive animation.. Although the earliest computer puppetry work dates back to the late sixties [Sturman 1998 ], modern performance animation traces back to the Jim Henson Company [Walters 1989 ] and deGraf and Wharman [de Graf 1989] . Following the debut of Mike the Talking Head at Siggraph 89, Protozoa [de Graf and Yilmaz 1999] , Medialab [Benquey and Juppe 1997] , and others deployed performance animation systems on television programs, showing the power of using acting for animation. Our work differs in several ways. Whereas existing systems use direct or preassigned mappings, we generalize the mapping between the actor and character, granting flexibility with the character and the motion-capture rig. We animate parts of the character individually using separate motion-capture takes, whereas traditionally, most parts of a character are animated simultaneously. Unlike existing performance animation systems, ours requires minimal calibration, making our tool useful for rapid prototyping and accessible to novices.. Several researchers have investigated computer puppetry. Shin, et al. developed a computer puppetry system allowing a performer to animate an entire character online [Shin et al. 2001] . They infer context from the motion, which they use to guide inverse kinematics. Our goals differ, as they want a fully markered puppeteer to create instant motion for a retargeted character, but we want an animator to operate a widget to create and edit motion in layers for an arbitrary character. Gildfind recognized the impracticality of tailoring puppetry controls for each device, character, and user [Gildfind et al. 2000] . His system creates the controls through iterations of a genetic algorithm with user-provided fitness feedback. We differ from Gildfind in that we require minimal training.. Snibbe and Levin [Snibbe and Levin 2000] explored layering of motion in the setting of 2-d abstract animation, focusing on using human movement as an interface for dynamic abstract systems. Oore et al. [Oore et al. 2002] used motion layering in their ani- Figure 2 : An animator is interacting with our system. The realtime motion-capture system tracks the widget in her hand (the user feature). The widget's motion, X(t), maps to a character feature, Y (t), and the user's edits are instantly reflected on the screen. mation system, which combined direct manipulation of DOFs with physical controls as guides for more natural joint motion. We extended their layering to include additive layering, which allows for refinement of existing motion. In addition, our system allows not only direct manipulation of DOFs but also indirect manipulation of relative trajectories through the use of inverse kinematics. We feel that the layering and indirect interaction make our system easier for users, especially novices.. There are other related interactive interfaces for animation. Popović, et al. create precise animations of rigid bodies [Popović et al. 2000 ]. Perlin has a simulated actor that responds based on human intervention [Perlin 1995] . Laszlo et al. directly involve the animator in the control of interactive physics-based simulations of walking, jumping, and climbing using mixes of continuous (mouse-based) and discrete (keypress-based) control [Laszlo et al. 2000 ]. Donald and Henle use haptics to construct new motion by editing low-dimensional representations of existing motion [Donald and Henle 2000] . Several systems use gestures to control a performance, including the Personal Orchestra [Borchers et al. 2001] and Andy Wilson's Seagull from the 1996 Siggraph Digital Bayou.

O O O B B O O O O B O O O O O O O O O B O O O O O O O O O B O O O O O B B O O O O O O B B O O O O O O O O O O O O O O B O B B B B O O O O O B O O O O O O O O O O O O O O O O B I O B O O O O O O O O B O B O O O O O O O O O O O O O O O O O O B O O O O B O O O O B O O B B O O O O O B O O O O O B O O O O B O O O O O O O O O O O B O O O O B O B O O O O B O O O O O B B O O O O B O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O B O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O B B B O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O B O B O O O O O B O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O B O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O B O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O B O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O B O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O B O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O B B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O B O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O B O O O O B O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O B O O O O B O O B O O O O O O B O O O B O O O O O O O B O O O O O O B B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O B B O O O O O B O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O B B O O O O O O O O O O B O O O O O O B O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O B B O O B O B O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O


Using magnets in physical blocks that behave as programming objects In this paper we describe the implementation of GameBlocks, a novel digital manipulative system for coding simple programme sequences to control a toy robot. A contact-less, magnetic field-based mechanism for transferring information about the blocks is described. The mechanical and electronic system components are described. We position this implementation in relation to prior related work. Problems encountered are given, with suggestions for future work. GameBlocks can be classified as a digital MiM ("Montessori-inspired Manipulative") [13] , consisting of blocks that are physically manipulated by placing them on trays to form a sequence in a specific order. See Figure 1 . The relative positioning of the blocks is significant and represents an underlying logical structure. Six robot movements are controlled using the blocks [8] . As for [10] , the blocks support direct manipulation of objects and learning-by-doing. No PC (personal computer) is required to "write" a short robot-controlling sequence. To do this, manual dexterity is practiced as opposed to using a computer keyboard. In recent years, children's social interaction has changed from intimate to solitary, similar to what is reported for board games versus computerised games in front of computer monitors [2] . It has been reported that children often struggle more with programming syntax and not so much with the concepts. Children in the age group 4-7 years sometimes have difficulty in using the keyboard and interpreting error messages [1] .. Our system aims to provide a mechanism for constructing a programme without the coder being literate. It can be used by children and adults alike to learn simple sequential computing principles. None of the mechanisms described in the section on related work given below is used in our system. The blocks only contain inexpensive magnets. When placed on a tray, magnets close magnetic switches.. A number of design guidelines have previously been proposed [13] , and we have embodied a number of them; generic structures versus real-world objects (the toy humanoid robot can just as easily be replaced by a toy tank), level of abstraction, semantic association (done with the use of differing coloured blocks and icons on the blocks), coincide i/o (no other interface needs to be manipulated), and synchronous i/o (the effect of manipulation is immediately evident). The use of a physical key to open the blocks and insert instruction items needs to be researched. The block will then inherit the inserted item's functionality. This idea is based on the special key reported on in [1] for simplifying the editing process in an icon-based programming environment. The materials from which educational artefacts such as the GameBlocks are made need to be reconsidered [5, p26] .The current design reported on in this paper is not ideal; the plastic used is hard and brittle, the edges and corners (where three surfaces intersect) are sharp, the surfaces are too smooth for small hands to grasp. Smith reports [8] on the problems experienced during workshops, which includes magnets becoming dislodged. This can be overcome by using appropriate glue for fixing the magnet to the plastic. We have described the design and implementation of a novel and low cost mechanism to remotely control a toy robot using physical blocks. A number of shortcomings of the current implantation have been given and possible solutions to some of them suggested. Several researchers have explored intelligent objects to enhance children's learning experiences.. "Electronic Blocks" [12] Another implementation uses a low-cost system using optical images to transfer the tangible code to a text file [6] . The text file is then used as an input to the compiler. Another communication mechanism uses optical fibres to send a message from one block to the next, until it reaches the controlling block. The complete message string is then sent to a synthesiser to pronounce the word. This system allows the construction of words by joining physical blocks in sequence [5, p23] .. Our blocks are differentiated in that they do not have costly and sophisticated technology embedded in them. Instead we use magnets in the blocks and a centralised electronic circuit. This reduces the cost of the system significantly.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Dispersion free wave splittings for structural elements Wave splittings are derived for three types of structural elements: membranes, Timoshenko beams, and Mindlin plates. The Timoshenko beam equation and the Mindlin plate equation are inherently dispersive, as is each Fourier component of the membrane equation in an angular decomposition of the eld. The distinctive feature of the wave splittings derived in the present paper is that, in homogeneous regions, they transform the dispersive wave equations into simple one-way wave equations without dispersion. Such splittings have uses bothfor radial scattering problems in the 2D cases and for scattering problems in dispersive media. As an example of how the splittings may be applied, a direct scattering problem is solved for a membrane with radially varying density. The imbedding method is utilised, and agreement is obtained with an FE simulation. During the last decades, time domain methods such as invariant imbedding, Green's function techniques and propagator methods, have successfully been applied to a numberof scattering and wave propagation problems. A survey of these methods is contained in 1]. Both direct and inverse scattering problems have beenconsidered, as well as problems concerning, i.e., wave guides and slender structural elements. Much of the work has beenconcerned with electromagnetics, but acoustics and structural mechanics have also bene ted from the time domain approaches, see e.g. 2{6]. One basic building block in such time domain methods is the wave splitting i.e., a transformation that achieves a decomposition of the wave elds into one-way waves. A numberof such splittings have beenderived, with di erent properties and applications. For some purposes, the decomposition need only diagonalise the principal part of the operator matrix of the relevant di erential equation. Often it is advantageous to have a transformation that exactly splits the PDE into one-way w ave equations in the homogeneous region. If the original wave equation is dispersive, the split wave equations in general are so too even in the homogeneous regions. In regions where the original wave equations model inhomogeneities, the one-way w ave equations couple, and the coupling may often be utilised for the reconstruction of the inhomogeneities. We refer to 1, 7] for how this may bedone numerically.. Much o f t h e w ork on wave splitting has been concerned with 1D wave propagation, or situations which m a y naturally be reduced to 1D propagation. Weston and collaborators have, however, done much to extend the wave splittings to more general situations, see e.g. 8, 9] . Moreover, Karlsson and Kristensson 10] have treated a 3D radially symmetric scattering problem, and Kreider 11, 12] has solved an inverse 2D radially symmetric scattering problem.. In the present paper we consider 1D and 2D wave propagation in some structural elements. In all 2D cases considered, a distinguished radial direction allows us to reduce the problem to 1D propagation. However, common to both the 1D and 2D wave propagation for the structural elements considered is that the wave equations exhibit dispersion, either directly geometrical or indirectly geometrical. By directly geometrical dispersion we here denote dispersion due to space dependent coe cients of the wave equations, as in the case of radial wave equations. By indirectly geometrical dispersion we denote such dispersion that arises from the modeling of the structural elements as lower dimensional objects, reducing the wave e q u a t i o n f r o m 3 D t o 1 D o r 2 D i n s p a c e variables.. Preliminary considerations on the radial membrane showed that equations exhibiting directly geometrical dispersion can not be split by means of the standard methods utilised for indirectly geometrically dispersive equations. The method which is presented in this paper, not only achieves an exact wave splitting in homogeneous regions, but also provides some freedom to choose the split wave equations. Here, we may choose dispersion free one-way wave equations in a straightforward way. This method can also be utilised to obtain wave splittings for equations that are not directly geometrically dispersive, such as the Timoshenko beam equation. The same result may a l s o b e a c hieved by extending the standard wave splitting by means of Green's operators, which is demonstrated in Section 2. It should be stressed, though, that this latter approach is not an option for the radial cases.. A k ey feature of the dispersion free wave splittings is that the Green's operators are incorporated into the wave splitting transformation. The computational di culties involved when wave elds are propagated are thus not eliminated entirely by the dispersion free wave splitting. All information about the dispersion of the physical elds is contained in the wave splitting transformation, which of course must be computed.. In Section 3 we derive the dispersion free wave splitting on the radial membrane. The derivation can be generalised and incorporated into the analysis of the radial Mindlin plate in Section 4. The plate problem is in a sense a combination of the beam and the membrane problems, as it contains both the indirectly geometrical dispersion of the beam, and the directly geometrical dispersion of the radial membrane In Section 5 we apply the wave splitting to an inhomogeneous membrane. The imbedding equations is discussed and implemented numerically for some direct problems. The results are compared to FE solutions. Some concluding remarks are found in Section 6.. Our goal is then to construct wave splittings that not only diagonalise the original wave equations, but also remove boththe directly and the indirectly geometrical dispersion.

O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O B I I O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O B O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Component Mining: A Process and its Pattern Language An important issue in a component-based software development process is the supply source of mature, reliable, adaptable, and maintainable components. We define as component mining the deliberate, organised, and automated process of extracting reusable components from an existing rich software base and present a pattern language used for mining components from programs that are typically executed as non-interactive autonomous processes. We describe the patters in terms of intent, motivation, applicability, structure, participants, consequences, and implementation. Based on the pattern language, we describe the implementation of a set of COM components that encapsulate the Unix filters and an exemplar application that uses them. The component mining process proved to be addictive. The ease of encapsulation, the limitless possibilities of object structuring, and the flexibility of using a high-level language to interact with the components opened new ways to leverage existing tools and applications. However, the process for mining and using the components is not yet as smooth and versatile as we would like. In particular, the non-standard semantics of Unix command-line option processing means that a number of programs with an idiosyncratic interface can not be automatically converted into components. In addition, the asynchronous execution of components as separate processes in conjunction with the new possibility to create arbitrary component interaction graphs (and not just linear pipelines) means that component users must carefully think about the issues of synchronisation and deadlocks. Finally, our component implementation -which is based on components executing as separate processes -may not be as efficient as components executing within the context of the application that uses them.. We are currently working on extending our component interface description domain-specific language to describe more sophisticated tool command-line options, experimenting with more efficient encapsulation techniques using threads, and planning to use our approach for constructing image processing applications from encapsulated tools such as the portable bitmap collection [18] . In the future we would like to see component mining extended to other mining fields, probably supported by different pattern languages applicable to the specific domains. Encapsulating the multitude of powerful and mature standalone programs as component objects makes them usable within modern object-based frameworks.. The primary data flow mechanism of all components is a stream. Apart from singular options controlling an encapsulated component's operation the bulk of the data is transferred to and from the component through streams. Typical streams are formed from the standalone program's standard input and output as well as any other user-specified files. To use a component effectively these streams need to be connected to existing data sources and sinks such as in-memory data structures, files, relational databases, procedures producing dynamic data, GUI widgets, and other components. These connections are handled by the glue components.. Encapsulated components do not operate in a vacuum. They are composed to create more powerful components and integrated within an object-based system to provide specialised services. Moreover, composition of encapsulated components with component glue can be used to provide efficient access to off-line data, graphical user interfaces, and a multitude of other component-based services. As an example a spelling checker can be easily constructed by composing the translate, sort, unique, and common components, while the gluing of a editbox and listbox components can be used to provide a GUI front end.

B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Scalable high speed IP routing lookups Internet address lookup is a challenging problem because of increasing routing table sizes, increased traffic, higher speed links, and the migration to 128 bit IPv6 addresses. IP routing lookup requires computing the best matching prefix, for which standard solutions like hashing were believed to be inapplicable. The best existing solution we know of, BSD radix tries, scales badly as IP moves to 128 bit addresses, Our paper describes a new algorithm for best matching prefx using binary search on hash tables organized by prefix lengths. Our scheme scales very well as address and routing table sizes increase: independent of the table size, it requires a worst case time of log~(address bits) hash lookups. Thus only 5 hash lookups are needed for IPv4 and 7 for IPv6. We also introduce Mutating Binary Search and other optimizations that, for a typical IPv4 backbone router with over 33,000 entries, considerably reduce the average number of hashes to less than 2, of which one hash can be simplilied to an indexed array access. We expect similar average case behavior for IPv6. In summary, a!! existing schemes have problems of either performance, scalability, generality, or cost. Lookup schemes based on tries and binary search are (currently) too slow and do not scale we!!; CAM solutions are expensive and carry the risk of being quickly outdated; tag and IP switching solutions require widespread agreement on protocol changes, and still require BMP lookups in portions of the network; finally, locality patterns at backbone routers make it infeasible to depend entirely on caching.. We now describe a scheme that has good performance, excellent scalability, and does not require protocol changes. Our scheme also allows a cheap, fast software implementation, and also a more expensive (but faster) hardware implementation. We have designed a new algorithm for best matching search. The best matching prefix problem has been around for twenty years in theoretical computer science; to the best of our knowledge, the best theoretical algorithms are based on tries. While inefficient algorithms based on hashing [Sk1931 were known, we have discovered an extremely efficient algorithm that scales with the logarithm of the address siu: and so is very close to the theoretical limit of O(log log N).. Our algorithm contains both intellectual and practical contributions, On the intellectual side, after the basic notion of binary searching on hash tables, we found that we had to add markers and use precomputation, to ensure logarithmic time in the worst-case. Algorithms that only use binary search of hash tables are unlikely to provide logarithmic time in the worst case. Among ouroptimizations, we single out mutating binary trees as an aesthetically pleasing idea that leverages off the extra structure inherent in our particular form of binary search.. On the practical side, we have a fast, scalable solution for IP lookups that can be implemented in either software or hardware. Our software projections for IPv4 are SO ns and we expect 1% 200 ns for IPv6. Our averagecasespeed projections are based on the sttuctureofexistingroutingdatabases that we examined. We expect most of the characteristics of this address structure to strengthen in the future, especially with the transition to IPv6. Even if our prediclions, based on the little evidence available today, should prove to be wrong, the overall performance can easily be restricted to that of the basic algorithm which already performs well.. With algorithms such as ours, we believe that there is no more reason for router throughputs to be limited by the speed of their lookup engine, We also do not believe that hardware lookup engines are required because our algorithm can be implemented in software and still perform well. For similar reasons, we do not believe that there is a compelling need for protocol changes to avoid lookups as proposed in Tag and IP Switching. Even if these protocol changes were accepted, fast lookup algorithms such as ours are likely to be needed at several places in the network.. Future work on our algorithm includes theoretical work on a choice of balancing function, hopefully yielding an improvement over our ad-hoc heuristic functions. Other avenues of research include thechoiceofa heuristic function based on actual network trafiic, and work on faster insertion algorithms. We are also trying to optimize the building and modification processes. Our algorithm belongs to a class of algorithms that speed up search at the expense of insertion; we are looking for other applications and generalizations of our algorithm.. In spite of potential improvements, we believe our algorithm is ready for practical use. To prove this, it will be incorporated into the Crossbow project [Df97], a joint project between ETH and Washington University. The goal of Crossbow is to build a extensible framework for IPv6 as well as a high-speed IPv6 cell-switched router with QoS guarantees. Besides hashing and binary search, a predominant idea in this paper is prccowputalion. Every hash table entry has an associated bmp held and (possibly) a Rope field, both of which are precomputed. Precomputation allows fast search but requires more complex Insertion routines. However, as mentioned earlier, while routes to prefixes may change frequently, the addition of a new prefix (the expensive case) is much rarer, Thus it is worth paying a penalty for Insertion in return for improved search speed.

O O O O B O B O O O O O O O O O B O O O B O O B O O O O O O O O O B O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O B O O O B O O O O O O O O B O O O O O O B O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B B O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O B B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B O O B O O O O O B O O O B I O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O


Generalized arithmetic operators and their relationship to t-norms in interval-valued fuzzy set theory In this paper we study extensions of the arithmetic operators +, −, ·, ÷ to the lattice L I of closed subintervals of the unit interval. Starting from a minimal set of axioms that these operators must fulfill, we investigate which properties they satisfy. We also investigate some classes of t-norms on L I which can be generated using these operators; these classes provide natural extensions of the Lukasiewicz, product, Frank, Schweizer-Sklar and Yager t-norms to L I . Interval-valued fuzzy set theory [15, 19] is an extension of fuzzy theory in which to each element of the universe a closed subinterval of the unit interval is assigned which approximates the unknown membership degree. Another extension of fuzzy set theory is intuitionistic fuzzy set theory introduced by Atanassov [1] . In [9] it is shown that Atanassov's intuitionistic fuzzy set theory is equivalent to interval-valued fuzzy set theory and that both are equivalent to L-fuzzy set theory in the sense of Goguen [14] w.r.t. a special lattice L I .. In [5] we introduced additive and multiplicative generators on L I based on a special kind of addition introduced in [6] . It was shown that the only t-norms on L I which have a continuous additive generator on L I that is a natural extension of an additive generator on the unit interval are pseudo-t-representable, and this is due to the typical construction of the addition operator introduced in [6] . Because of this limitation, in [11] another addition was introduced. In fact many more additions can be introduced. Therefore, in this paper we will study arithmetic operators on L I in an axiomatic way. Starting from a minimal set of axioms that these operators must fulfill, we investigate which properties can be deduced. We will investigate some classes of t-norms and t-conorms which can be generated using the arithmetic operators on L I and which are natural extensions of some well-known t-norms and t-conorms on the unit interval. In a future paper we will use the arithmetic operators to define additive and multiplicative generators on L I in a more general way. In this paper we have studied extensions of the arithmetic operators +, −, ·, ÷ to the lattice L I of closed subintervals of the unit interval. Starting from a minimal set of axioms that these operators must fulfill, we investigated which properties they satisfy. We have shown that the addition and multiplication operators on L I never generate a group. Using any choice of the arithmetic operators on L I , some operators can be defined which are constructed using the same arithmetic formula as the Lukasiewicz t-norm and t-conorm, the product t-norm, the Frank t-norms, the Schweizer-Sklar t-norms and the Yager tnorms on the unit interval. We have given necessary and sufficient conditions such that these operators are t-norms and t-conorms on L I and we have shown that they are natural extensions of their counterparts on the unit interval. For the Lukasiewicz t-norm, we have given two possible extensions to L I using the arithmetic operators on L I . In order to extend the Frank, Schweizer-Sklar and Yager t-norms, we have introduced generalizations of the exponential and the logarithm functions to L I and we have investigated some of their properties. In a future work we will construct additive and multiplicative generators of t-norms on L I based on the arithmetic operators introduced in this paper.

O B I O O O O O O B I I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O