Soy un graduado que no es CS y mi campo de estudio no está relacionado con CS. Sin embargo, como parte de un plan más amplio para convertirse en un científico de la computación, quiero obtener una sólida formación en informática teórica y matemáticas en lo que se refiere a CS. Investigué mucho y seleccioné los siguientes libros mejores / realmente buenos sobre el tema de CS y matemáticas y me gustaría pedirle su opinión sobre:
- Compleción de los temas cubiertos (por favor, recomiende cualquier cosa que me haya perdido)
- Superposición de material cubierto / área de exageración (recomiende libros que deberían eliminarse de la lista)
- Orden para estudiar los libros (enumeré en el orden en que creo que deberían estudiarse)
La lista se siente excesivamente larga, por lo que agradecería las recomendaciones para eliminar algunos libros, sin la pérdida de los conocimientos básicos necesarios para CS.
Entonces, los libros son:
- El placer del matemático por WW Sawyer
- Cómo demostrarlo: un enfoque estructurado por Daniel J. Velleman
- Cómo resolverlo: un nuevo aspecto del método matemático por G. Polya
- Una introducción a la programación funcional a través del cálculo lambda por Greg Michaelson
- Fundamentos de la informática por Al Aho y Jeff Ullman (http://i.stanford.edu/~ullman/focs.html)
- Matemáticas concretas: una base para la informática por Graham, Knuth y Patashnik
- Introducción a la teoría de la computación por Michael Sipser
- Introducción a la teoría de autómatas, idiomas y computación por John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman
- Complejidad computacional: una perspectiva conceptual por Oded Goldreich
- Complejidad computacional: un enfoque moderno por Sanjeev Arora, Boaz Barak
- Un curso de combinatoria por JH van Lint, RM Wilson
- Computabilidad: una introducción a la teoría de la función recursiva por Nigel Cutland
- Computadoras e Intractabilidad: una guía para la teoría de la completitud NP por MR Garey, DS Johnson
- Teoría de funciones recursivas y computabilidad efectiva por Hartley Rogers
- Desigualdades por GH Hardy, JE Littlewood, G. Polya
- Lógica matemática: un curso con ejercicios (Parte I): cálculo proposicional, álgebras de bookean, cálculo predicado por René Cori, Daniel Lascar
- Lógica matemática: un curso con ejercicios (Parte II): teoría de la recursión, teoremas de Godel, teoría de conjuntos, teoría de modelos por René Cori, Daniel Lascar
Respuestas:
Tu lista es extremadamente problemática.
Para empezar, me saltearía los libros 6,11,12,14,15,16,17: los libros 6, 11 y 15 son matemáticas generales que realmente no son necesarias a menos que te conviertas en un investigador teórico . Los libros 12 y 14 cubren la teoría de la recursión que no es informática (¡aunque se trata de la computabilidad!). Los libros 16 y 17 cubren temas avanzados en lógica, mientras que solo necesita conocer una lógica muy básica.
De los libros 1, 2, 3, elegiría solo uno para servir como introducción general a las matemáticas y las pruebas.
Los libros 5,7,8,9,10,13 cubren varios temas: teoría de autómatas, algoritmos y teoría de la complejidad. Permítame sugerirle que siga Sipser (Libro 7) para la teoría de autómatas y la teoría de la complejidad, e Introducción a los algoritmos de Cormen, Leiserson, Rivest y Stein ("CLRS") para algoritmos.
Libro 4 ofertas con programación funcional. Si bien mi educación en informática nunca ha incluido ningún curso sobre este tema, es justo decir que muchos investigadores en informática teórica cuentan la programación funcional como parte de los fundamentos esenciales.
Resumiendo: lo que te queda es
fuente
También puede considerar aprovechar algunos de los muchos cursos en línea disponibles. Por ejemplo, tanto Stanford como el MIT ofrecen cursos en línea (gratuitos) en informática, y creo que también hay muchos otros disponibles.
En lo que respecta a los libros, apoyo la mayoría de las recomendaciones de Yuval, excepto que CLRS es una gran referencia, pero un poco abrumador como libro introductorio para simplemente sentarse y leer. Para un primer paso en la porción de algoritmos, podría recomendar Algorithms de Dasgupta et al. . El enlace anterior es a la preimpresión en línea gratuita, pero también es bastante barato comprar en rústica.
fuente
Las referencias que sugieres serían un "muy" científico teórico de la computación. pero honestamente no encuentro ningún beneficio al leer todos estos libros si eres de un título que no es CS. Por supuesto, todo depende de lo que necesite.
Encuentro que algunos libros como el Libro 14, 15, 16, 17 no están destinados a informáticos. El libro 3 es detallado. Es solo general para cualquier estudiante. Por lo tanto, supongo que los libros 1 y 2 son iguales.
Para mí, estando en su misma situación que no era originalmente un informático (sino un ingeniero eléctrico / informático), propongo dos direcciones iniciales:
--- asegúrese de dominar un lenguaje de programación para IMPLEMENTAR los algoritmos y las estructuras de datos que aprende; por lo tanto, sugiero la serie de Algoritmos, de Sedgewick (¡increíble!)
--- AGREGADO: También sugiero este libro: Algoritmos combinatorios: generación, enumeración y búsqueda por D. Kreher. Este es un libro muy bonito. Le dará una perspectiva diferente a muchos problemas en los algoritmos.
combinatoria (especialmente teoría de grafos), un curso de combinatoria por JH van Lint, RM Wilson , es bueno. Existen muchas otras referencias. Por lo general, cualquier libro de combinatoria conocido es suficiente; todo lo demás se obtendría de referencias adicionales de Internet. Personalmente me gustó: combinatoria de peter j cameron y Bondy y Murty Graph Theory.
Una apuesta de probabilidad (siempre necesaria). Llama la atención que muchos campos de la ciencia no utilizan la probabilidad. Pero créeme, todo lo que tienes que saber son los conceptos básicos.
Luego: muchos investigadores que se autodenominan científicos teóricos de la informática se centran tanto en la teoría de la computación (automota y otros). Hay algunos buenos libros para esto (ver la publicación de Yuvul Filmus),
Aho y Ullman son buenos (en realidad todos los libros de Ullman son buenos). Póngase cómodo con el diseño del compilador (consulte http://infolab.stanford.edu/~ullman/ullman-books.html ).
Después de eso: todo depende de lo que quieras hacer. Diferentes direcciones que puede tomar: 1) bases de datos, 2) reconocimiento de patrones y minería de datos, 3) algoritmos distribuidos, 4) bases de lenguajes de programación, 4) algoritmos aleatorios y muchos otros. [cada una de las cuales requiere otra publicación] ¡ pero trata de tener una idea sobre todo!
* La idea general: si eres nuevo en CS, entonces siéntete cómodo con tantos subdominios de CS como sea posible. ¡Restringirse a la "teoría" le hará perder gran parte de la creatividad CS! * (mi opinión)
fuente