Compilers: Principles, Techniques, and Tools
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development. Computer scientists, developers, and aspiring students that want to learn how to build, maintain, and execute a compiler for a major programming language.
0321486811
Programming Pearls
Jon Bentley
Fourteen years after it was first issued, C++ expert Jon Bentley reinvents a true classic with the second edition of his Programming Pearls. Completely revised and brought up to date with all new code examples in C and C++, this book remains an exceptional tutorial for learning to think like a programmer.
The "pearls" in question center not only on choosing the right algorithms (like binary searches, sorting techniques, or sparse arrays) but also on showing how to solve problems effectively. Each chapter frames a particular programming tasksuch as sorting numbers, creating anagrams, or counting the words in a block of textmany drawn from Bentley's experiences in his long career as a developer. The book traces the process of arriving at a fast, efficient, and accurate solution, along with code profiling to discover what works best. After refining the correct answer, each chapter enumerates programming principles that you can use on your own.
The author also challenges you to think like an engineer, and each chapter ends with about a dozen problems to get you thinking creatively about design issues. (Sidebars on such historical topics as the first computer solutions to computer chess, spell-checking, and even architectural design help create a perspective on successful problem solving and make for a truly educational and enjoyable tour of how to become a better programmer.) Bentley also asks the reader to think analytically about the world with "back of the envelope" estimation techniques drawn from engineering. Appendices list the algorithms and code rules covered in the book, plus some sample solutions.
Fans of the first edition of this title will be pleased to see this favorite computer text brought up to date for today's faster hardware. Whether you want to improve your command of algorithms or test your problem-solving skills, the new version of Programming Pearl is a challenging, instructive, and thoroughly entertaining resource. Richard Dragan
Topics covered: Programming and problem-solving tutorial, sorting algorithms, merge sort, bit vectors, binary searches, program correctness and testing, improving performance, engineering and problem-solving techniques, performance estimates, designing for safety, divide-and-conquer and scanning algorithms, tuning code, tips for more efficient memory usage, insertion sort, quicksort algorithms, sparse arrays, searching algorithms, binary search trees, heaps, priority queues, searching text, and generating random text.
0201657880
Game Audio Programming
James Boer
Game Audio Programming is a comprehensive guide to interactive audio programming for the Microsoft Windows ® platform. Written for C++ programmers implementing an audio system for an entertainment or multimedia title, this practical reference covers a wide range of topics relevant to today's audio programmers, including DirectX Audio, audio decompression libraries, hardware filters and effects, geometric representation of world data for effects, occlusion and obstruction, and more. In addition, a full-featured, documented, and internally commented game audio programming (GAP) library is referenced throughout the book to explain various concepts. The library is included on the companion CD-ROM and can be used as either a ready-to-use library for your own games or as reference code to help implement an audio system.
1584502452
A Short History of Nearly Everything
Bill Bryson
From primordial nothingness to this very moment, A Short History of Nearly Everything reports what happened and how humans figured it out. To accomplish this daunting literary task, Bill Bryson uses hundreds of sources, from popular science books to interviews with luminaries in various fields. His aim is to help people like him, who rejected stale school textbooks and dry explanations, to appreciate how we have used science to understand the smallest particles and the unimaginably vast expanses of space. With his distinctive prose style and wit, Bryson succeeds admirably. Though A Short History clocks in at a daunting 500-plus pages and covers the same material as every science book before it, it reads something like a particularly detailed novel (albeit without a plot). Each longish chapter is devoted to a topic like the age of our planet or how cells work, and these chapters are grouped into larger sections such as "The Size of the Earth" and "Life Itself." Bryson chats with experts like Richard Fortey (author of Life and Trilobite) and these interviews are charming. But it's when Bryson dives into some of science's best and most embarrassing fightsCope vs. Marsh, Conway Morris vs. Gouldthat he finds literary gold. Therese Littleton
076790818X
Learning GNU Emacs, 2nd Edition
Debra Cameron, Bill Rosenblatt, Eric S. Raymond
GNU Emacs is the most popular and widespread of the Emacs family of editors. It is also the most powerful and flexible. Unlike all other text editors, GNU Emacs is a complete working environment you can stay within Emacs all day without leaving. This book tells you how to get started with the GNU Emacs editor. It will also "grow" with you: as you become more proficient, this book will help you learn how to use Emacs more effectively. It takes you from basic Emacs usage (simple text editing) to moderately complicated customization and programming.
The second edition of Learning GNU Emacs describes all of the new features of GNU Emacs 19.30, including fonts and colors, pull-down menus, scroll bars, enhanced X Window support, and correct bindings for most standard keys. GNUS, a Usenet newsreader, and ange-ftp mode, a transparent interface to the file transfer protocol, are also described.
Learning GNU Emacs, second edition, covers:
Using Emacs as an Internet Toolkit (to use electronic mail and Usenet news, telnet to other computers, retrieve files using FTP, browse the World Wide Web, and author Web documents)Emacs' rich, comprehensive online help facilitiesHow to edit files with EmacsUsing Emacs as a "shell environment"How to take advantage of "built-in" formatting featuresHow to use multiple buffers, Emacs windows, and X WindowsCustomizing EmacsThe Emacs interface to the X Window System, which allows you to use a mouse and pop-up menusWhys and hows of writing macros to circumvent repetitious tasksEmacs as a programming environmentThe basics of Emacs LISPHow to get Emacs
The book is aimed at new Emacs users, whether or not they are programmers. Also useful for readers switching from other Emacs implementations to GNU Emacs.
1565921526
|
Ender's Game Gift Edition
Orson Scott Card
Winner of the Hugo and Nebula Awards
For the perfect holiday gift for the reader on your list, pick up this special gift edition of one of the most beloved Science Fiction novels ever written. Andrew "Ender" Wiggin thinks he is playing computer simulated war games at the Battle School; he is, in fact, engaged in something far more desperate. Ender is the most talented result of Earth's desperate quest to create the military genius that the planet needs in its all-out war with an alien enemy. Is Ender the general Earth needs? The only way to find out is to throw the child into ever harsher training, to chip away and find the diamond inside, or destroy him utterly. Ender Wiggin is six years old when it begins. He will grow up fast.But Ender is not the only result of the experiment. The war with the Formics has been raging for a hundred years, and the quest for the perfect general has been underway for almost as long. Ender's two older siblings, Peter and Valentine, are every bit as unusual as he is, but in very different ways. Between the three of them lie the abilities to remake a world. If, that is, the world survives.
0765317389
A History of Algorithms: From the Pebble to the Microchip
Jean-Luc Chabert
A Source Book for the History of Mathematics, but one which offers a different perspective by focusinng on algorithms. With the development of computing has come an awakening of interest in algorithms. Often neglected by historians and modern scientists, more concerned with the nature of concepts, algorithmic procedures turn out to have been instrumental in the development of fundamental ideas: practice led to theory just as much as the other way round. The purpose of this book is to offer a historical background to contemporary algorithmic practice.
3540633693
The Curves of Life
Theodore A. Cook
Classic, well-thought-out examination of the function of the spiral, or helix, in both nature and art. Demonstrates how spiral is fundamental to structure of shells, leaves, horns, human body, drawings of Leonardo, Leaning Tower of Pisa, more. 1914 edition. 426 illustrations.
048623701X
Introduction to Algorithms
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Aimed at any serious programmer or computer science student, the new second edition of Introduction to Algorithms builds on the tradition of the original with a truly magisterial guide to the world of algorithms. Clearly presented, mathematically rigorous, and yet approachable even for the math-averse, this title sets a high standard for a textbook and reference to the best algorithms for solving a wide range of computing problems.
With sample problems and mathematical proofs demonstrating the correctness of each algorithm, this book is ideal as a textbook for classroom study, but its reach doesn't end there. The authors do a fine job of explaining each algorithm. (Reference sections on basic mathematical notation will help readers bridge the gap, but it will help to have some math background to appreciate the full achievement of this handsome hardcover volume.) Every algorithm is presented in pseudo-code, which can be implemented in any computer language, including C/C++ and Java. This ecumenical approach is one of the book's strengths. When it comes to sorting and common data structures, from basic linked lists to trees (including binary trees, red-black, and B-trees), this title really shines, with clear diagrams that show algorithms in operation. Even if you just glance over the mathematical notation here, you can definitely benefit from this text in other ways.
The book moves forward with more advanced algorithms that implement strategies for solving more complicated problems (including dynamic programming techniques, greedy algorithms, and amortized analysis). Algorithms for graphing problems (used in such real-world business problems as optimizing flight schedules or flow through pipelines) come next. In each case, the authors provide the best from current research in each topic, along with sample solutions.
This text closes with a grab bag of useful algorithms including matrix operations and linear programming, evaluating polynomials, and the well-known Fast Fourier Transformation (FFT) (useful in signal processing and engineering). Final sections on "NP-complete" problems, like the well-known traveling salesman problem, show off that while not all problems have a demonstrably final and best answer, algorithms that generate acceptable approximate solutions can still be used to generate useful, real-world answers.
Throughout this text, the authors anchor their discussion of algorithms with current examples drawn from molecular biology (like the Human Genome Project), business, and engineering. Each section ends with short discussions of related historical material, often discussing original research in each area of algorithms. On the whole, they argue successfully that algorithms are a "technology" just like hardware and software that can be used to write better software that does more, with better performance. Along with classic books on algorithms (like Donald Knuth's three-volume set, The Art of Computer Programming), this title sets a new standard for compiling the best research in algorithms. For any experienced developer, regardless of their chosen language, this text deserves a close look for extending the range and performance of real-world software. Richard Dragan
Topics covered: Overview of algorithms (including algorithms as a technology); designing and analyzing algorithms; asymptotic notation; recurrences and recursion; probabilistic analysis and randomized algorithms; heapsort algorithms; priority queues; quicksort algorithms; linear time sorting (including radix and bucket sort); medians and order statistics (including minimum and maximum); introduction to data structures (stacks, queues, linked lists, and rooted trees); hash tables (including hash functions); binary search trees; red-black trees; augmenting data structures for custom applications; dynamic programming explained (including assembly-line scheduling, matrix-chain multiplication, and optimal binary search trees); greedy algorithms (including Huffman codes and task-scheduling problems); amortized analysis (the accounting and potential methods); advanced data structures (including B-trees, binomial and Fibonacci heaps, representing disjoint sets in data structures); graph algorithms (representing graphs, minimum spanning trees, single-source shortest paths, all-pairs shortest paths, and maximum flow algorithms); sorting networks; matrix operations; linear programming (standard and slack forms); polynomials and the Fast Fourier Transformation (FFT); number theoretic algorithms (including greatest common divisor, modular arithmetic, the Chinese remainder theorem, RSA public-key encryption, primality testing, integer factorization); string matching; computational geometry (including finding the convex hull); NP-completeness (including sample real-world NP-complete problems and their insolvability); approximation algorithms for NP-complete problems (including the traveling salesman problem); reference sections for summations and other mathematical notation, sets, relations, functions, graphs and trees, as well as counting and probability backgrounder (plus geometric and binomial distributions).
0262032937
Introductory Statistics with R
Peter Dalgaard
R is an Open Source implementation of the S language. It works on multiple computing platforms and can be freely downloaded. R is now in widespread use for teaching at many levels as well as for practical data analysis and methodological development.
This book provides an elementary-level introduction to R, targeting both non-statistician scientists in various fields and students of statistics. The main mode of presentation is via code examples with liberal commenting of the code and the output, from the computational as well as the statistical viewpoint. A supplementary R package can be downloaded and contains the data sets.
The statistical methodology includes statistical standard distributions, one- and two-sample tests with continuous data, regression analysis, one- and two-way analysis of variance, regression analysis, analysis of tabular data, and sample size calculations. In addition, the last six chapters contain introductions to multiple linear regression analysis, linear models in general, logistic regression, survival analysis, Poisson regression, and nonlinear regression.
In the second edition, the text and code have been updated to R version 2.6.2. The last two methodological chapters are new, as is a chapter on advanced data handling. The introductory chapter has been extended and reorganized as two chapters. Exercises have been revised and answers are now provided in an Appendix.
0387954759
The Selfish Gene
Richard Dawkins
Inheriting the mantle of revolutionary biologist from Darwin, Watson, and Crick, Richard Dawkins forced an enormous change in the way we see ourselves and the world with the publication of The Selfish Gene. Suppose, instead of thinking about organisms using genes to reproduce themselves, as we had since Mendel's work was rediscovered, we turn it around and imagine that "our" genes build and maintain us in order to make more genes. That simple reversal seems to answer many puzzlers which had stumped scientists for years, and we haven't thought of evolution in the same way since.
Why are there miles and miles of "unused" DNA within each of our bodies? Why should a bee give up its own chance to reproduce to help raise her sisters and brothers? With a prophet's clarity, Dawkins told us the answers from the perspective of molecules competing for limited space and resources to produce more of their own kind. Drawing fascinating examples from every field of biology, he paved the way for a serious re-evaluation of evolution. He also introduced the concept of self-reproducing ideas, or memes, which (seemingly) use humans exclusively for their propagation. If we are puppets, he says, at least we can try to understand our strings. Rob Lightner
0192860925
Mathematics for Physicists
Philippe Dennery, Andre Krzywicki
Excellent text provides thorough background in mathematics needed to understand today's more advanced topics in physics and engineering. Topics include theory of functions of a complex variable, linear vector spaces, tensor calculus, Fourier series and transforms, special functions, more. Rigorous theoretical development; problems solved in great detail. Bibliography. 1967 edition.
0486691934
|