Best of
Computer-Science

1996

Introduction to the Theory of Computation


Michael Sipser - 1996
    Sipser's candid, crystal-clear style allows students at every level to understand and enjoy this field. His innovative "proof idea" sections explain profound concepts in plain English. The new edition incorporates many improvements students and professors have suggested over the years, and offers updated, classroom-tested problem sets at the end of each chapter.

C Programming: A Modern Approach


Kimberly Nelson King - 1996
    With adoptions at over 225 colleges, the first edition was one of the leading C textbooks of the last ten years. The second edition maintains all the book's popular features and brings it up to date with coverage of the C99 standard. The new edition also adds a significant number of exercises and longer programming projects, and includes extensive revisions and updates.

Feynman Lectures On Computation


Richard P. Feynman - 1996
    Feynman gave his famous course on computation at the California Institute of Technology, he asked Tony Hey to adapt his lecture notes into a book. Although led by Feynman, the course also featured, as occasional guest speakers, some of the most brilliant men in science at that time, including Marvin Minsky, Charles Bennett, and John Hopfield. Although the lectures are now thirteen years old, most of the material is timeless and presents a “Feynmanesque” overview of many standard and some not-so-standard topics in computer science such as reversible logic gates and quantum computers.

The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling


Ralph Kimball - 1996
    Here is a complete library of dimensional modeling techniques-- the most comprehensive collection ever written. Greatly expanded to cover both basic and advanced techniques for optimizing data warehouse design, this second edition to Ralph Kimball's classic guide is more than sixty percent updated.The authors begin with fundamental design recommendations and gradually progress step-by-step through increasingly complex scenarios. Clear-cut guidelines for designing dimensional models are illustrated using real-world data warehouse case studies drawn from a variety of business application areas and industries, including:* Retail sales and e-commerce* Inventory management* Procurement* Order management* Customer relationship management (CRM)* Human resources management* Accounting* Financial services* Telecommunications and utilities* Education* Transportation* Health care and insuranceBy the end of the book, you will have mastered the full range of powerful techniques for designing dimensional databases that are easy to understand and provide fast query response. You will also learn how to create an architected framework that integrates the distributed data warehouse using standardized dimensions and facts.This book is also available as part of the Kimball's Data Warehouse Toolkit Classics Box Set (ISBN: 9780470479575) with the following 3 books:The Data Warehouse Toolkit, 2nd Edition (9780471200246)The Data Warehouse Lifecycle Toolkit, 2nd Edition (9780470149775)The Data Warehouse ETL Toolkit (9780764567575)

Purely Functional Data Structures


Chris Okasaki - 1996
    However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functional data structures. The author includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages. All source code is given in Standard ML and Haskell, and most of the programs are easily adaptable to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.

Smalltalk Best Practice Patterns


Kent Beck - 1996
    This author presents a set of patterns that organize all the informal experience successful Smalltalk programmers have learned the hard way. When programmers understand these patterns, they can write much more effective code. The concept of Smalltalk patterns is introduced, and the book explains why they work. Next, the book introduces proven patterns for working with methods, messages, state, collections, classes and formatting. Finally, the book walks through a development example utilizing patterns. For programmers, project managers, teachers and students -- both new and experienced. This book presents a set of patterns that organize all the informal experience of successful Smalltalk programmers. This book will help you understand these patterns, and empower you to write more effective code.

LISP in Small Pieces


Christian Queinnec - 1996
    It describes 11 interpreters and 2 compilers, including very recent techniques of interpretation and compilation. The book is in two parts. The first starts from a simple evaluation function and enriches it with multiple name spaces, continuations and side-effects with commented variants, while at the same time the language used to define these features is reduced to a simple lambda-calculus. Denotational semantics is then naturally introduced. The second part focuses more on implementation techniques and discusses precompilation for fast interpretation: threaded code or bytecode; compilation towards C. Some extensions are also described such as dynamic evaluation, reflection, macros and objects. This will become the new standard reference for people wanting to know more about the Lisp family of languages: how they work, how they are implemented, what their variants are and why such variants exist. The full code is supplied (and also available over the Net). A large bibliography is given as well as a considerable number of exercises. Thus it may also be used by students to accompany second courses on Lisp or Scheme.

JavaScript: The Definitive Guide


