If you are a computer science student, one classic book you should read is “Algorithms + data Structures = Programs“, by Niklaus Wirth (Prentice Hall, 1976). Old books you may ask – well, they are often extremely well written, and still highly relevant today. Although the examples are shown using Pascal notation, it should not take any competent programmer long to translate the code into any high-level language. The book covers five core areas:
- Fundamental Data Structures – an overview of arrays, records, and sets
- Sorting – sorting algorithms for arrays, and sequential files
- Recursive Algorithms – backtracking and classic problems including the 8-Queens, and a rationale for when *not* to use recursion.
- Dynamic Information Structures – linked lists, trees, and hashing.
- Language Structures and Compilers – the basics of compiler construction.
While Sec.5 may not be as relevant today, the remainder of the book is as relevant today, as 40 years ago when it was first published (although Wirth does provide the code for a basic compiler in 11 pages of Pascal code – which may be interesting to decipher). The section on recursion is one of the few which bypasses the traditional use of Towers of Hanoi to illustrate recursion, opting for the use of more visual algorithms such as Hilbert and Sierpinski curves.
You can find copies at most libraries, or buy a copy from Abebooks.