Je suis un diplômé non-CS et mon domaine d'études n'est pas lié à CS. Cependant, dans le cadre d'un projet plus vaste visant à devenir informaticien, je souhaite obtenir une solide formation en informatique théorique et en mathématiques en ce qui concerne la CS. J'ai fait de nombreuses recherches et sélectionné les meilleurs / très bons livres suivants sur le thème de la science et de la science et des mathématiques et j'aimerais vous demander votre avis sur:
- Exhaustivité des sujets traités (veuillez recommander tout ce que j'ai oublié)
- Chevauchement du matériel couvert / zone de surpuissance (veuillez recommander les livres qui devraient être retirés de la liste)
- Ordre d'étudier les livres (j'ai énuméré dans l'ordre que je pense qu'ils devraient être étudiés)
La liste semble excessivement longue, donc j'apprécierais les recommandations pour supprimer certains livres, sans la perte des connaissances de base requises pour CS.
Donc, les livres sont:
- Délice du mathématicien par WW Sawyer
- Comment le prouver: une approche structurée par Daniel J. Velleman
- Comment le résoudre: un nouvel aspect de la méthode mathématique par G. Polya
- Une introduction à la programmation fonctionnelle par le calcul lambda par Greg Michaelson
- Fondements de l'informatique par Al Aho et Jeff Ullman (http://i.stanford.edu/~ullman/focs.html)
- Mathématiques concrètes: une fondation pour l'informatique par Graham, Knuth et Patashnik
- Introduction à la théorie du calcul par Michael Sipser
- Introduction à la théorie des automates, aux langages et au calcul par John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman
- Complexité informatique: une perspective conceptuelle par Oded Goldreich
- Complexité informatique: une approche moderne par Sanjeev Arora, Boaz Barak
- Un cours de combinatoire par JH van Lint, RM Wilson
- Calculabilité: une introduction à la théorie de la fonction récursive par Nigel Cutland
- Ordinateurs et intractabilité: un guide de la théorie de la complétude NP par MR Garey, DS Johnson
- Théorie des fonctions récursives et calculabilité efficace par Hartley Rogers
- Inégalités de GH Hardy, JE Littlewood, G. Polya
- Logique mathématique: un cours avec des exercices (partie I): calcul propositionnel, algèbres bookéennes, calcul des prédicats par René Cori, Daniel Lascar
- Logique mathématique: un cours avec des exercices (partie II): théorie de la récursivité, théorèmes de Godel, théorie des ensembles, théorie des modèles par René Cori, Daniel Lascar
Réponses:
Votre liste est extrêmement problématique.
Pour commencer, je sauterais carrément les livres 6, 11, 12, 14, 15, 16, 17: les livres 6, 11 et 15 sont des mathématiques générales qui ne sont vraiment nécessaires que si vous devenez un chercheur théorique . Les livres 12 et 14 couvrent la théorie de la récursivité qui n'est pas de l'informatique (même si elle traite de la calculabilité!). Les livres 16 et 17 couvrent des sujets avancés en logique, alors que vous n'avez besoin que de connaître une logique très basique.
Sur les livres 1, 2, 3, je choisirais un seul pour servir d'introduction générale aux mathématiques et aux preuves.
Les livres 5, 7, 8, 9, 10, 13 couvrent plusieurs sujets: la théorie des automates, les algorithmes et la théorie de la complexité. Permettez-moi de vous suggérer de suivre Sipser (Livre 7) pour la théorie des automates et la théorie de la complexité, et Introduction to Algorithms par Cormen, Leiserson, Rivest et Stein ("CLRS") pour les algorithmes.
Le livre 4 traite de la programmation fonctionnelle. Bien que ma formation en informatique n'ait jamais inclus de cours sur ce sujet, il est juste de dire que de nombreux chercheurs en informatique théorique considèrent la programmation fonctionnelle comme faisant partie des fondements essentiels.
En résumé: ce avec quoi vous restez est
la source
Vous pourriez également envisager de profiter de certains des nombreux cours en ligne disponibles. Par exemple, Stanford et le MIT proposent des cours en ligne (gratuits) en informatique, et je pense qu'il y en a beaucoup d'autres également.
En ce qui concerne les livres, j'appuie la plupart des recommandations de Yuval, sauf que CLRS est une excellente référence, mais un peu écrasante comme livre d'introduction pour s'asseoir et lire. Pour un premier passage à la partie algorithmes, je pourrais recommander les algorithmes de Dasgupta et al. . Le lien précédent est vers la préimpression en ligne gratuite, mais il est également assez bon marché d'acheter en livre de poche.
la source
Les références que vous proposez feraient un informaticien "très" théorique. mais honnêtement, je ne trouve aucun avantage à lire tous ces livres si vous êtes d'un diplôme non-CS. Bien sûr, tout dépend de ce dont vous avez besoin.
Je trouve que certains livres tels que les livres 14, 15, 16, 17 ne sont pas destinés aux informaticiens. Le livre 3 est détaillé. C'est juste général pour tout étudiant. Par conséquent, je suppose que les livres 1 et 2 sont identiques.
Pour moi - étant dans votre même situation que pas à l'origine un informaticien (mais plutôt un ingénieur électricien / informaticien) - je propose deux directions initiales:
--- assurez-vous de maîtriser un langage de programmation pour IMPLÉMENTER les algorithmes et les structures de données que vous apprenez - par conséquent, je suggère la série des algorithmes, de Sedgewick (incroyable!)
--- AJOUTÉ: Je suggère également ce livre: Algorithmes combinatoires: génération, énumération et recherche par D. Kreher. Ceci est un très beau livre. Vous donnera une perspective différente de nombreux problèmes d'algorithmes.
combinatoire (en particulier la théorie des graphes), un cours de combinatoire par JH van Lint, RM Wilson , est bon. Il existe de nombreuses autres références. Habituellement, n'importe quel livre sur la combinatoire bien connu suffit - tout ce que vous obtiendrez de références supplémentaires sur Internet. J'ai personnellement aimé: la combinatoire peter j cameron et la théorie des graphes Bondy et Murty.
un pari de probabilité (toujours nécessaire). Il est frappant de constater que de nombreux domaines scientifiques n'utilisent pas la probabilité. Mais croyez-moi, tout ce que vous devez savoir, ce sont les bases.
Ensuite: De nombreux chercheurs se faisant appeler des informaticiens théoriques se concentrent tellement sur la théorie du calcul (automota et autres). Il y a de bons livres pour ça (Voir le post de Yuvul Filmus),
Aho et Ullman est bon (en fait, tous les livres d'Ullman sont bons). Mettez-vous à l'aise avec la conception du compilateur (voir http://infolab.stanford.edu/~ullman/ullman-books.html ).
Après cela: tout dépend de ce que vous voulez faire. Différentes directions que vous pouvez prendre: 1) bases de données, 2) reconnaissance de formes et exploration de données, 3) algorithmes distribués, 4) fondation de langages de programmation, 4) algorithmes de randomisation et bien d'autres. [dont chacun nécessite un autre post] mais essayez d'avoir une idée de tout!
* L'idée générale: si vous êtes nouveau sur CS, alors familiarisez-vous avec autant de sous-domaines CS que possible. Vous limiter à la "théorie" vous fera perdre beaucoup de créativité CS! * (mon avis)
la source