David Flanagan - 1996
    This book is both an example-driven programmer's guide and a keep-on-your-desk reference, with new chapters that explain everything you need to know to get the most out of JavaScript, including:Scripted HTTP and Ajax XML processing Client-side graphics using the canvas tag Namespaces in JavaScript--essential when writing complex programs Classes, closures, persistence, Flash, and JavaScript embedded in Java applicationsPart I explains the core JavaScript language in detail. If you are new to JavaScript, it will teach you the language. If you are already a JavaScript programmer, Part I will sharpen your skills and deepen your understanding of the language.Part II explains the scripting environment provided by web browsers, with a focus on DOM scripting with unobtrusive JavaScript. The broad and deep coverage of client-side JavaScript is illustrated with many sophisticated examples that demonstrate how to:Generate a table of contents for an HTML document Display DHTML animations Automate form validation Draw dynamic pie charts Make HTML elements draggable Define keyboard shortcuts for web applications Create Ajax-enabled tool tips Use XPath and XSLT on XML documents loaded with Ajax And much morePart III is a complete reference for core JavaScript. It documents every class, object, constructor, method, function, property, and constant defined by JavaScript 1.5 and ECMAScript Version 3.Part IV is a reference for client-side JavaScript, covering legacy web browser APIs, the standard Level 2 DOM API, and emerging standards such as the XMLHttpRequest object and the canvas tag.More than 300,000 JavaScript programmers around the world have made this their indispensable reference book for building JavaScript applications."A must-have reference for expert JavaScript programmers...well-organized and detailed."-- Brendan Eich, creator of JavaScript

ANSI Common Lisp


Paul Graham - 1996
    Beginners will find that its careful explanations and interesting examples make Lisp programming easy to learn. Professional programmers will appreciate its thorough, practical approach.FEATURES:• An up-to-date reference manual for ANSI Common Lisp.• An in-depth look at object-oriented programming. Explains the Common Lisp Object System (CLOS), and also shows how to write your own object-oriented language.• Over 20 substantial examples, including programs for ray-tracing, text generation, pattern-matching, logical inference, generating HTML, sorting and searching, file I/O, compression, and date arithmetic.• Special attention to critical concepts, including prefix syntax, code vs. data, recursion, functional programming, types, implicit pointers, dynamic allocation, closures, macros, class precedence, and generic functions vs. message-passing.• A complete guide to optimization.• The clearest and most thorough explanation of macros in any introductory book.• Examples that illustrate Lisp programming styles, including rapid prototyping, bottom-up programming, object-oriented programming, and embedded languages.• An appendix on debugging, with examples of common errors.

Inside the C++ Object Model


Stanley B. Lippman - 1996
    Aimed at the beginner/intermediate C++ programmer who wants to understand the semantic implications of the C++ object model and how the model affects their programs, Inside the C++ Object Model explains where overhead costs reside, and what they actually consist of.

Concurrent Programming in Java(tm): Design Principles and Pattern


Doug Lea - 1996
    Thread programming enables developers to design applications that are more responsive to user demands, faster, and more easily controlled. This book offers comprehensive coverage of this vital aspect of the Java language. The book is completely up-to-date with the new thread model that is now incorporated into the most recent version of the Java Virtual Machine. All Java programmers interested in doing concurrent programming must understand these new concepts. The book approaches the topic from a design pattern point of view. It introduces and summarizes Java's concurrency support, shows readers how to initiate, control, and coordinate concurrent activities, and offers numerous recipe-like techniques for designing and implementing Java structures that solve common concurrent programming challenges. Specifically, the book presents important strategies for avoiding the inconsistencies that can crop up in multi-threaded programs, addresses the concept of liveness-how to ensure that all threads in use are kept active simultaneously, examines state-dependent action, and demonstrates effective methods for handling user requests in a multi-threaded environment.

Object-Oriented Design Heuristics


Arthur J. Riel - 1996
    This book offers insight into object-oriented design improvement. The more than sixty guidelines presented in this book are language-independent and allow you to rate the integrity of a software design.

History of Programming Languages II


Thomas J. Bergin, Jr. - 1996
    The book looks at successful languages, as well as those which aren't so well known.

Neural Networks for Pattern Recognition


Christopher M. Bishop - 1996
    After introducing the basic concepts, the book examines techniques for modeling probability density functions and the properties and merits of the multi-layerperceptron and radial basis function network models. Also covered are various forms of error functions, principal algorithms for error function minimalization, learning and generalization in neural networks, and Bayesian techniques and their applications. Designed as a text, with over 100exercises, this fully up-to-date work will benefit anyone involved in the fields of neural computation and pattern recognition.

Distributed Algorithms


