Best of
Computer-Science

1999

Code: The Hidden Language of Computer Hardware and Software


Charles Petzold - 1999
    And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries. Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines. It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.

The Pragmatic Programmer: From Journeyman to Master


Andy Hunt - 1999
    It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how toFight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you'll quickly see improvements in personal productivity, accuracy, and job satisfaction. You'll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You'll become a Pragmatic Programmer.

Refactoring: Improving the Design of Existing Code


Martin Fowler - 1999
    Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use... until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process.

Real-Time Rendering


Tomas Akenine-Möller - 1999
    With the advent of programmable shaders, a wide variety of new algorithms have arisen and evolved over the past few years. This edition discusses current, practical rendering methods used in games and other applications. It also presents a solid theoretical framework and relevant mathematics for the field of interactive computer graphics, all in an approachable style. The authors have made the figures used in the book available for download for fair use.: Download Figures

Extreme Programming Explained: Embrace Change (The XP Series)


Kent Beck - 1999
    If you are seriously interested in understanding how you and your team can start down the path of improvement with XP, you must read this book."-- Francesco Cirillo, Chief Executive Officer, XPLabs S.R.L. "The first edition of this book told us what XP was--it changed the way many of us think about software development. This second edition takes it farther and gives us a lot more of the 'why' of XP, the motivations and the principles behind the practices. This is great stuff. Armed with the 'what' and the 'why, ' we can now all set out to confidently work on the 'how' how to run our projects better, and how to get agile techniques adopted in our organizations."-- Dave Thomas, The Pragmatic Programmers LLC "This book is dynamite! It was revolutionary when it first appeared a few years ago, and this new edition is equally profound. For those who insist on cookbook checklists, there's an excellent chapter on 'primary practices, ' but I urge you to begin by truly contemplating the meaning of the opening sentence in the first chapter of Kent Beck's book: 'XP is about social change.' You should do whatever it takes to ensure that every IT professional and every IT manager--all the way up to the CIO--has a copy of Extreme Programming Explained on his or her desk."-- Ed Yourdon, author and consultant "XP is a powerful set of concepts for simplifying the process of software design, development, and testing. It is about minimalism and incrementalism, which are especially useful principles when tackling complex problems that require a balance of creativity and discipline."-- Michael A. Cusumano, Professor, MIT Sloan School of Management, and author of The Business of Software " Extreme Programming Explained is the work of a talented and passionate craftsman. Kent Beck has brought together a compelling collection of ideas about programming and management that deserves your full attention. My only beef is that our profession has gotten to a point where such common-sense ideas are labeled 'extreme.'..."-- Lou Mazzucchelli, Fellow, Cutter Business Technology Council "If your organization is ready for a change in the way it develops software, there's the slow incremental approach, fixing things one by one, or the fast track, jumping feet first into Extreme Programming. Do not be frightened by the name, it is not that extreme at all. It is mostly good old recipes and common sense, nicely integrated together, getting rid of all the fat that has accumulated over the years."-- Philippe Kruchten, UBC, Vancouver, British Columbia "Sometimes revolutionaries get left behind as the movement they started takes on a life of its own. In this book, Kent Beck shows that he remains ahead of the curve, leading XP to its next level. Incorporating five years of feedback, this book takes a fresh look at what it takes to develop better software in less time and for less money. There are no silver bullets here, just a set of practical principles that, when used wisely, can lead to dramatic improvements in software development productivity."-- Mary Poppendieck, author of Lean Software Development: An Agile Toolkit "Kent Beck has revised his classic book based on five more years of applying and teaching XP. He shows how the path to XP is both

The Practice of Programming (Addison-Wesley Professional Computing Series)


Brian W. Kernighan - 1999
    With the same insight and authority that made their book The Unix programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive.

Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions


Herb Sutter - 1999
    Do you enjoy solving thorny C++ problems and puzzles? Do you relish writing robust and extensible code? Then take a few minutes and challenge yourself with some tough C++ design and programming problems. The puzzles and problems in Exceptional C++ not only entertain, they will help you hone your skills to become the sharpest C++ programmer you can be. Many of these problems are culled from the famous Guru of the Week feature of the Internet newsgroup comp.lang.c++.moderated, expanded and updated to conform to the official ISO/ANSI C++ Standard. Each problem is rated according to difficulty and is designed to illustrate subtle programming mistakes or design considerations. After youve had a chance to attempt a solution yourself, the book then dissects the code, illustrates what went wrong, and shows how the problem can be fixed. Covering a broad range of C++ topics, the problems and solutions address critical issues such as: *Generic programming and how to write reusable templates *Exception safety issues and techniques *Robust class design and inheritance *Compiler firewalls and the Pimpl I

