Monday, September 30, 2013

Introduction to the Theory of Computation (Hardcover)

Introduction to the Theory of Computation (Hardcover)


Introduction to the Theory of Computation (Hardcover)

Posted:

Introduction to the Theory of Computation (Hardcover)
By Michael Sipser

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)
By Donald E. Knuth

Types and Programming Languages (Hardcover)

Posted:

Types and Programming Languages (Hardcover)
By Benjamin C. Pierce

Taking Stock (Kindle Edition)

Posted:

Taking Stock (Kindle Edition)
By CJ West

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)
By Donald E. Knuth

Pin It Now!

Higher-Order Perl: Transforming Programs with Programs

Higher-Order Perl: Transforming Programs with Programs


Higher-Order Perl: Transforming Programs with Programs

Posted:

Higher-Order Perl: Transforming Programs with Programs (Paperback)
By Mark Jason Dominus

As a programmer, your bookshelf is probably overflowing with books that did nothing to change the way you program...or think about programming.

You're going to need a completely different shelf for this book.

While discussing caching techniques in Chapter 3, Mark Jason Dominus points out how a large enough increase in power can change the fundamental way you think about a technology. And that's precisely what this entire book does for Perl.

It raids the deepest vaults and highest towers of Computer Science, and transforms the many arcane treasures it finds---recursion, iterators, filters, memoization, partitioning, numerical methods, higher-order functions, currying, cutsorting, grammar-based parsing, lazy evaluation, and constraint programming---into powerful and practical tools for real-world programming tasks: file system interactions, HTML processing, database access, web spidering, typesetting, mail processing, home finance, text outlining, and diagram generation.

Along the way it also scatters smaller (but equally invaluable) gems, like the elegant explanation of the difference between 'scope' and 'duration' in Chapter 3, or the careful exploration of how best to return error flags in Chapter 4. It even has practical tips for Perl evangelists.

Dominus presents even the most complex ideas in simple, comprehensible ways, but never compromises on the precision and attention to detail for which he is so widely and justly admired.

His writing is--as always--lucid, eloquent, witty, and compelling.

Aptly named, this truly is a Perl book of a higher order, and essential reading for every serious Perl programmer.


Pin It Now!

Sunday, September 29, 2013

Types and Programming Languages (Hardcover)

Types and Programming Languages (Hardcover)


Types and Programming Languages (Hardcover)

Posted:

Types and Programming Languages (Hardcover)
By Benjamin C. Pierce

Taking Stock (Kindle Edition)

Posted:

Taking Stock (Kindle Edition)
By CJ West

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)
By Donald E. Knuth

The Little Schemer - 4th Edition (Paperback)

Posted:

The Little Schemer - 4th Edition (Paperback)
By Matthias Felleisen

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)

Posted:

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)
By Noam Nisan

Pin It Now!

Art of Computer Programming, The, Volumes 1-3 Boxed Set

Art of Computer Programming, The, Volumes 1-3 Boxed Set


Art of Computer Programming, The, Volumes 1-3 Boxed Set

Posted:

Art of Computer Programming, The, Volumes 1-3 Boxed Set (3rd Edition) (Vol 1-3) (Hardcover)
By Donald E. Knuth

As Knuth himself says, it is impossible for any one person to keep up with all the research in computer science, but these 3 volumes do a remarkably good job of distilling the most important results and explaining them with mathematical rigor.

Each volume contains 2 chapters. Ch. 1, Basic Concepts: mathematical foundations and a description of MIX, a hypothetical machine (now available in software emulations). Ch. 2, Information Structures: lists, trees, memory allocation, garbage collection. Ch. 3, Random Numbers: how to produce series of "random" numbers and test their statistical properties. Ch. 4, Arithmetic: algorithms for integer and floating-point arithmetic. Ch. 5, Sorting: both in memory and on disks or tapes. Ch. 6, Searching: sequential, binary, hashing.

Despite the detailed coverage of the topics, which often involves esoteric mathematical notation, the author's lively style makes the algorithms and the main theoretical results relatively easy to grasp. If all you care about is getting a program to run, buy another book; but if you really want to understand how and why software works, there's nothing quite like this.



Pin It Now!

Saturday, September 28, 2013

Types and Programming Languages (Hardcover)

Types and Programming Languages (Hardcover)


Types and Programming Languages (Hardcover)

Posted:

Types and Programming Languages (Hardcover)
By Benjamin C. Pierce

Taking Stock (Kindle Edition)

Posted:

Taking Stock (Kindle Edition)
By CJ West

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)
By Donald E. Knuth

