Si tiene problemas con los cursos en línea como el de Coursera que señaló, comience con algo más simple primero.
Mi filosofía para progresar, no solo en la programación, sino en general, es tener unos fundamentos muy fuertes primero y luego progresar abordando los problemas ligeramente por encima de sus habilidades actuales (más sobre este factor en la respuesta de Pawel Kacprzak a ¿Cuál es el ¿Cuál es la mejor técnica de entrenamiento de programación competitiva? Sé que se trata de resolver MUCHOS problemas, pero, ¿es solo eso? ¿O tengo que resolverlos sistemáticamente y de cierta manera para que mi rendimiento pueda mejorar rápidamente?).
La combinación de los dos factores anteriores me funciona muy bien, al menos en programación, baloncesto y ejercicio.
- ¿Cómo se calcula el PageRank? ¿Cuál fue el PageRank inicial? ¿Cómo comienza el algoritmo?
- ¿Cuál es la diferencia entre un algoritmo y una fórmula?
- ¿Qué algoritmo de compresión de imagen se usa en WhatsApp?
- ¿Cuántos niveles habrá en un árbol completamente binario si tiene n número de nodos?
- ¿Cómo se implementa una cadena de bloques en el código?
Fundamentos fuertes
Si no ha trabajado, solo leer no cuenta aquí, con libros sobre algoritmos todavía, le recomiendo el Manual de diseño de algoritmos de Steven Skiena , en combinación con su sitio web conectado a él, con muchos recursos útiles: Manual de diseño de algoritmos
Cubre todas las ideas y técnicas básicas y es excepcionalmente fácil de leer por alguien que acaba de comenzar con algoritmos.
Problemas de tachuelas
Primero, debes saber cuál es tu habilidad actual. Si aún no lo sabe, vaya a TopCoder o Codeforces y comience a resolver problemas de los más fáciles disponibles (Div 2 250 para TopCoder y Div2 A para Codeforces) y deténgase cuando encuentre un problema para el que no puede encontrar una solución en como 15 minutos El primer problema debería representar la clase de problemas en los que debería trabajar ahora.
Recomiendo dedicar algo de tiempo a resolver este problema, opcionalmente con editoriales, que están disponibles en cada sitio como TopCoder, Codeforces, etc. Intente hacer esto constantemente, por ejemplo, 2-3 problemas por día durante 2-3 semanas.
Luego, vuelva a medir su habilidad actual con el método proporcionado anteriormente, pero con problemas más difíciles e repita todo el proceso hasta que esté satisfecho con el resultado o simplemente para siempre.