Updates
Latest Tweet
What's New?
Check out for latest innovation, a computer based training video collection
Like this Page
Algorithms & Data Structures: The Science Of Computing (Electrical and Computer Engineering Series) Review by ART SEDIGHI
A good mix of programming and algorithms design
Algorithm and Algorithm design is a difficult topic to talk about or to learn. It is probably one of the most complex topics in the field of Computer Science and Mathematics, mostly due to its abstractness. Proof after proof, theory after theory, and complex mathematical expressions make the topic very difficult to grasp at times. The authors of Algorithms and Data Structures have taken this notion into account, and wrote this book in such a way that a Computer Science major student can relate popular programming and problems that we come across everyday to the notion of algorithm and complexity. The Java programming language is utilizes throughout the book, and the authors, D. Bladwin and G. W. Scragg, write pseudo-Java-code to demonstrate how, for example, various versions of the quicksort algorithm are coded. Programming is obviously not the focus of this book, but the code snippets are certainly a good teaching aid for the novice readers.
The book starts off with the basic ground work surrounding algorithms: what is a proof? Computer Science, Mathematics and theory, etc.. It basically answers the question why anyone should bother learning about algorithms and the complexity that surrounds this topic. The authors then take a rather unique approach to the theory behind algorithms by discussing program recursion and iteration. It seems a little odd, but it turns out to be a very good way to introduce readers to topic algorithms. Recursions is a topic covered in CS1 courses, and using that as the basis and introduction to algorithm design and correctness proof really reels in the reader and makes the topic easier to grasp.
After discussing algorithms basics, and showing the readers what algorithm efficiency, etc is, the authors take on the second part of the book which covers the data structures aspects of things. List, Queues, Stacks, Trees, etc... are all covered in detail. Algorithms that were discussed earlier in the text are applied to the data structures, and the complexity of each algorithm is actually depicted thru examples, pseudocode, and followed by its mathematical analysis. The text, in general, is focused around the concept of objects, abstract data types, and core object orientation techniques, and the presented material is targeted as such.
Towards the end of the text, the authors give the readers a brief but concise overview what's to come. Topics such as complexity, the undecideability, nondeterminism and the surrounding problems such as the HALTing problem, the Traveling Salesman Problem, etc... are touched. The authors pose some very interesting questions for the readers in the context of the HALTing problem as it pertains to complier design. These problems in their general form are unsolvable, and the authors make a very good case on why we care about such problems and issues.
In addition to being a very easy text read, the authors have filled each chapter with sample problems, examples, and techniques. For the second year computer science student, or a professional interested in the field of algorithm design and complexity analysis, I highly recommend reading this text.