The Little Schemer - 4th Edition (Paperback)

Posted:

The Little Schemer - 4th Edition (Paperback)
By Matthias Felleisen

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)

Posted:

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)
By Noam Nisan

Pin It Now!

The Universal Computer: The Road from Leibniz to Turing

The Universal Computer: The Road from Leibniz to Turing


The Universal Computer: The Road from Leibniz to Turing

Posted:

The Universal Computer: The Road from Leibniz to Turing (Hardcover)
By Martin Davis

This is one of the best popular books on computer science or mathematics in years. Most authors in this area (e.g., Berlinski) have no special expertise in the subject matter or its history; that doesn't guarantee a bad book, but makes it hard to write a good one. Davis is a refreshing exception:

* He is a brilliant researcher, who made fundamental contributions to areas such as computability (the Davis-Putnam- Robinson theorem, related to Hilbert's 10th problem) and algorithms (the Davis-Putnam algorithm for solving satisfiability problems).

* He is a master expositor (his 1958 book "Computability and Unsolvability" was one of the very first textbooks in its area, yet it is still widely read today despite the many other books written on this subject over the past 42 years).

* He has spent the last twenty years studying the history of logic and computation.

Davis's book is all one would hope for given his qualifications. It is insightful and engaging, and full of fascinating information that is hard to find elsewhere. I cannot imagine a better book on this subject.



Pin It Now!

Friday, September 27, 2013

Operating System Concepts, Seventh Edition (Hardcover)

Operating System Concepts, Seventh Edition (Hardcover)


Operating System Concepts, Seventh Edition (Hardcover)

Posted:

Operating System Concepts, Seventh Edition (Hardcover)
By Abraham Silberschatz

Introduction to the Theory of Computation (Hardcover)

Posted:

Introduction to the Theory of Computation (Hardcover)
By Michael Sipser

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)
By Donald E. Knuth

Types and Programming Languages (Hardcover)

Posted:

Types and Programming Languages (Hardcover)
By Benjamin C. Pierce

Taking Stock (Kindle Edition)

Posted:

Taking Stock (Kindle Edition)
By CJ West

Pin It Now!

Computability: An Introduction to Recursive Function Theory

Computability: An Introduction to Recursive Function Theory


Computability: An Introduction to Recursive Function Theory

Posted:

Computability: An Introduction to Recursive Function Theory (Paperback)
By Nigel Cutland

This is a well-written book, and gives a satisfying account of the field of recursion theory. It covers basic aspects of recursion theory, Godel numbering, the structure of recursive and recursively enumerable sets, and even a brief (and quite sketchy) foray into complexity results at the end. It is, however, worth deciding whether you are in the target audience before making a purchase.

If you are trying to make a first transition over into theory topics from, say, a career of practical software development tasks, then this is the wrong book. Try Sipser's Introduction to the Theory of Computation instead. Sipser is more willing to spend time on demonstrating the intuitive picture, and relies less on formal mathematical arguments. This book can come later to fill in some of the mathematical properties.

On the opposite end of the spectrum, this is a passable but mediocre reference book for recursion theory. It omits major topics, such as the arithmetic hierarchy. It deviates considerably from other traditional treatments. These decisions will get annoying if you plan to read bits and pieces rather than learn in sequence according to the author's presentation. A better reference is Hartley Rogers' Theory of Recursive Functions and Effective Computability.

Buy this book if you are in the middle. It's a great book if you've seen some decidability results, but not a formal mathematical treatment; and if you intend to follow the book and learn what it decides rather than look up specific topics. In that situation, it's hard to see how you could do better.


Pin It Now!

Thursday, September 26, 2013

Taking Stock (Kindle Edition)

Taking Stock (Kindle Edition)


Taking Stock (Kindle Edition)

Posted:

Taking Stock (Kindle Edition)
By CJ West

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) (Hardcover)
By Donald E. Knuth

The Little Schemer - 4th Edition (Paperback)

Posted:

The Little Schemer - 4th Edition (Paperback)
By Matthias Felleisen

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)

Posted:

The Elements of Computing Systems: Building a Modern Computer from First Principles (Paperback)
By Noam Nisan

Pin It Now!

Wednesday, September 25, 2013

Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)

Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)


Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)

Posted:

Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)
By Ravi Sethi

Operating System Concepts, Seventh Edition (Hardcover)

Posted:

Operating System Concepts, Seventh Edition (Hardcover)
By Abraham Silberschatz

Introduction to the Theory of Computation (Hardcover)

Posted:

Introduction to the Theory of Computation (Hardcover)
By Michael Sipser

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)
By Donald E. Knuth

