
This textbook, for second- or third-year students of computer science, presents insights, notations, and analogies to help them describe and think about algorithms like an expert, without grinding through lots of formal proof. Solutions to many problems are provided to let students check their progress, while class-tested PowerPoint slides are on the web for anyone running the course. By looking at both the big picture and easy step-by-step methods for developing algorithms, the author guides students around the common pitfalls. He stresses paradigms such as loop invariants and recursion to unify a huge range of algorithms into a few meta-algorithms. The book fosters a deeper understanding of how and why each algorithm works. These insights are presented in a careful and clear way, helping students to think abstractly and preparing them for creating their own innovative ways to solve problems.
How to Think About Algorithms by Jeff Edmonds.
Persuasive Programming by Jerud Mead and Anil Shinde.
* 1) Functions and Graphs and 2) The Method of Coordinates by I.M.Gelfand et. al. - These give you the basics on functions and how to visualize them which is crucial for understanding.
* Introductory Logic and Sets for Computer Scientists by Nimal Nissanke - Nice succinct introduction to various required topics for Comp. Sci.
* Compared To What?: Introduction to the Analysis of Algorithms by Gregory Rawlins - This is a classic book which takes you by hand and walks you through Algorithm Analysis and the reqd. mathematics. You will find this more approachable than most other text books and well worth a study.
* How to Think about Algorithms by Jeff Edmonds - Practical techniques without too much mathematical formalism.
* Data Structure Techniques by Thomas Standish - A Classic text; good adjunct to more modern texts.
* Advanced Data Structures by Peter Brass - Nice succinct text but not necessarily "advanced".
One final point; try to get a Algorithms and Data Structures book with code in the language with which you are most familiar. That way you understand the mapping from "Abstract Algorithm" to "Concrete Language Implementation" which is not always trivial.
1) Data Structures and Program Design in C by Kruse, Leung and Tondo.
2) Algorithms in C (Parts1-4 and Part5 two-volume set) by Robert Sedgewick.
3) Compared to What? An Introduction to the Analysis of Algorithms by Gregory Rawlins.
4) How to think about Algorithms by Jeff Edmonds.
5) Advanced Data Structures by Peter Brass.
Finally, study the ideas, concepts and techniques behind the C++ STL library to see how to design Data Structures and Algorithms in a clean and independent manner and yet can couple them as reqd. in myriad ways for actual usage.
If you don't like standard textbook treatments like CLRS, you might like these: Introduction to Algorithms - A Creative Approach by Udi Manber (out of print but worth getting). Algorithm Design by Klein and Tardos. How to Think About Algorithms by Jeff Edmonds. Jeff Erickson's lecture notes on algorithms: http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/
Jon Bentley's Programming Pearls is about what I'd call algorithm engineering. The algorithms are never anything fancy but it's a good example of algorithms applied to real-world problems. It's possibly the best single book on programming I know. Make sure to do all the exercises.
It takes you through all the relevant mathematics required to learn about basics of CS based topics you are looking for (algorithms, proofs and other practical applications).
It also acts as a good primer for learning basic Computer Algorithms. The USP of book is it's noob friendly and I think perfectly suited to your needs.
Check it out here: http://www.amazon.com/Think-About-Algorithms-Jeff-Edmonds/dp...