C++ Standard Library: A Tutorial and Reference


Nicolai M. Josuttis - 1999
    The library is not self-explanatory or fully consistent, and there are still some traps for the unwary. But the advantages far outweigh the problems, especially if you've got an expert book like Nicolai Josuttis' C++ Standard Library to help you. Josuttis starts with an overview of the standard library, and its key interrelationships with the core language. He presents detailed coverage of the STL, the most powerful, complex, and exciting part of the library; then covers special containers, strings, numeric classes, and internationalization; and helps you get more out of a component you're probably already using: the IOStream library. Every component description includes purpose, design, code examples, practical scenarios, pitfalls, and in most cases, reference sources. Whether you need a tutorial or reference, this book delivers the goods.— (Bill Camarda, bn.com, editor)

Software Requirements 3


Karl Wiegers - 1999
    Two leaders in the requirements community have teamed up to deliver a contemporary set of practices covering the full range of requirements development and management activities on software projects. Describes practical, effective, field-tested techniques for managing the requirements engineering process from end to end. Provides examples demonstrating how requirements "good practices" can lead to fewer change requests, higher customer satisfaction, and lower development costs. Fully updated with contemporary examples and many new practices and techniques. Describes how to apply effective requirements practices to agile projects and numerous other special project situations. Targeted to business analysts, developers, project managers, and other software project stakeholders who have a general understanding of the software development process. Shares the insights gleaned from the authors' extensive experience delivering hundreds of software-requirements training courses, presentations, and webinars.New chapters are included on specifying data requirements, writing high-quality functional requirements, and requirements reuse. Considerable depth has been added on business requirements, elicitation techniques, and nonfunctional requirements. In addition, new chapters recommend effective requirements practices for various special project situations, including enhancement and replacement, packaged solutions, outsourced, business process automation, analytics and reporting, and embedded and other real-time systems projects.

Foundations of Statistical Natural Language Processing


Christopher D. Manning - 1999
    This foundational text is the first comprehensive introduction to statistical natural language processing (NLP) to appear. The book contains all the theory and algorithms needed for building NLP tools. It provides broad but rigorous coverage of mathematical and linguistic foundations, as well as detailed discussion of statistical methods, allowing students and researchers to construct their own implementations. The book covers collocation finding, word sense disambiguation, probabilistic parsing, information retrieval, and other applications.

Sams Teach Yourself SQL™ in 10 Minutes


Ben Forta - 1999
    It also covers MySQL, and PostgreSQL. It contains examples which have been tested against each SQL platform, with incompatibilities or platform distinctives called out and explained.

Introduction to Java Programming: Comprehensive Version


Y. Daniel Liang - 1999
    Daniel Liang teaches concepts of problem-solving and object-oriented programming using a fundamentals-first approach. Beginning programmers learn critical problem-solving techniques then move on to grasp the key concepts of object-oriented and GUI programming using Java 5. Students start with the essential problem-solving and programming concepts (control statements, methods, and arrays), are then introduced to object-oriented programming, graphical user interface (GUI), and applets, and finally to exception handling, I/O, data structures, and other advanced subjects. Liang uses small, simple, and stimulating examples to demonstrate concepts and techniques while longer examples are presented in case studies with overall discussions and thorough line-by-line explanations. Students can now write short, interesting, graphical game programs starting from Chapter 2! reinforcing key concepts with objectives lists, introduction and chapter overviews, easy to follow examples, chapter summaries, review questions, programming exercises, interactive self-test. Students receive solutions to even-numbered programming exercises, source code for the examples in the book, online self assessment (w/over 1000 multiple-choice questions) and ONLINE homework through GRADIANCE, the industries most advanced online homework application. Instructors are offered the most extensive library of support materials available including interactive and animated slides, TestGen (w/over 2000 multiple-choice questions), solutions to all programming exercises, sample exams and supplemental exercises. Available in two versions, the Fundamentals First edition (chapters 1-19) and the Comprehensive version (chapters 1-36).

Knowledge Representation: Logical, Philosophical, and Computational Foundations


