Saturday, June 29, 2013

Review: Engines of Logic: Mathematicians and the Origin of the Computer

Review: Engines of Logic: Mathematicians and the Origin of the Computer


Engines of Logic: Mathematicians and the Origin of the Computer

Posted:

Engines of Logic: Mathematicians and the Origin of the Computer (Paperback)
By Martin Davis



Pin It Now!

Friday, June 28, 2013

Review: Introduction to the Theory of Computation

Review: Introduction to the Theory of Computation


Introduction to the Theory of Computation

Posted:

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

Summary of this review: You'll find yourself getting interested in, and understanding, concepts, very easily, but if you're an advanced reader you'll often find (at the end of the chapters) that the more advanced topics/problems have been glossed over.

If this is your assigned course textbook, you're lucky. If this is NOT your assigned textbook, USE it as your guide. It makes topics simpler and more intuitive. The way Sipser ropes down exotic theorems into straightforward, understandable logic is almost magical. The book scores in most areas: smoothness of flow, ease of understanding, order of presentation, motivational cues, and thoroughness in the areas covered.

The problem with the book is in the number of topics covered, and in the number of examples. There are not sufficient examples in some cases, and not sufficient material in some cases. This is a small textbook. At the end of each chapter, Sipser often glosses over the more advanced issues. If doing a thorough study, one will frequently need a more complete reference.

This will, of course, not be a problem if your course does not go beyond what is covered here: Finite Automata, Turing Machines, the relationship between the classes of languages, reducibility, and complexity theory.



Pin It Now!

Thursday, June 27, 2013

Review: Compilers: Principles, Techniques, and Tools

Review: Compilers: Principles, Techniques, and Tools


Compilers: Principles, Techniques, and Tools

Posted:

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

Aho, Ullman et. al's "Compilers" is a fantastic book and well worth studying for all computer programmers - implementing a compiler compiler will yield tangental benefits to anyone who writes programs for a living or for fun.

However, the Amazon Kindle edition of this book is *awful*. First and foremost, I discovered at least one error in an algorithm that is not present in the standard edition that causes the book's proposed algorithms to be incorrect (in this case, it was algorithm 4.31 - in step 1, you should compute FIRST(alpha), not FIRST(A).)

On top of that, there are spacing issues and font issues throughout the book. It appears that in many places where the standard edition had a word separated across lines, the Kindle edition merely has that word split in two with a space between its halves. Worse, the font choice used to typeset algorithms doesn't easily distinguish many greek lowercase letters from their modern English equivalents, the result being that it is fiendishly difficult to understand some algorithms (the book uses greek letters to indicate a 'sentential form', so they appear a *lot* and tend to be right next to their modern equivalents.)

In other words, I would give Compilers (the Standard edition) a 5/5 (or maybe a 4/5 - it could stand to use a bit more real-world code), but this Kindle edition is rubbish and you SHOULD NOT BUY.


Pin It Now!

Wednesday, June 26, 2013

Review: Higher-Order Perl: Transforming Programs with Programs

Review: 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!

Tuesday, June 25, 2013

Review: How to Prove It: A Structured Approach

Review: How to Prove It: A Structured Approach


How to Prove It: A Structured Approach

Posted:

How to Prove It: A Structured Approach (Paperback)
By Daniel J. Velleman

This is it folks, the best there is!

However, it could have been better. I bought the book almost 10 years ago. I am a secondary ed. math teacher and when I left college I was quite upset with myself that I had this fancy math degree and couldn't prove anything. I picked up this book and today I'm working on my PhD in mathematics! This book inspired me to that.

First - What's wrong with the book. Not that there really is anything wrong with the book. I have attempted this book 3 times. I admit, the first two times I stalled (1997 - 2001) when I got to page 119. For some reason I couldn't grip those concepts such as intersecting families, etc. The preface of the book says only high school mathematics is required - that is just flat out wrong. This book is more for undergrads and maybe older fossils like me that have delved into mathematics a bit more than average. Also, like all the other reviews, there is too many exercises with no solutions. What really threw me with that is I didn't know if I was setting the written argument up properly. Sure, on the one hand, it's better to NOT have answers so you strive like a mad person to find them. Yet, it's so frustrating to not know if you did something right. The best approach is to do your best I suppose. After the third try (2004 & 2005) I finally completed the book on my own volition and I'm assuming most of my content is correct.

