¿Debo aprender a diseñar estructuras de datos antes de aprender sobre algoritmos?

Enfáticamente sí. Primero los diseña y luego los completa y manipula los resultados. Si intentas hacer ambas cosas a la vez, surgen muchos baches profundos.

En el mundo real, la mayoría de las estructuras de datos ya están en su lugar y pobladas. Esto impide comprender por qué una serie de problemas complicados han sido abordados y resueltos de manera aparentemente arbitraria o incluso incorrecta.

Considere que las bases de datos tienen que ser ajustadas. Eso no parece lógico. Ya has creado una estructura lógicamente correcta, una joya que brilla. Luego intenta modelar patrones probables de uso. Después de eso, intenta cuantificar la frecuencia de uso de los diferentes patrones. En ese punto, debe volver a su arquitectura original y comenzar a hacer trampa en aras de los requisitos de rendimiento necesarios. Es hora de hacer algunas cosas “erróneamente” o en aras de un rendimiento aceptable.

No hay forma de entender la aplicación de algoritmos sin saber cómo las bases de datos / conjuntos de datos del mundo real se han visto obligados a evolucionar y por qué muchos de sus errores son, en verdad, características.

Otro factor que debe tener en cuenta es que la mayoría de las bases de datos están “sucias”, llenas de información que puede haber sido cierta hace 5 años y que ahora no lo es. La mayoría de estas descripciones heredadas son inofensivas. Este es un hecho de la vida con el que muchos de los usuarios de palabras como “algoritmo” tienen dificultades para vivir.

Ahora si saltas a escribir algoritmos para tratar sin un buen conocimiento de todos los datos sucios que infestan los archivos. Sus perspectivas a corto plazo son buenas, pero sus perspectivas a largo plazo no lo son.

Por lo tanto, debe salpicar realmente en los grupos de datos ya creados que ya están en uso antes de poder confiar en sus algoritmos bastante correctos. Construir las estructuras de datos primero oculta el mundo real de forma segura. Recuerde, algo así como el 80% del trabajo de TI es mantenimiento y refactorización (mantenimiento con clase).

Perdón por la queja, pero la práctica más actual es como enseñar mecánica automotriz con autos nuevos

En lo que respecta a mi experiencia, tanto desde la escuela como desde el trabajo, los algoritmos y las estructuras de datos están vinculados.

Aplica algoritmos (soluciones conocidas a los problemas) en los datos. No debería importarle si los datos son de un tipo primitivo (número, cadena) o de un tipo complejo (objetos, mapas hash, matrices) siempre que su algoritmo funcione para entradas de ese tipo de datos y después de ejecutarlo, obtenga un solución.

Por ejemplo, aprenderá mucho sobre estructuras de datos en forma de árbol cuando trabaje con algoritmos de búsqueda de profundidad y amplitud.

En conclusión, van de la mano y se deben aprender juntos.

En el programa de pregrado CS, el primer curso está relacionado con enseñar a los estudiantes “¿cómo pensar algorítmicamente?” Luego, se dan algunos ejemplos como “¿Cómo hornear un pastel?”. Esto puede parecer una pregunta básica. Un algoritmo para esta pregunta sería una receta. Si no aplica los pasos en la receta correcta, probablemente no hornee un pastel. Le aconsejo que conozca los algoritmos antes de las estructuras de datos porque no queremos que tenga hambre.