Types and Programming Languages (Hardcover)

Posted:

Types and Programming Languages (Hardcover)
By Benjamin C. Pierce

Pin It Now!

Tuesday, September 24, 2013

Introduction to Algorithms (Hardcover)

Introduction to Algorithms (Hardcover)


Introduction to Algorithms (Hardcover)

Posted:

Introduction to Algorithms (Hardcover)
By Thomas H. Cormen

Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)

Posted:

Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover)
By Ravi Sethi

Operating System Concepts, Seventh Edition (Hardcover)

Posted:

Operating System Concepts, Seventh Edition (Hardcover)
By Abraham Silberschatz

Introduction to the Theory of Computation (Hardcover)

Posted:

Introduction to the Theory of Computation (Hardcover)
By Michael Sipser

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)

Posted:

Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) (Hardcover)
By Donald E. Knuth

Pin It Now!

Concrete Mathematics: A Foundation for Computer Science

Concrete Mathematics: A Foundation for Computer Science


Concrete Mathematics: A Foundation for Computer Science

Posted:

Concrete Mathematics: A Foundation for Computer Science (2nd Edition) (Hardcover)
By Donald E. Knuth

What is "concrete" math, as opposed to other types of math? The authors explain that the title comes from the blending of CONtinuous and disCRETE math, two branches of math that many seem to like to keep asunder, though each occurs in the foundation of the other. The topics in the book, such as sums, generating functions, and number theory, are actually standard discrete math topics; however, the treatment in this text shows the inherent continuous (read: calculus) undergirding of the topics. Without calculus, generating functions would not have come to mind and their tremendous power could not be put to use in figuring out series.

The smart-aleck marginal notes notwithstanding, this is a serious math book for those who are willing to dot every i and cross every t. Unlike most math texts (esp. graduate math texts), nothing is omitted along the way. Notation is explained (=very= important), common pitfalls are pointed out (as opposed to the usual way students come across them -- by getting back bleeding exams), and what is important and what is =not= as important are indicated.

Still, I cannot leave the marginal notes unremarked; some are serious warnings to the reader. For example, in the introduction, one note remarks "I would advise the casual student to stay away from this course." Notes that advise one to skim, and there are a few, should be taken seriously. All the marginal notes come from the TAs who had to help with the text, and thus have a more nitty-gritty understanding of the difficulties students are likely to face. Still, there are plenty of puns and bad jokes to amuse the text-reader for hours: "The empty set is pointless," "But not Imbesselian," and "John .316" made me chuckle, but you have to find them for yourself.

To someone who has been through the rigors of math grad school, this book is a delight to read; to those who have not, they must keep in mind that this is a serious text and must be prepared to do some real work. Very bright high school students have gotten through this text with little difficulty. I want to note ahead of time - some of the questions in the book are serious research topics. They don't necessarily tell you that when they give you the problem; if you've worked on the problem for a week, you should turn to the answers in the back to check that there really is a solution.

That said, I would highly recommend this book to math-lovers who want some rigorous math outside of the usual fare. The formulas in here can actually come in handy "in real life", especially if one has to use math a lot.



Pin It Now!

Monday, September 23, 2013

Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software


Design Patterns: Elements of Reusable Object-Oriented Software

Posted:

Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
By Richard Helm

This book really changed my way of thinking about object-oriented design. The idea is that when designing a new class hierarchy, though implementation details may differ, you often find yourself using the same kinds of solutions over and over again. Rather than approaching each design task out of context as an individual, isolated problem, the strategy is to study the task and identify the underlying design pattern most likely to be applicable, and follow the class structure outlined by that pattern. It's a "cookbook" school of design that works amazingly well.

There are other advantages to this book. It isolates 23 of the most common patterns and presents them in detail. You wouldn't think that 23 patterns would be enough, but once you become adept at recognizing patterns, you'll find that a large fraction of the patterns you use in practice are among these 23. For each pattern, the book carefully presents the intent of the pattern, a motivating example, consequences of using that pattern, implementation considerations and pitfalls, sample code (C++ or Smalltalk), known uses of that pattern in real-world applications, and a list of related patterns.

Upon first reading, you will start to recognize these patterns in the frameworks you see. Upon second reading, you'll begin to see how these patterns can help you in your own designs, and may also start to see new patterns not listed in the book. Once you become familiar with the pattern concept, you will be able to originate your own patterns, which will serve you well in the future. One of the most valuable contributions of this book is that it is designed not merely to help you identify patterns, but to give you a sense of which patterns are appropriate in which contexts.



Pin It Now!
 
//PART 2