My book (Essentials of Metaheuristics) officially in paperback
cs.gmu.edu
cs.gmu.edu
Last year I put out this book as a free open text, and posted about it on HackerNews. I was asked, often when the book would be out in physical form.
Now that it's available on Amazon officially (and also Lulu), I guess I can announce it. Thanks to everyone for all your feedback, corrections, and updates so far.
In case you're wondering what a metaheuristic is: it's the buzzword for stochastic optimization methods such as genetic algorithms, ant colony optimization, simulated annealing, and so on.
P.S. I took your CS 101 in '07 :)
P.S. To people on HN. Sean has a pretty nice LISP tutorial. I've actually recommended it to friends to get them using LISP quickly. http://www.cs.gmu.edu/~sean/lisp/LispTutorial.html
(And if my own experience re. price were of any interest - Kindle e-books in ~$10-$15 ballpark is what almost destroyed my budget this month:)
1. Needs More examples - Examples gives a reader different avenues for understanding the problem better. Let's say they didn't understanding Genetic Algorithm on the first go, they would be multiple opportunity to understand it with more examples. Enhancing the chance that they understand the material and recommend it to friends.
2. Give real code - Readers might not exactly get how mathematical symbols turns into code, but I think they will understand real code. You want to lower the barrier of entry to read your material. Many programmers never took Calculus I and II and most start like 12, don't limit your audience by being opaque.
3. Give readers exercise to test their knowledge - Reader should have some sign that they are understanding the material and giving exercise show them gaps in their understanding.
4. Give it a different name - Maybe "Essential AI Algorithms","Genetic Algorithms, Simulated Annealing and others" or "Optimisation Algorithm Bible", so that you wouldn't have to explain what is Metaheuristic
[/Constructive Criticism]
Yes!
Also if possible provide both imperative, maybe python, and functional, maybe haskell, examples.
1. I think the text really could use a lot more examples. And running demonstrations. Maybe for the next iteration.
2. Real code is nontrivial given the scope of the text -- but it'll please you that about two thirds of the algorithms in the text are implemented in ECJ, an evolutionary computation system I wrote which is fairly widely used. In Java though, not in Haskell. :-) I'm working towards getting everything implemented eventually.
I'm surprised about your comment regarding pseudocode: I took a lot of pains to make the pseudocode as easy for laymen and undergrads to understand and I think it's proven pretty good in that aspect.
3. Exercises are not easy to devise in this area due to the stochastic nature of the algorithms. It is a real problem.
4. Yeah, the name took a long time and a lot of thought and not just by me. There are a lot of difficulties with the names you suggested -- in fact one of the early footnotes in the text discusses exactly this issue! It doesn't google well though.
I do not agree at all with remarks about code samples, pseudo code is all the topic needs. Real code would just make things more complex (and not understandable to a reader not familiar with the programming language of choice), without much of an added benefit.
Not sure about exercises either, given the focus of the book. I really think the book is very clearly written, but I must admit I already have a somewhat decent background in the main topic.
Anyways, thanks!
Another good read which covers some of the same ground (also by a professor at George Mason University, Professor Kenneth De Jong) would be "Evolutionary Computation" http://www.amazon.com/Evolutionary-Computation-Kenneth-Jong/....
I very much appreciate placing this book online. It showed up on HackerNews right when I needed it!