Depende de tus antecedentes. Si no tiene conocimiento previo de algoritmos, la serie de libros de Deitel & Deitel podría ser un buen punto de partida. Han escrito una serie de libros sobre lenguajes convencionales como C, C ++, Java, etc. En cada libro, enseñan desde cero y cubren no solo el lenguaje en sí, sino también algunos algoritmos básicos (búsqueda, clasificación, etc.). Esto significa que alguien con conocimientos previos incluso rudimentarios de algoritmos puede encontrar su enfoque demasiado extenso y, a veces, aburrido, por ejemplo, cuando usan páginas de texto y diagramas para explicar en detalle qué es, por ejemplo, una búsqueda binaria. Pero para un novato completo, esto podría ser exactamente lo que se necesita. También explican de manera fácil los principios básicos de la programación orientada a objetos.
Otro buen libro es “El arte de la programación de computadoras” de Knuth. Generaciones de geeks han aprendido los principios de programación de este clásico atemporal. Knuth cubre algoritmos y principios básicos de programación. Sin embargo, esto último se logra mediante el uso de un pseudocódigo de bajo nivel (al estilo ensamblador, pero no orientado a ninguna arquitectura específica). Este libro no le enseñará cómo programar un juego de inmediato, pero le dará una base sólida para escribir programas en cualquier idioma, de alto o bajo nivel. Sin embargo, no le enseñará programación orientada a objetos.