¿Son las estructuras de datos y los requisitos previos de algoritmos para la arquitectura y organización de computadoras en un curso típico de CS? Estoy aprendiendo por mi cuenta, ¿cuál debería aprender primero? ¿Puedo aprenderlos en paralelo?

Solíamos bromear sobre los manuales de sistemas e internos para el sistema operativo DEC VAX VMS: para leer y comprender cualquiera de ellos, tenía que haber leído y entendido previamente todo el resto. Para obtener el máximo valor de las estructuras de datos y las arquitecturas, encuentra el mismo tipo de relación: cuanto más entienda uno, más PUEDE entender el otro.

Comprender las estructuras de datos y los algoritmos, si se toma en un nivel abstracto, en realidad no requiere que comprenda cómo las computadoras están organizadas y diseñadas. Mientras tenga la noción de que hay memoria y de que las ubicaciones en la memoria tienen direcciones, no puedo pensar en nada fuera de lugar donde necesite una vista más profunda.

Del mismo modo, comprender la arquitectura y la organización no requiere un conocimiento más profundo de las estructuras de datos y algoritmos, si se mantiene por encima de un cierto nivel de detalle. La mayoría de los cursos de introducción no lo llevan al diseño de procesadores multi-core; tienes suficiente en tus manos razonando sobre cómo funcionan las cosas en un entorno de un solo subproceso.

Sin embargo, una vez que se sumerge en la arquitectura y la organización, descubre que su visión abstracta de las estructuras de datos deja mucho en la mesa en términos de optimizaciones: las fallas de caché, por ejemplo, pueden convertirse en un gran problema; El uso de funciones de hardware especializadas a menudo se basa en elecciones específicas de la estructura de datos que luego impulsa la elección del algoritmo.

Comencé a construir hardware, y tuve que aprender a programar el hardware que había construido, llevándome a un punto de vista diferente al de muchos de mis colegas que llegaron a la informática desde un fondo más complejo. Siempre me gusta saber cómo y por qué del nivel más bajo posible antes de que la abstracción tenga sentido para mí, por lo que mi sesgo sería aprender más arquitectura y organización, e incluso programación en lenguaje ensamblador, antes de adentrarme en los temas más avanzados en estructuras de datos y algoritmos

Si lo hace, su código generalmente será mucho más eficaz que el de aquellos que abstraen los detalles.

Sin embargo, sin una comprensión básica de las estructuras de datos simples (estructuras, matrices y matrices, listas vinculadas), su código en el nivel de hardware no podrá hacer mucho.

Casi cualquier curso puede convertirse en un requisito previo para otro curso; Casi cualquier requisito previo puede ser eliminado. Por lo tanto, depende mucho del curso particular que el instructor de arquitectura quiera para cada uno. En realidad, hay varias estructuras de datos que se muestran en arquitecturas en diferentes niveles de abstracción (desde cachés hasta TLB y recolectores de basura). Pero tienden a ser algo simples, porque generalmente no puedes / no haces cosas muy complejas en niveles bajos. Pero estos no requieren un curso completo de algoritmos de nivel superior para entender; en Brown, hacemos alrededor de un semestre de algoritmos y big-O en el primer año, y eso es más que suficiente para la mayoría de los cursos de arquitectura.

Sugeriría estudiar primero los algoritmos básicos (búsqueda, clasificación). He visto algunos de los conceptos que aplican esos algoritmos, pero no son tan necesarios y se pueden aprender según las necesidades.

Si puede administrar, entonces puede aprender en paralelo. No es un requisito previo necesario por lo que dice mi experiencia.

Salud.

¡No! no necesita estructura de datos y algoritmo para CAO. se trata más del sistema cómo funciona.