John F. Sowa - 1999
    His definitive new book shows how techniques of artificial intelligence, database design, and object-oriented programming help make knowledge explicit in a form that computer systems can use. The first three chapters are devoted to logic, ontology, and computable models of reality. Remaining chapters apply theories to the analysis of problems stated in ordinary language, and their translation to computable form. The text is self-contained, with each new idea defined when first mentioned; all formalism is developed in the body of the text or summarized in an appendix. Knowledge Representation is appropriate for advanced undergraduate and graduate students in computer science, as well as philosophy and linguistics students with some background in artificial intelligence or programming.

Perl Black Book


Steven Holzner - 1999
    There are over a million copies of his books in print. Includes 250 pages of CGI programming, the driving force behind Perl's popularity. Includes over 1,000 programming examples. Comprehensive coverage of Perl syntax and programming. If you can have only one book on Perl, this is it Written at a higher technical level than other books currently on the market.

The Grammar of Graphics


Leland Wilkinson - 1999
    I was determined to produce a package that could draw every statistical graphic I had ever seen. The structure of the program was a collection of procedures named after the basic graph types they p- duced. The graphics code was roughly one and a half megabytes in size. In the early 1990's, I redesigned the SYSTAT graphics package using - ject-based technology. I intended to produce a more comprehensive and - namic package. I accomplished this by embedding graphical elements in a tree structure. Rendering graphics was done by walking the tree and editing worked by adding and deleting nodes. The code size fell to under a megabyte. In the late 1990's, I collaborated with Dan Rope at the Bureau of Labor Statistics and Dan Carr at George Mason University to produce a graphics p- duction library called GPL, this time in Java. Our goal was to develop graphics components. This book was nourished by that project. So far, the GPL code size is under half a megabyte.

Communicating and Mobile Systems: The Pi Calculus


Robin Milner - 1999
    In this book Robin Milner introduces a new way of modelling communication that reflects its position. He treats computers and their programs as themselves built from communicating parts, rather than adding communication as an extra level of activity. Everything is introduced by means of examples, such as mobile phones, job schedualers, vending machines, data structures, and the objects of object-oriented programming. But the aim of the book is to develop a theory, the pi-calculus, in which these things can be treated rigorously. The pi-calculus differs from other models of communicating behaviour mainly in its treatment of mobility. The movement of a piece of data inside a computer program is treated exactly the same as the transfer of a message--or indeed an entire computer program--across the internet. One can also describe networks which reconfigure themselves. The calculus is very simple but powerful; its most prominent ingredient is the notion of a name. Its theory has two important ingredients: the concept of behavioural (or observational) equivalence, and the use of a new theory of types to classify patterns of interactive behaviour. The internet, and its communication protocols, fall within the scope of the theory just as much as computer programs, data structures, algorithms and programming languages. This book is the first textbook on the subject; it has been long-awaited by professionals and will be welcome by them, and their students.

Advanced Renderman: Creating CGI for Motion Pictures


Anthony A. Apodaca - 1999
    Written by the world's foremost RenderMan experts, it offers thoroughly updated coverage of the standard while moving beyond the scope of the original RenderMan Companion to provide in-depth information on dozens of advanced topics. Both a reference and a tutorial, this book will quickly prove indispensable, whether you're a technical director, graphics programmer, modeler, animator, or hobbyist.

Linkers and Loaders


John R. Levine - 1999
    But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes. The book begins with a detailed and comparative account of linking and loading that illustrates the differences among various compilers and operating systems. On top of this foundation, the author presents clear practical advice to help you create faster, cleaner code. You'll learn to avoid the pitfalls associated with Windows DLLs, take advantage of the space-saving, performance-improving techniques supported by many modern linkers, make the best use of the UNIX ELF library scheme, and much more. If you're serious about programming, you'll devour this unique guide to one of the field's least understood topics. Linkers & Loaders is also an ideal supplementary text for compiler and operating systems courses.

Mastering Delphi 5


Marco Cantù - 1999
    Hundreds of real-world examples show programmers how to stretch Delphi to its limits.

Algorithms: A Functional Programming Approach


Fethi A. Rabhi - 1999
    Concise, yet authoritative, this book teaches the skills needed to master this essential subject. The authors challenge more traditional methods of teaching algorithms by using a functional programming context, with Haskell as the implementation language. This leads to smaller, clearer and more elegant programs which enable the programmer to understand the algorithm itself more quickly and use that understanding to explore alternative solutions. Placing the emphasis on program development rather than the mathematical properties of algorithms, the book uses a succession of practical programming examples to develop in the reader problem-solving skills which can be easily transferred to other language paradigms.

Linux Complete


Grant Taylor - 1999
    The book covers installation, the popular GNOME, KDE, and CDE interfaces, using utilities and applications, and advanced topics such as applying Linux in educational institutions.