Velleman describes math so well that I honestly admit, I have a full repetoire of tactics to use to solve mathematical proofs. I don't have the confidence to toy with the big boys yet, like correcting a 49 page proof pertaining to the 'Twin Prime Conjecture' ... but it is SO NICE to UNDERSTAND the arguments!
...


Pin It Now!

Monday, June 24, 2013

Review: Introduction to Algorithms

Review: Introduction to Algorithms


Introduction to Algorithms

Posted:

Introduction to Algorithms (Hardcover)
By Thomas H. Cormen

First of all, this is the quintessential book on algorithms. If you want to learn, this is the book to get. The information in the book is awesome and it can make an excellent reference.

Students will need a very strong mathematical background and a strong arm to even think about picking up this book because the it is heavy (both physically and metaphorically). Mastery of discrete math is a must, graph theory, programming, and, combinatorics will also help.

With that said, this book falls short in one MAJOR area, explanations. Too often explanations are left out and left as exercises and there are no solutions to the exercises! Or details are replaced by ambiguous statements such as of "cleary, this works", or "it is easy to see that this ...". I get the concept of learning by doing, really I do, but there should be some kind of solutions so the student can CHECK his/her understanding of the material and sometimes the exercises are not about advanced aspects of a concept, sometimes it is the core material. Even if the solution manual only contained a simple answer without the work. Not only would it help tremendously but the purpose of doing the exercises would be preserved; that is the student getting his/her "hands dirty" and working out a problem.

For the love everything good and pure in this universe, I really wish writers of mathematical books would stop using statements like "clearly this works" or "it is easy to see", "it is obvious" etc. While that may be true for you and your brilliant circle of colleagues, everything is not always clear and obvious to your readers. Save all of that ambiguity for your research paper.

A great book should deliver in two areas; it should challenge and it should inform. The challenge is there, no doubt.
...


Pin It Now!

Sunday, June 23, 2013

Review: Introduction to Algorithms

Review: Introduction to Algorithms


Introduction to Algorithms

Posted:

Introduction to Algorithms (Hardcover)
By Thomas H. Cormen

First of all, this is the quintessential book on algorithms. If you want to learn, this is the book to get. The information in the book is awesome and it can make an excellent reference.

Students will need a very strong mathematical background and a strong arm to even think about picking up this book because the it is heavy (both physically and metaphorically). Mastery of discrete math is a must, graph theory, programming, and, combinatorics will also help.

With that said, this book falls short in one MAJOR area, explanations. Too often explanations are left out and left as exercises and there are no solutions to the exercises! Or details are replaced by ambiguous statements such as of "cleary, this works", or "it is easy to see that this ...". I get the concept of learning by doing, really I do, but there should be some kind of solutions so the student can CHECK his/her understanding of the material and sometimes the exercises are not about advanced aspects of a concept, sometimes it is the core material. Even if the solution manual only contained a simple answer without the work. Not only would it help tremendously but the purpose of doing the exercises would be preserved; that is the student getting his/her "hands dirty" and working out a problem.

For the love everything good and pure in this universe, I really wish writers of mathematical books would stop using statements like "clearly this works" or "it is easy to see", "it is obvious" etc. While that may be true for you and your brilliant circle of colleagues, everything is not always clear and obvious to your readers. Save all of that ambiguity for your research paper.

A great book should deliver in two areas; it should challenge and it should inform. The challenge is there, no doubt.
...


Pin It Now!

Saturday, June 22, 2013

Review: Information Theory, Inference and Learning Algorithms

Review: Information Theory, Inference and Learning Algorithms


Information Theory, Inference and Learning Algorithms

Posted:

Information Theory, Inference and Learning Algorithms (Hardcover)
By David J. C. MacKay

Uniting information theory and inference in an interactive and entertaining way, this book has been a constant source of inspiration, intuition and insight for me. It is packed full of stuff - its contents appear to grow the more I look - but the layering of the material means the abundance of topics does not confuse.

This is _not_ just a book for the experts. However, you will need to think and interact when reading it. That is, after all, how you learn, and the book helps and guides you in this with many puzzles and problems.


Pin It Now!

Friday, June 21, 2013

Review: Concrete Mathematics: A Foundation for Computer Science

Review: 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

This book is perhaps one of the most beautifully written books I have ever read. All the proofs presented here are elegant. When reading the proofs in this book, you can feel that one sentence logically and smoothly follows from the previous sentence. This is partly because of the elegant and effective notations adopted by the authors. [Note: Donald Knuth, one of the authors, has been one of the biggest proponents of good mathematical notations. See his book titled "Mathematical Writing".]

