Recommended Books

One important thing: if you stop studying you will end up being obsolete. Always learn new things for yourself, not for your grades. This is perfectly explained in the book "The Clean Coder: A Code of Conduct for Professional Programmers", one of the best books you can read for your profession.

The following is a list of books that students asked me to write in my courses. It comprises a series of books that I've found useful or interesting, and so I recommend reading for your own personal and professional interest.


  • Cracking the Coding Interview, by Gayle L. McDowell
  • The Clean Coder: A Code of Conduct for Professional Programmers, by Robert C. Martin


  • The Algorithm Design Manual, by Steven S. Skiena
  • Advanced Data Structures, by Peter Brass
  • Numerical Recipes (The Art of Scientific Computing), by W. H. Press, et al.
  • Fundamentals of Computer Graphics, by Marschner et al.
  • Foundations of Multidimensional and Metric Data Structures, by Hanan Samet
  • Game Engine Architecture, by Jason Gregory
  • Handbook of Data Compression, by David Salomon and Giovanni Motta
  • The Finite Element Method Linear Static and Dynamic Finite Element Analysis, Thomas J. R. Hughes
  • Physically Based Rendering: From Theory to Implementation, by Matt Pharr, Wenzel Jakob, and Greg Humphreys


  • The C++ Programming Language, by Bjarne Stroustrup
  • The C Programming Language, by Brian W. Kernighan, and Dennis M. Ritchie
  • Effective Modern C++, by Scott Meyers (and all of his books)
  • Thinking Functionally with Haskell, by by Richard Bird
  • Programming Massively Parallel Processors: A Hands-on Approach, by David B. Kirk, and Wen-mei W. Hwu


  • The Intel Microprocessors, by Barry B. Brey
  • Inside the Machine, by Jon Stokes
  • Introduction to 80x86 Assembly Language and Computer Architecture, by Richard C. Detmer
  • Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX, by Daniel Kusswurm
  • ARM Assembly Language: Fundamentals and Techniques, by William Hohl and Christopher Hinds


  • Don't Make Me Think, Revisited, by Steve Krug
  • UX Strategy: How to Devise Innovative Digital Products that People Want, by Jaime Levy
  • The Non-Designer's Design Book, by Robin Williams
  • The Elements of Typographic Style, by Robert Bringhurst
  • Thinking with Type: A Critical Guide for Designers, Writers, Editors, & Students, by Ellen Lupton