Foundations of Statistical Natural Language Processing


Christopher Manning - 1999
    This foundational text is the first comprehensive introduction to statistical natural language processing (NLP) to appear. The book contains all the theory and algorithms needed for building NLP tools. It provides broad but rigorous coverage of mathematical and linguistic foundations, as well as detailed discussion of statistical methods, allowing students and researchers to construct their own implementations. The book covers collocation finding, word sense disambiguation, probabilistic parsing, information retrieval, and other applications.

Time Warps, String Edits, and Macromolecules: The Theory and Practice of Sequence Comparision


David Sankoff - 1999
    The computational perspective is that of sequence processing, in particular the problem of recognizing related sequences. The book is the first, and still best compilation of papers explaining how to measure distance between sequences, and how to compute that measure effectively. This is called string distance, Levenshtein distance, or edit distance. The book contains lucid explanations of the basic techniques; well-annotated examples of applications; mathematical analysis of its computational (algorithmic) complexity; and extensive discussion of the variants needed for weighted measures, timed sequences (songs), applications to continuous data, comparison of multiple sequences and extensions to tree-structures. This theory finds applications in molecular biology, speech recognition, analysis of bird song and error correcting in computer software.

Recursively Enumerable Sets and Degrees: A Study of Computable Functions and Computably Generated Sets


Robert I. Soare - 1999
    

Peter Norton's Complete Guide to Linux (Peter Norton (Sams))


Peter Norton - 1999
    Included are installation, configuration and maintenance with practical advice for creating individual networks. Red Hat, Caldera and SuSu are explored to help developers create real world systems.

Perl Core Language: Little Black Book


Steven Holzner - 1999
    Includes step-by-step solutions on object-oriented programming in Perl. Covers how to handle syntax, math, files, modules, CGI, and OLE for Perl programming.

Java 2 by Example


Geoff Friesen - 1999
    Topics include Java Foundation Classes (JFC), Abstract Windowing Toolkit, Applets vs Applications, Multi-Threading, Security, and Networking. At the end of the book, the reader builds a useful contact manager, applying concepts learned throughout the book.

Monte Carlo Methods in Statistical Physics


Mark Newman - 1999
    It includes methods for both equilibrium and out of equilibrium systems, and discusses in detail such common algorithms as the Metropolis and heat-bath algorithms, as well as more sophisticated ones such as continuous time Monte Carlo, cluster algorithms, multigrid methods, entropic sampling and simulated tempering. Data analysis techniques are also explained starting with straightforward measurement and error-estimation techniques and progressing to topics such as the single and multiple histogram methods and finite size scaling. The last few chapters of the book are devoted to implementation issues, including lattice representations, efficient implementation of data structures, multispin coding, parallelization of Monte Carlo algorithms, and random number generation. The book also includes example programs which show how to apply these techniques to a variety of well-known models.

People & Ideas in Theoretical Computer Science


Cristian S. Calude - 1999
    Many insights into the nature of efficient computations were gained and theory was crucial for some of the most celebrated engineering triumphs of computer science (e.g., in compiler design, databases, multitask operating systems, to name just a few). Theoretical computer science (TCS) functions as a communication bridge between computer science and other subjects, notably, mathematics, linguistics, biology; it is a champion in developing unconventional models of computation (DNA, quantum). This book collects personal accounts and reflections of fourteen eminent scientists who have dedicated themselves to the craft of TCS. Contributions focus on authors specific interests, experiences, and reminiscences. The emerging picture, which is just one among other possible ones, should be a catalyst for further developments and continuations. Was most interested to learn about the project, which should be a worthwhile one." N. Chomsky, MIT. "The human story of creativity is inspiring and documents a very noble activity - the creation of knowledge in its most beautiful and useful form - the creation of a science. Supplying the technical and intellectual tools to probe some of the most fascinating questions about the nature of thought and intelligence, theoretical computer science is trying to grasp the limits of rational thought, the limits of knowable. This book will contribute to the understanding of the creation of a magnificent science." J. Hartmanis, NSF. "This is obviously an extremely worthwhile project." D. E. Knuth, Stanford University.

Musical Networks: Parallel Distributed Perception and Performance