Other reviewers have provided a summary of this book. So, I will only say that every computer scientist and combinatorialist should read at least chapters 1, 2, 5, 7, and 9. Chapter 5 is very highly recommended. Trust me: once you have mastered these chapters, you will be able to do things your colleagues just can't. Even just familiarizing yourself with the notations in this book will help you produce proofs that you probably won't be able to otherwise. [Great ideas are of course always important in every proof - but without good notations, you probably won't be able to come up with the ideas in the first place.]

There is pretty much nothing bad about this book that I am aware of. I will just say though that it takes a lot of time and effort to acquire mastery of the material. As for my own story, I started reading chapter 1 and 2 when I just got interested in discrete mathematics. It took me about 1/2 year (part time) to get through this. I came back to this book again when I took a course on "generatingfunctionology". I found that chapter 5 and 7 were indispensable. I was also forced to reread chapter 2 again because the lecturer, as most people do, just waived his hands when it comes to manipulating sums and binomial coefficients.
...


Pin It Now!

Thursday, June 20, 2013

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

Review: 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

These books are indisputably classics of the field, and like all classics they have religious adherents and equally firm detractors. The key difference between the two groups is that the adherents are interested in computer SCIENCE, whereas the rest are more taken with computer programming. The books are well written, quite mathematical, and abstract. The books deal with the core subjects of computer science and shy away from the trendy, and so some people tend to see them as anachronistic. Nevertheless, they are deservedly core references in computer science, and a joy for any patient, theoretically minded reader. There are three points I believe should be made. 1) a lot of the detractors of the books are saying correct things: the books don't deal with hot topics, they do present things in greater detail than is necessary in day to day programming, they are books they require a lot of the reader. What they don't recognize is that this is the intention, and that there is nothing wrong with that. The book is targeted at those with a geniune interest in theoretical computer science. 2) many reviewers complain about Knuth's typesetting system, TeX. What they fail to recognize is that TeX is incredibly useful, and about as user friendly as could be expected, for the task for which it was designed: typesetting professional quality mathematics. Anyone who challenges this statement would have to contend with virtually the entire community of people who write papers using higher mathematics, including virtually all professional physicists, mathematicians, and computer scientists. 3) some people accuse Knuth's books of being poorly written. These people are ignorant: either they have not read the works, or they would not recognize skillful writing if they saw it....


Pin It Now!

Wednesday, June 19, 2013

Review: Engines of Logic: Mathematicians and the Origin of the Computer

Review: Engines of Logic: Mathematicians and the Origin of the Computer


Engines of Logic: Mathematicians and the Origin of the Computer

Posted:

Engines of Logic: Mathematicians and the Origin of the Computer (Paperback)
By Martin Davis

It may be initially hard to connect Leibniz's series or George Cantor's quest for infinite numbers to the modern computer, but Dr. Davis does a masterful job of showing this logical progression. The progression continues to Godel and Turing, and from Turing to the modern computer.

Combining clear discussions of mathematical concepts with short biographical sketches, the intensity of some of these logical debates becomes clear. For the 20th century figures, Davis offers first hand accounts, such as seeing Godel and Einstein walking together at Princeton (and this picture is included in the book), or his own 1954 computer program of a mathematical proof.

On the question of who invented the computer, Dr. Davis sides toward Turing and the influence of Turing on von Nuemann (contrast with Herman Goldstine: the Computer from Pascal to von Neumann). Davis points out that the difference in architecture between Turing and von Nuemann is still evident today in the difference between RISC and full instruction set computers. In the final chapter, Davis debates John Searle's understanding of the mind and consciousness. I hope Davis writes a book about the logical connections after Turing. These include Maurice's Karnaugh's method of minimizing boolean expressions, Jay Forester's memory and Industrial Dynamics, and perhaps Ted Codd and C.J. Dates database thinking.



Pin It Now!

Tuesday, June 18, 2013

Review: The Linux Programmer's Toolbox

Review: The Linux Programmer's Toolbox


The Linux Programmer's Toolbox

Posted:

The Linux Programmer's Toolbox (Paperback)
By John Fusco

This book is aimed at the person who has learned his way around Linux at the user level and now wants to look under the covers. It's extremely comprehensive - from how to add a Linux application that wasn't in your your initial distribution - whether you can use the binary or need to rebuild it from source - through basic facts on the kernel, devices and their drivers, processes and debugging tools. There has been a need for a book that addresses readers who do know something about computers, but not much Linux. This book fills that need extremely well.


Pin It Now!
 
//PART 2