¿Qué libros / actividades / ejercicios sentarían una base sólida de informática para un programador autodidacta?

Por lo general, le digo a la gente que comience con JavaScript, pero voy a romper con eso aquí. En cambio, haré que comiences con C #.

Por qué: porque C # es un lenguaje poderoso con el que puedes hacer mucho, desde el desarrollo web hasta el desarrollo de juegos y casi todo lo demás. También es un lenguaje orientado a objetos clásico, y la programación orientada a objetos es algo muy importante para aprender.

Por lo tanto, puede comenzar descargando Visual Studio 2013 Community Edition, que es completo y gratuito. Además, posiblemente el mejor IDE del mundo.

A continuación, tome una copia de Pro C # 5.0 y .Net 4.5 Framework. Puede obtener una copia aquí: Pro C # 5.0 y .NET 4.5 Framework (Expert’s Voice en .NET): Andrew Troelsen: 9781430242338: Amazon.com: Libros

Ese es un tomo de 1500 páginas que probablemente tomará meses para trabajar. No olvide detenerse con frecuencia para crear proyectos propios, además de crear los tutoriales incluidos. Los tutoriales por sí solos no te enseñarán a codificar, también debes crear tus propias cosas.

Después de eso, ve y echa un vistazo a Head First Design Patterns para una introducción al diseño del programa: Head First Design Patterns: Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson: 9780596007126: Amazon.com: Libros

Ya estás en camino, pero necesitarás aprender algo de diseño de algoritmos. Pruebe este: Manual de diseño del algoritmo: Steven S Skiena: 9781848000698: Amazon.com: Libros

Ahora, la desventaja de los patrones de diseño y los libros de algoritmos es que ambos están escritos para Java. Eso está bien, y C # y Java son en realidad muy similares. Podrías intentar usar solo Java para todo esto, pero no conozco un libro de Java tan bueno como Pro C # (eso no quiere decir que no haya ninguno) y probablemente sea bueno aprender un par de idiomas de todos modos.

La programación es solo una cuestión de práctica.

Para tener buenas habilidades de programación solo necesita conocer los conceptos básicos de cada idioma y luego está listo para asumir grandes desafíos.

Libros:
Permítanos C: un gran libro para principiantes
Para otros idiomas, simplemente elija el que desee (hay muchas opciones disponibles)

Sitios: para practicar y resolver diferentes problemas.
Tomar cursos de coursera.
Rango de hacker
Codechef

Esto debería ayudar.

Estoy hablando por experiencia personal: PRÁCTICA DIARIA.
Comprométete a completar tu Gráfico de GitHub, y no dejes pasar un solo día sin un compromiso, aumentará tus habilidades porque siempre tendrás que encontrar algo nuevo que hacer si no tienes un proyecto actual.
Encuentre un libro en un tema de su interés, como Patrones de diseño de Erich Gama et Al. y pon los ejercicios en tu propio código.

Matemáticas concretas: fundamentos para la informática por Donald Knuth y otros.
También me encontré con este canal de YouTube llamado Computerphile ayer. El canal no solo cubre algunos conceptos de programación, sino también una amplia variedad de temas en CS. También es un canal obligatorio para todos los entusiastas y practicantes de CS.

Yo diría que comience con algo de C, sienta el dolor de trabajar con la memoria directamente, luego salte a un lenguaje administrado como C # o Ruby. Pruébelo en diferentes áreas: desarrollo web, aplicaciones de escritorio, aplicaciones móviles, gamedev para sentir cuál es realmente su pasión, luego busque en Google la tecnología más adecuada para eso y cambie a eso.

El mejor libro para comenzar es Head First C. Si quieres ser un buen programador, apégate a él. Acerca de los cursos en la red … Puede ir con el programa edx CS50. bien saber curso para principiantes.