Niall Griffith - 1999
    Chapters by leaders in the field cover new connectionist models of pitch perception, tonality, musical streaming, sequential and hierarchical melodic structure, composition, harmonization, rhythmic analysis, sound generation, and creative evolution. The collection combines journal papers on connectionist modeling, cognitive science, and music perception with new papers solicited for this volume. It also contains an extensive bibliography of related work.ContributorsShumeet Baluja, M.I. Bellgard, Michael A. Casey, Garrison W. Cottrell, Peter Desain, Robert O. Gjerdingen, Mike Greenhough, Niall Griffith, Stephen Grossberg, Henkjan Honing, Todd Jochem, Bruce F. Katz, John F. Kolen, Edward W. Large, Michael C. Mozer, Michael P.A. Page, Caroline Palmer, Jordan B. Pollack, Dean Pomerleau, Stephen W. Smoliar, Ian Taylor, Peter M. Todd, C.P. Tsang, Gregory M. Werner

Philosophy and Computer Science


Timothy R. Colburn - 1999
    of Minnesota-Duluth) has a doctorate in philosophy and an advanced degree in computer science; he's worked as a philosophy professor, a computer programmer, and a research scientist in artificial intelligence. Here he discusses the philosophical foundations of artificial intelligence; the new encounter of science and philosophy (logic, models of the mind and of reasoning, epistemology); and the philosophy of computer science (touching on math, abstraction, software, and ontology).

The Simple Genetic Algorithm: Foundations and Theory


Michael D. Vose - 1999
    Viewing the SGA as a mathematical object, Michael D. Vose provides an introduction to what is known (i.e., proven) about the theory of the SGA. He also makes available algorithms for the computation of mathematical objects related to the SGA. Although he describes the SGA in terms of heuristic search, the book is not about search or optimization per se. Rather, the focus is on the SGA as an evolutionary system. The author intends the book also to serve as an outline for exploring topics in mathematics and computer science in a goal-oriented way.

Java 2 Complete


Sybex - 1999
    It has rapidly become the de facto standard for WWW application development. Java comes with a myriad of class packages that support graphical user interfaces, networking, sophisticated data structures, and much more. This book gives you everything you need to know to get up and running with JDK 1:2's new est features, including Swing, 2D graphics, and how to get your 1.2 certification.

Object-Oriented Software Engineering: Conquering Complex and Changing Systems


Bernd Bruegge - 1999
    It emphasizes practical experience whereby participants can apply the techniques learned.

Systems Architecting of Organizations: Why Eagles Can't Swim


Eberhardt Rechtin - 1999
    Many answers that do exist depend upon time and circumstance.Systems Architecting of Organizations: Why Eagles Can't Swim tackles a very difficult dilemma: how do even highly respected organizations maintain their vaunted excellence, accommodate the new world of global communications, transportation, economics and multinational security, and still survive against stiff competition already in place? As they are finding out, depending upon the circumstances, the demands of excellence on the one hand, and of change on the other, can be cruelly irreconcilable. This book does not just describe business strengths and weaknesses. First, it identifies potential weaknesses, then offers guidelines and insights to address them. Its approach is architectural and heuristic. Second, this book is about maintaining success in a dynamic world, not about achieving it in a static one; few are clear on what to do and not to do in the face of major change.Systems Architecting of Organizations: Why Eagles Can't Swim helps professionals gain new perspectives when reviewing their own organizations and to see problems and opportunities previously not apparent.Features

Concurrent Programming in ML


John H. Reppy - 1999
    This practical, how-to book focuses on the use of concurrency to implement naturally concurrent applications. In addition to a tutorial introduction to programming in CML, the book presents three extended examples using CML for practical systems programming: a parallel software build system, a simple concurrent window manager, and an implementation of distributed tuple spaces. This book also illustrates advanced SML programming techniques, and includes a chapter on the implementation of concurrency using features provided by the SML/NJ system. It will be of interest to programmers, students, and professional researchers working in computer language development.

Computational Physics


J.M.M.H. Thijssen - 1999
    This book describes computational methods used in theoretical physics with emphasis on condensed matter applications. Coverage begins with an overview of the wide variety of topics and algorithmic approaches studied in this book. The next chapters concentrate on electronic structure calculations, presenting the Hartree-Fock and Density Functional formalisms, and band structure methods. Later chapters discuss molecular dynamics simulations and Monte Carlo methods in classical and quantum physics, with applications to condensed matter and particle field theories. Each chapter details the necessary fundamentals, describes the formation of a sample program, and includes problems that address related analytical and numerical issues. Useful appendices on numerical methods and random number generators are also included. This volume bridges the gap between undergraduate physics and computational research. It is an ideal textbook for graduate students as well as a valuable reference for researchers.