Compré los algoritmos y estructuras de datos de Lafore en Java y los algoritmos de Cormen desbloqueados con la misma idea que tenía. Traté de leer la Introducción a los algoritmos de Cormen (CLRS) o los Algoritmos de Sedgewick y pensé que estaban muy avanzados para mí.
Tenía 2 meses desde que comencé a programar y no sabía cómo manipular un String.
Luego, tomé el curso de Algoritmo Toolbox de Coursera (U California) y la investigación que tuve que hacer para resolver las tareas me dio un salto en mis habilidades de programación. Al principio encontré mis libros buenos, pero luego me faltó la información que necesitaba.
- Cómo resolver el problema 'Eliminar la cadena' (PSTRING) en SPOJ
- ¿Cómo puede el paralelismo mejorar el algoritmo de fuerza bruta?
- ¿Soy un mal programador si no puedo entender Towers of Hanoi?
- ¿Cuál es la diferencia entre la mochila y los problemas de Cutting the Rod usando programación dinámica?
- ¿Cómo se pueden condensar hipergrafías construidas para problemas de flujo de red que implican minimizar el tiempo necesario para impulsar el flujo desde la fuente al sumidero?
En la última semana del curso estaba leyendo CLRS.
Tuve que cubrir toda la lección de Algoritmos en la Academia Khan para entender la notación matemática (como la notación Big O o Set Theory).
A veces sentí que debería haber tomado el curso un poco más tarde. Solo conocía las matrices y estaba aprendiendo cómo funcionan las colas, las pilas, los conjuntos y los árboles o cómo implementar mi propia clasificación rápida (no sabía que ya existía un método de clasificación).
Quizás no saber mucho me ayudó a trabajar más duro. Fue un curso muy desafiante, sentí muchas veces la necesidad de rendirme, pero afortunadamente no lo hice.
Ahora tengo 6 meses desde que comencé a aprender y ahora estoy cubriendo un curso completo de programación (bucles, OOP y las bibliotecas de Java), pero me siento más cómodo gracias a lo que he aprendido.