The Art of Computer Programming: Volume 1
by Donald Knuth
What is to be said about this book? It is a masterpiece. While it is not be read as a book, but rather as a reference, it is a must-read for any computer scientist. Once the internal workings about the MIX computer are understood, it is a great way to understand how algorithms work on a low level.
Volume 1 is the first of 5 volumes, and it covers fundamental topics such as sorting, searching, and data structures. You probably learned these topics in school, but Knuth's treatment is much deeper and more rigorous. It bridges the gap between these concepts that we learned on an abstraction layer (usually a programming language of your choice) and the actual implementation on registers and memory.
I have been reading this book for a long time, and it will probably take a long time to finish it completely. However, i dont treat this as a front to back reading experience, but rather as a collection of brilliant insights and algorithms that i can refer to whenever i need to refresh my memory or learn something new.
I would recommend this book to anyone who wants not only to become a better programmer, but a life long learner. It is not an easy read, but it is a rewarding one.