Nancy A. Lynch - 1996
    She directs her book at a wide audience, including students, programmers, system designers, and researchers.Distributed Algorithms contains the most significant algorithms and impossibility results in the area, all in a simple automata-theoretic setting. The algorithms are proved correct, and their complexity is analyzed according to precisely defined complexity measures. The problems covered include resource allocation, communication, consensus among distributed processes, data consistency, deadlock detection, leader election, global snapshots, and many others.The material is organized according to the system model--first by the timing model and then by the interprocess communication mechanism. The material on system models is isolated in separate chapters for easy reference.The presentation is completely rigorous, yet is intuitive enough for immediate comprehension. This book familiarizes readers with important problems, algorithms, and impossibility results in the area: readers can then recognize the problems when they arise in practice, apply the algorithms to solve them, and use the impossibility results to determine whether problems are unsolvable. The book also provides readers with the basic mathematical tools for designing new algorithms and proving new impossibility results. In addition, it teaches readers how to reason carefully about distributed algorithms--to model them formally, devise precise specifications for their required behavior, prove their correctness, and evaluate their performance with realistic measures.

API Design for C++


Martin Reddy - 1996
    It is the only book that teaches the strategies of C++ API development, including interface design, versioning, scripting, and plug-in extensibility. Drawing from the author's experience on large scale, collaborative software projects, the text offers practical techniques of API design that produce robust code for the long term. It presents patterns and practices that provide real value to individual developers as well as organizations.API Design for C++ explores often overlooked issues, both technical and non-technical, contributing to successful design decisions that product high quality, robust, and long-lived APIs. It focuses on various API styles and patterns that will allow you to produce elegant and durable libraries. A discussion on testing strategies concentrates on automated API testing techniques rather than attempting to include end-user application testing techniques such as GUI testing, system testing, or manual testing. Each concept is illustrated with extensive C++ code examples, and fully functional examples and working source code for experimentation are available online.This book will be helpful to new programmers who understand the fundamentals of C++ and who want to advance their design skills, as well as to senior engineers and software architects seeking to gain new expertise to complement their existing talents. Three specific groups of readers are targeted: practicing software engineers and architects, technical managers, and students and educators.

C Interfaces and Implementations: Techniques for Creating Reusable Software


David R. Hanson - 1996
    Unlike some modern object-oriented languages, C provides little linguistic support or motivation for creating reusable application programming interfaces (APIs). While most C programmers use APIs and the libraries that implement them in almost every application they write, relatively few programmers create and disseminate new, widely applicable APIs. C Interfaces and Implementations shows how to create reusable APIs using interface-based design, a language-independent methodology that separates interfaces from their implementations. This methodology is explained by example. The author describes in detail 24 interfaces and their implementations, providing the reader with a thorough understanding of this design approach. Features of C Interfaces and Implementations: * Concise interface descriptions that comprise a reference manual for programmers interested in using the interfaces. * A guided tour of the code that implements each chapters interface tp help those modifying or extending an interface or designing related interfaces. * In-depth focus on algorithm engineering: how to packag

Foundations for Programming Languages


John C. Mitchell - 1996
    Later chapters are devoted to progressively more sophisticated type systems. Compared to other texts on the subject, Foundations for Programming Languages is distinguished primarily by its inclusion of material on universal algebra and algebraic data types, imperative languages and Floyd-Hoare logic, and advanced chapters on polymorphism and modules, subtyping and object-oriented concepts, and type inference. The book is mathematically oriented but includes discussion, motivation, and examples that make the material accessible to students specializing in software systems, theoretical computer science, or mathematical logic. Foundations for Programming Languages is suitable as a reference for professionals concerned with programming languages, software validation or verification, and programming, including those working with software modules or object-oriented programming.Foundations of Computing series

Garbage Collection: Algorithms for Automatic Dynamic Memory Management


Richard Jones - 1996
    Garbage collection eliminates many of these bugs. This reference presents each of the most important algorithms in detail, often with illustrations of its characteristic features and animations of its use.

Accuracy and Stability of Numerical Algorithms


Nicholas J. Higham - 1996
    It combines algorithmic derivations, perturbation theory, and rounding error analysis, all enlivened by historical perspective and informative quotations. The coverage of the first edition has been expanded and updated, involving numerous improvements. Two new chapters treat symmetric indefinite systems and skew-symmetric systems, and nonlinear systems and Newton's method. Twelve new sections include coverage of additional error bounds for Gaussian elimination, rank revealing LU factorizations, weighted and constrained least squares problems, and the fused multiply-add operation found on some modern computer architectures. This new edition is a suitable reference for an advanced course and can also be used at all levels as a supplementary text from which to draw examples, historical perspective, statements of results, and exercises. In addition the thorough indexes and extensive, up-to-date bibliography are in a readily accessible form.

