Aquí hay una pista: si colgó en sus libros de texto de su curso “Estructuras de datos y algoritmos” (lo hice), a menudo tendrán referencias a documentos que profundizarán en los temas que cubren los libros de texto. Uno de los míos tiene una bibliografía completa al final, mientras que otro tiene una sección de “Referencias y lecturas seleccionadas” al final de cada capítulo. Esto lo ayudará a “profundizar” en áreas que merecen más estudio.
Tampoco descuides los brazos de investigación de las principales empresas, como Google y Microsoft, para algunos de los últimos trabajos.
Dicho esto, aquí hay algunos clásicos con los que querrás estar familiarizado:
- Me estoy graduando de un campo de entrenamiento de codificación, pero nunca he tomado una clase de CS. ¿Qué pasantías puedo solicitar este verano?
- Cómo agregar números hexadecimales
- ¿Qué es el caché obsoleto?
- Sistemas distribuidos: ¿Cuáles son algunas diferencias clave entre el modelo de actores y el paralelo síncrono masivo?
- ¿Cuál era el objetivo de las Apple 1 y 2 cuando estaban siendo diseñadas?
“Sobre números computables, con una aplicación al problema Entscheidungs”, Alan Turing. La base de la informática en sí, incluida la definición de la máquina de Turing.
“Una teoría matemática de la comunicación”, Claude Shannon. Los fundamentos de la teoría de la información, una base importante para la compresión de datos y la criptografía.
“Lo que todo informático debe saber sobre la aritmética de coma flotante”, David Goldberg. Todo lo que siempre quiso saber sobre coma flotante, pero tuvo miedo de preguntar. Crítico para comprender las limitaciones de las representaciones de punto flotante, o por qué a veces necesita cosas como las clases BigInteger y BigDecimal de Java.
“Reducibilidad entre problemas combinatorios”, Richard Karp. La lista original de problemas NP-completos.
“Reflexiones sobre la confianza en la confianza”, Ken Thompson. No está estrictamente relacionado con el algoritmo, pero proporciona una idea de la seguridad que todos debemos tener en cuenta.
“Funciones recursivas de expresiones simbólicas y su cálculo por máquina, parte I”, John McCarthy. El documento fundamental sobre LISP, que fue el primer lenguaje de programación funcional importante.
“Un método para obtener firmas digitales y criptosistemas de clave pública”, Rivest, Shamir y Adleman. La descripción del algoritmo de clave pública RSA, aún importante en seguridad.
A veces, trabajar con un código te llevará a una referencia interesante. Fue un código en una biblioteca de asignación de montón que me señaló los “árboles rojo-negros inclinados a la izquierda” de Robert Sedgwick (enlace PDF). Esto describe la implementación de una estructura de datos útil que se encuentra en muchos lugares.
Y, si desea implementar alguno de los algoritmos descritos en estos documentos, lea Cómo implementar un algoritmo de un artículo científico. Esto tiene consejos prácticos para convertir todas esas ideas en código.
Referencia: ¿Qué documentos deberían leer todos?
Punta de sombrero: Michael Hayter para el A2A.