Esto es una continuación de mi pregunta anterior donde pregunté si es necesario aprender algoritmos y estructuras de datos. Siento que sí lo es.
Ahora trabajo en un entorno en el que nunca tendré la oportunidad de aprenderlo experimentando o prácticamente o en cualquier tarea. ¿Cuál es el enfoque correcto como los libros correctos, el tipo correcto de problemas, el tipo correcto de recursos que puedo utilizar para dar seis meses o un año o dos para aprender algoritmos y estructuras de datos? Y también moldear mi mente de manera que pueda relacionar problemas con estructuras de datos y algoritmos.
self-improvement
algorithms
data-structures
sushil bharwani
fuente
fuente
Respuestas:
Leer.
No, de verdad, lee.
Lea todo sobre algoritmo y diseño que pueda encontrar. Hay libros fenomenales por ahí. Los libros de algoritmos de Sedgewick son buenos. El Manual de diseño de algoritmos de Skiena también es bueno. Juntos, estos libros me siguen en cada estantería en cada trabajo al que voy, junto con The Mythical Man-Month.
Entonces pregunta.
Habla con las personas que respetas. Pregúnteles qué puntos de decisión tenían y por qué tomaron las decisiones que tomaron. Los buenos siempre podrán decirte "Elegí hacer X porque es mejor que A, B de esta manera. Podría haber ido con C, pero sentí que era una mejor opción debido a esto".
A continuación, hazlo.
Construye cosas. Construye cosas que nunca usarás. Construye cosas que nunca necesitarás. Ve a escribir un programa que resuelva un rompecabezas de Sudoku. Ahora ve a hacerlo de nuevo. Y otra vez. Construirlo de 5 maneras completamente diferentes. Crea un programa que genere rompecabezas de Sudoku y aliméntalo con los solucionadores. Encuentra qué solucionador es el más rápido. Y entonces...
Averigua porque.
El "qué" casi nunca es importante. Quiero decir, sí, es fundamental para terminar el proyecto en cuestión, pero al final si sabes el "qué" sin saber el "por qué", es mejor que nunca lo hayas hecho. Tienes una viñeta en tu currículum. Ve por una galleta y felicítate. El "por qué" es mucho más importante que el "qué".
Y para que conste, el Sudoku fue un ejemplo. Pasé mucho tiempo libre haciendo ese ejercicio con un montón de acertijos lógicos en Kongregate y aprendí mucho en el camino.
http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/
fuente
Algoritmos
Tomé lecciones de magia en grupo cuando tenía doce años. El nombre del mago era Joe Carota. Hizo un truco una vez y solté: "¿Cómo hiciste eso?" Dijo algo ese día que me ha quedado grabado desde entonces.
La respuesta de Joe fue: "Michael, si realmente quieres saber cómo se hace ese truco, debes descubrir cómo lo harías tú mismo".
Bueno, por supuesto, eso no era lo que quería escuchar, pero sí me concentró en la resolución de problemas. Esta fue la resolución de problemas desde mi perspectiva. Si mi primer intento de resolver el problema tomó diecisiete pasos y fue realmente desagradable, la buena noticia fue que resolví el problema.
Luego, al observar la solución que había desarrollado y buscar formas de refinar esa solución, aprendería cómo optimizar el resultado final. Más adelante en mi vida de programación de computadora descubrí que este proceso se llamaba "Refinamiento gradual". Creo que hoy lo llaman refactorización.
Funcionó entonces todavía funciona ahora.
fuente
aquí el siguiente enlace lo redirige a una de las clases de DS y Algoritmos más exitosas por MIT que he seguido.
http://academicearth.org/courses/introduction-to-algorithms
Espero que disfrutes de esta serie de videos. Buena suerte !!!
fuente
Vea si puede tomar un curso en línea o recibir tutoría. De lo contrario, esto apareció en una búsqueda rápida en Google. Acabo de tomar una clase en la primavera pasada (la primera vez, me mudé de EE al software) y no fue demasiado difícil de aprender si entiendes bien los punteros .
fuente
Si no puede tomar un curso sobre esto, le recomiendo el Manual de diseño de algoritmos. Hay un PDF gratuito aquí , pero vale la pena conseguir el libro real, si usted planea en la programación profesionalmente.
fuente
Intente inscribirse en un curso de nivel universitario en estructuras de datos y algoritmos, siempre es bueno aprender estos conceptos junto con otros.
fuente
Comience a trabajar para resolver problemas clásicos en, por ejemplo, la esfera en línea , el sitio puede no parecer tan elegante, pero vaya, estos son problemas de programación clásicos que requieren muchas de las estructuras de datos y algoritmos importantes que se utilizan en la actualidad.
Las soluciones se pueden enviar en una variedad de lenguajes de programación desde C / C ++ a JavaScript, Lisp, Smalltalk, ensamblador + unos 40 más. Por lo tanto, puede concentrarse por completo en resolver el problema con cualquier lenguaje de programación con el que se sienta cómodo.
fuente
CLRS
Este es, con mucho, mi recurso favorito. Lo utilicé en mi curso universitario de algoritmos de informática y terminé comprando el libro 4 años después para leerlo por mi cuenta y prepararme para mis cursos de MS Comp Sci. No es una lectura fácil de ninguna manera, pero si trabaja para comprender algunas de las matemáticas / pruebas presentadas y luego implementa el pseudocódigo en su (s) idioma (s) favorito (s), vale la pena el alto precio. El Manual de diseño de algoritmos que otros han mencionado también es un gran recurso para aprender a identificar problemas, pero descubrí que CLRS es mejor por puro detalle.
fuente
Siempre puedes probar algo como esto: http://codekata.pragprog.com/
Siempre aprendí mejor al pensarlo en lugar de leerlo. Sin embargo, debe tener documentación / material de lectura disponible para buscar respuestas.
fuente
¡Compre este libro , preste esto o robe esto! El resto seguirá :)
Introducción a los algoritmos de Rivest y Cormen. Será muy difícil de seguir inicialmente una vez que pase la explicación de Mergesort en la introducción. Todo se desarrolla maravillosamente.
Además, mejorará más si resuelve los problemas que figuran en el libro. Nunca quise separarme del libro, incluso después de graduarme de la escuela de posgrado. Es tan bueno
fuente