Protected Mode Software Architecture


Tom Shanley - 1996
    This book is organized into three parts. Part One: Background introduces the reader to the problems faced by a multitasking operating system. Part Two: Register Set and Real Mode provides an overview of Real Mode operation. Part Three: Protected Mode takes a building-block approach to explaining the protection mechanisms and multitasking capabilities of the post-286 Intel processors, including segmentation, virtual paging, the flat model, and virtual 8086 mode. Protected Mode Software Architecture extends MindShares coverage of x86 processor architecture to the software environment and complements the previously published 80486 System Architecture and Pentium Processor System Architecture (both from Addison-Wesley). If you design or test multitasking operating systems, real-time operating systems, or device drivers for these systems, Protected Mode Software Architecture is an essential, time-saving tool. The PC System Architecture Series is a crisply written and comprehensive set of guides to the most important

Formeln + Hilfen zur höheren Mathematik


Gerhard Merziger - 1996
    

Algol-Like Languages (2-Volume Set)


Peter O'Hearn - 1996
    This set of two volumes aims to review the attempts over recent years to use programming languages based on ALGOL 60, using Backus' original document as an introduction.

SmallTalk, Objects, and Design


Chamond Liu - 1996
    Thus it is more than a guide to the language; it also examines Smalltalk in its technical and historical setting, and along the way addresses the questions that every Smalltalk developer sooner or later naturally wonders about. Assuming nothing more than general programming experience, it begins with what objects and classes are, and eventually progresses to subtle matters such as the distinction between types and classes. Going beyond typical programming language books, it also covers the most important design patterns and how to write them in Smalltalk. The thrust then is not merely programming in Smalltalk with objects, but thinking and designing effectively with objects. This edition is a reprint of the original 1996 edition. Although the intervening years have brought the accustomed rapid changes in the computing industry, the principles presented here remain as relevant now as then. "Three of my favorite topics are Smalltalk, objects, and design. Chamond Liu's book is the perfect blend of these topics. I heartily recommend this book to practitioners who don't want to read a dry treatment on design methodology or yet another programming book. You will be treated to elements of good design, a historical perspective, design patterns demystified and coded in Smalltalk, and just the right mix of Smalltalk programming and object concepts."?Rebecca Wirfs-Brock, author of Designing Object-Oriented Software "Well-written and well-thought-out. . . . The chapter on design patterns especially is first-rate."?Doug Lea, author of Concurrent Programming in Java, and Object-Oriented System Development "One of those rare books that rewards both beginners and experts with insights appropriate to their levels. In addition, the writing style?combining incisiveness and grace?makes it a real pleasure to read."?Dave Collins, author of Designing Object-Oriented

Extensions of First-Order Logic


Maria Manzano - 1996
    This is an introduction to extensions of first-order logic, based on the principle that many-sorted logic (MSL) provides a unifying framework in which to place, for example, second-order logic, type theory, modal and dynamic logics and MSL itself. The aim is two fold: only one theorem-prover is needed; proofs of the metaproperties of the different existing calculi can be avoided by borrowing them from MSL. To make the book accessible to readers from different disciplines, whilst maintaining precision, the author has supplied detailed step-by-step proofs, avoiding difficult arguments, and continually motivating the material with examples. Consequently this can be used as a reference, for self-teaching or for first-year graduate courses.

LAN Wiring


James Trulove - 1996
    It has information to help design, install and maintain structured cabling systems for data networking.

Jim Blinn's Corner: A Trip Down the Graphics Pipeline


Jim Blinn - 1996
    His many contributions include the Voyager Fly-by animations of space missions to Jupiter, Saturn, and Uranus; The Mechanical Universe, a 52-part telecourse of animated physics; and the computer animation of Carl Sagan's PBS series Cosmos. In addition, Blinn, the recipient of the first SIGGRAPH Computer Graphics Achievement Award, has developed many widely used graphics techniques, including bump mapping, environment mapping, and blobby modeling.Blinn shares his insight and experience in Jim Blinn's Corner, an award-winning column in the technical magazine IEEE Computer Graphics and Applications in which he unveils his most useful graphics methods and observations. This book, a compendium of 20 of the column's articles, leads you through the graphics pipeline offering a wealth of tips and tricks. It explores common graphics problems, many of which have never before been addressed. An invaluable resource for any graphics professional In his entertaining and inspirational style, Blinn examines a variety of topics to help computer graphics software and application developers recognize and solve graphics programming problems. Focusing on geometry and the graphics pipeline, he shares: easy to understand explanations of difficult concepts gleaned from years of teachinginteresting examples of tricky special cases that cause conventional algorithms to failhighly refined algorithms for clipping, viewing, lighting, and rendering

