Algorithm engineering
2003
Sign up for access to the world's latest research
Abstract
Abstract Algorithm Engineering is concerned with the design, analysis, implementation, tuning, debugging and experimental evaluation of computer programs for solving algorithmic problems. It provides methodologies and tools for developing and engineering efficient algorithmic codes and aims at integrating and reinforcing traditional theoretical approaches for the design and analysis of algorithms and data structures.































Related papers
The design of efficient algorithms has always been one of the main concerns of the computer science. As a matter of fact, the RAM computational model and the complexity analysis are both accepted as standards in the process of defining a new algorithm and rating its performances. However, many interesting algorithms fail to exhibit good performances when implemented and applied to real world data sets. This problem is addressed by the Algorithm Engineering; this discipline concerns with the design, analysis, experimental testing and characterization of efficient algorithms. In this context becomes crucial the adoption of a suitable investigation methodology able to fully exploit the benefits of the experimental analysis. In this thesis we propose a methodology that allows a fine-grained characterization of the experimental behavior of an algorithm. It can be used both for correctly evaluating the performances of an algorithm and for promoting the development of effective heuristics. Our methodology provides a novel approach to the algorithm performance analysis; it works by inspecting the behavior of an algorithm at several level of details. One of its most interesting features is the adoption of non-conventional techniques and tools like algorithm animation and hardware instructions counting in order to provide an in-depth non obtrusive characterization of the experimental behavior of a target algorithm. Among these we cite Catai, an algorithm animation system we have developed. It can be used to easily and efficiently represent the behavior of a target algorithm through a graphical visualization. This system has proven to be a valuable tool while developing and testing efficient algorithms since it provides the programmer an abstract hardware-independent representation of an algorithm's behavior. We validated our investigation methodology by applying to several interesting case studies. Toward this v end, we report the results on an extensive empirical study on the performances of several algorithms for maintaining minimum spanning trees in dynamic graphs. In particular, we have implemented and tested a variant of the polylogarithmic algorithm by Holm et al., sparsification on top of Frederickson's algorithm, and compared them to other (less sophisticated) dynamic algorithms. Then we applied our investigation methodology to one of the considered algorithm in order to obtain a fine-grained characterization. As a result, we have been able not only to fully characterize the performances of the considered algorithm but even to develop some non-obvious optimizations able to significantly improve the algorithm's performances.
2007
An algorithm is a finite procedure, with a well-defined set of steps, aimed at solving a specific problem. Algorithms are present in any problem-solving task involving the use of computers in numerical or nonnumerical applications. An algorithm is usually required to stop in a finite number of steps, although some useful procedures are meant to be run continuously, such as operating systems and related system software. These procedures are sometimes not regarded as algorithms, but simply as programs.
This book is designed to provide a comprehensive introduction to the design and analysis of computer algorithms and data structures. In terms M the computer science and computer engineering curricula, we have written this book to be primarily focused on the Junior-Senior level Algorithms (CS7) course, which is taught as a first-year graduate course in some schools.
Proceedings of the 1993 ACM conference on Computer science - CSC '93, 1993
Computer science inherited its present conceptual foundations from a branch of pure mathematics that, historically, had been exploring the fundamental nature of mathematical computation since before the turn of the century. It is argued that the conceptual concerns of computer science are different from the conceptual concerns of mathematics, and that this mathematical legacy, in particular the notion of the algorithm, has been largely ineffective as a paradigm for computer science. It is fi rst necessary to understand the role of the algorithm in mathematics. The notion of the algorithm is fundamental to mathematics. To understand the signifi cance of the algorithm to mathematics, it is necessary to understand the history of its development. The term derives from the name of an important ninth-century Persian mathematician, Mohammed ibn Musa al-Khowarizmi, who in about ad 825 wrote a small book describing how to calculate with a new ten-symbol, positional value number system developed in India. It described simple procedures for carrying out addition, subtraction, © ACM, 1993. This chapter is a minor revision of my work: K. Fant, "A Critical review of the notion of the algorithm in computer science,"
IEEE Transactions on Software Engineering, 1985
Algorithm design is a challenging intellectual activity that provides a rich source of observation and a test domain for a theory of problem-solving behavior. This paper describes a model of the algorithm design process based on observations of human design. The adaptation of that model to automation in the DESIGNER system helps us understand human design better, and the automation process helps validate the model. Issues discussed include the problem spaces used for design, the loci of knowledge and problem-solving power, and the relationship to other methods of algorithm design and to automatic programming as a whole I. The Algorithm Design Task
Proceedings of the 2014 conference on Innovation & technology in computer science education - ITiCSE '14, 2014
We describe our experience using magic card tricks to teach algorithmic skills to first-year Computer Science undergraduates. We illustrate our approach with a detailed discussion on a card trick that is typically presented as a test to the psychic abilities of an audience. We use the trick to discuss concepts like problem decomposition, pre-and post-conditions, and invariants. We discuss pedagogical issues and analyse feedback collected from students. The feedback has been very positive and encouraging.
A glossary of Algorithmic Theory (or “Algorithm Framework Theory”) is provided here, which also includes the author’s re-interpretation or comments on some traditional theoretical terms or topics. A few contents have not yet appeared in the text of Book I or this book, but in the subsequent Algorithmic writings.

Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.