Inside the Object Model: The Sensible Use of C++


David M. Papurt - 1996
    Drawing on nearly ten years of programming and teaching experience, Papurt thoroughly describes the relationship between the basic principles and concerns of object modeling and the C++ programming language. Each chapter uses independent examples to illustrate key concepts described in the text and features helpful icons that clearly identify important ideas and dangerous pitfalls. With over 100 figures, hundreds of working code examples, and comparisons of coding techniques, this book rewards teh reader with a complete understanding of both C++ and the object model. Professional software analysts, designers, programmers, and advanced computer science students will benefit from reading this book.

Distributed Algorithms


Nancy Lynch - 1996
    She directs her book at a wide audience, including students, programmers, system designers, and researchers. "Distributed Algorithms" contains the most significant algorithms and impossibility results in the area, all in a simple automata-theoretic setting. The algorithms are proved correct, and their complexity is analyzed according to precisely defined complexity measures. The problems covered include resource allocation, communication, consensus among distributed processes, data consistency, deadlock detection, leader election, global snapshots, and many others. The material is organized according to the system model-first by the timing model and then by the interprocess communication mechanism. The material on system models is isolated in separate chapters for easy reference. The presentation is completely rigorous, yet is intuitive enough for immediate comprehension. This book familiarizes readers with important problems, algorithms, and impossibility results in the area: readers can then recognize the problems when they arise in practice, apply the algorithms to solve them, and use the impossibility results to determine whether problems are unsolvable. The book also provides readers with the basic mathematical tools for designing new algorithms and proving new impossibility results. In addition, it teaches readers how to reason carefully about distributed algorithms-to model them formally, devise precise specifications for their required behavior, prove their correctness, and evaluate their performance with realistic measures.

GAWK: Effective Awk Programming


Arnold D. Robbins - 1996
    

Statistical Digital Signal Processing and Modeling


Monson H. Hayes - 1996
    While the focal point of the text is signal modeling, it integrates and explores the relationships of signal modeling to the important problems of optimal filtering, spectrum estimation, and adaptive filtering.Coverage is equally divided between the theory and philosophy of statistical signal processing, and the algorithms that are used to solve related problems. The text reflects the author's philosophy that a deep understanding of signal processing is accomplished best through working problems. For this reason, the book is loaded with worked examples, homework problems, and MATLAB computer exercises. While the examples serve to illustrate the ideas developed in the book, the problems seek to motivate and challenge the student and the computer exercises allow the student to experiment with signal processing algorithms on complex signals.Professor Hayes is recognized as a leader in the signal processing community, particularly for his work in signal reconstruction and image processing. This text is suitable for senior/graduate level courses in advanced DSP or digital filtering found in Electrical Engineering Departments. Prerequisites include basic courses in DSP and probability theory.

The Art of Systems Architecting


Eberhardt Rechtin - 1996
    This innovative text directly addresses the problems inherent in creating and building new and complex systems for electronics, computer, software, aerospace, and government purposes. Today's challenges demand that a new class of tools, heuristic and qualitative, be added to the familiar ones of analysis and optimization. Today's architecting must handle the types of systems that have been unknown until very recently, e.g., systems that are very high-quality, real-time, closed-loop, reconfigurable, interactive, software-intensive, and, for all practical purposes, autonomous. The Art of Systems Architecting provides these tools by introducing the non-qualitative architectural concepts of systems thinking, heuristics, tensions, feedback architectures, modeling, and progressive design. Move beyond the traditional science of systems engineering and into the complementary art of architecting. It's all waiting for you in this one-of-a-kind book.

Communication Complexity


Eyal Kushilevitz - 1996
    The first part of the book is devoted to the simple two-party model introduced by Yao in 1979, which is still the most widely studied model. The second part treats newer models developed to deal with more complicated communication processes. Finally, the authors treat applications of these models, including computer networks, VLSI circuits, and data structures.

A Theory of Objects


Martín Abadi - 1996
    An innovative and important approach to the subject for researchers and graduates.