Je suis un programmeur autodidacte. Honnêtement, je ne suis pas bon en mathématiques. Quels conseils pouvez-vous donner pour améliorer mes compétences en mathématiques afin que je ne sois pas si peu sûr de mes collègues programmeurs? Quelles sont les étapes ou les lignes directrices que vous pouvez recommander pour améliorer mes compétences mathématiques?
Existe-t-il un livre qui est la norme de facto pour décrire les meilleures pratiques, les méthodologies de conception et d'autres informations utiles sur les mathématiques pour les programmeurs? Qu'en est-il de ce livre qui le rend spécial?
Hmm, d'après ce que vous dites, vous semblez vouloir commencer très basique. Rien de mal à cela, j'ai fait de même. Mes mathématiques étaient principalement au niveau secondaire et beaucoup ont été oubliées.
Commencez par Khan Academy , allez à la section pratique et voyez jusqu'où vous pouvez aller. Cela vous donnera une bonne idée de ce que vous pouvez faire et où commencer à apprendre.
Ne vous embêtez pas à regarder les vidéos. Au moins pour moi, les vidéos sont juste un moyen lent d'apprendre et celles de Khan sont très ennuyeuses. Il existe de nombreuses autres ressources pour apprendre les mathématiques de base. Comme certains WikiBooks ou ck-12
La question est discutée sur Math.StackExchange assez souvent et la recherche de "ressources gratuites" ou de "livres gratuits" vous apportera beaucoup d'informations et de matériel. Il en va de même pour les termes de recherche comme "début" ou "débutant". Ou posez-y votre propre question. Cela fonctionne aussi dans la sous-section / r/math sur reddit. Vous y trouverez plus de subreddits, par exemple pour l'apprentissage des mathématiques.
Pratique beaucoup. Il ne suffit pas de comprendre un concept et de passer au suivant. Vous devez vous sentir à l'aise pour l'appliquer. Vous ne comprendrez pas les pourcentages si vous n'êtes pas à l'aise avec la division et la multiplication (par exemple). Cela est également vrai pour les concepts supérieurs. C'est pourquoi pour moi, la section de pratique à Khan est beaucoup plus précieuse que les vidéos.
Comme pour la programmation, rester en contact avec la communauté vous gardera motivé. Il suffit de se connecter à un forum de temps en temps et de lire ce dont les gens parlent.
Concrete Mathematics: A Foundation for Computer Science (2nd Edition) serait mon choix pour un bon livre de mathématiques couvrant divers domaines des mathématiques ainsi que d'avoir un peu d'humour pour le livre qui peut être utile.
Notes en ligne de Paul de l'Université Lamar vient en PDF. C'est très bon pour un référencement rapide et il y a des exemples sur chaque page. Si jamais je voulais me rafraîchir sur un sujet ou saisir quelque chose, j'ai tendance à revenir sur ce site.
Voici l'ensemble:
Algèbre (Math 1314): Notes complètes
Liste des contenus
Calcul I (Math 2413): séparé en
Calculus II (Math 2414) Notes complètes
Calculus III (Math 2415) Notes complètes
Algèbre linéaire (Math 2318) Notes complètes
Équations différentielles (Math 3301) Notes complètes
Vous pouvez consulter le site pour le reste des listes de sujets.
Je me rends compte que ce n'est pas un livre, mais je pense que ce pourrait être un bon moyen d'élargir votre réflexion sur les mathématiques. Essayez de résoudre les problèmes de Project Euler .
Par exemple, le premier est :
Si nous listons tous les nombres naturels inférieurs à 10 qui sont des multiples de 3 ou 5, nous obtenons 3, 5, 6 et 9. La somme de ces multiples est 23.
Trouvez la somme de tous les multiples de 3 ou 5 en dessous de 1000.
Je recommande toujours les mathématiques discrètes de Kenneth Rosen et ses applications . Il couvre de nombreux sujets différents (comme tout bon livre de mathématiques discrètes) avec un bon équilibre entre théorie et application. Il a également de nombreuses barres latérales intéressantes sur les mathématiciens et les informaticiens à l'origine des concepts couverts.
Bien que la lecture d'un livre mathématique discret de 1000 soit une bonne solution, ce n'est peut-être pas le chemin optimal si le temps est une contrainte. Si vous voulez avoir une saveur de combien de mathématiques devriez-vous avoir sans aller en profondeur, jetez un oeil à l'annexe A de l'introduction du livre d'algorithmes (cormen) : - http://www.acmsolver.org/books/Introduction%20to%20Algorithms,%202nd%20Ed%20-%20Thomas%20H.%20Cormen.pdf
J'ai lu l'annexe et cela m'a permis de mieux comprendre quels sujets mathématiques devrais-je examiner davantage. Une fois que vous savez à quoi vous attendre, jetez un œil sur:
À mon avis, apprendre à prouver (en particulier par induction) est une pierre angulaire de la compréhension des algorithmes d'analyse . Malheureusement, la plupart des algorithmes et même des cours de mathématiques CS ne se concentrent pas trop sur la preuve. ils supposent déjà que vous êtes compétent en la matière, ils ne vont donc pas au-delà de quelques pages. Le livre Journey into math est très petit et facile à lire. Il utilise également les problèmes CS et leur aspect mathématique. D'autres bons sujets à apprendre sont l'arithmétique matricielle , la probabilité , comptage , et théorie des graphes également.
Les deux autres grands manuels populaires: Discrete Math et son application d'EPP (mon préféré) et l'autre de Rosen.
Je n'ai pas eu le plaisir de lire le manuel intitulé " Mathématiques concrètes " mais j'ai toujours entendu de bonnes choses à ce sujet.
Si vous étudiez correctement les mathématiques CS, vous regardez des choses comme la logique mathématique et la théorie des ensembles. Ce sont des mathématiques assez compliquées qui les soutiennent. Par conséquent, si votre niveau de base en mathématiques est un peu compliqué, il est préférable de commencer par les fondamentaux, avant de passer aux domaines les plus liés à CS.
Par conséquent, je vous suggère de commencer par K.A. Stroud's Engineering Mathematics . Bien écrit, facile à suivre et couvre les bases ainsi que des choses plus avancées.
Franchement, vous pouvez être un programmeur parfaitement adéquat dans de nombreux domaines sans une connaissance fondamentalement très solide des mathématiques. Vous n'êtes peut-être pas très compétent en ce qui concerne les moteurs de jeu ou l'optimisation du routage réseau, mais à vrai dire, de nombreuses applications commerciales sont assez simples. Cependant, je vous encourage à garder espoir et à ne pas abandonner les mathématiques.
Il y a un monde de différence entre les mathématiques que vous prenez à un niveau inférieur et les mathématiques que vous prenez à un niveau supérieur. C'est très différent de dire que vous êtes mauvais en calcul (j'étais - j'ai échoué Calc I la première fois que je l'ai pris) que de dire que vous êtes mauvais en théorie des graphes. À mesure que vous avancez dans les mathématiques, l'accent n'est pas mis sur la résolution de problèmes simples qui est franchement assez ennuyeuse et répétitive et pourrait tout aussi bien être effectuée par votre calculatrice graphique. Au lieu de cela, l'accent est mis sur les compétences de réflexion logique: la construction de preuves est franchement un peu comme écrire un logiciel.
Le meilleur cours de mathématiques que j'ai jamais eu était ce que je considérais comme mon premier "vrai" cours de mathématiques: essentiellement une introduction à la classe de preuves qui couvrait une gamme de domaines allant de la théorie des graphes à la théorie des nombres. Le texte que nous avons utilisé était excellent ( Pensée mathématique: résolution de problèmes et preuves par D'Angelo et West .) Vous pouvez trouver utile de simplement parcourir ce livre pour avoir des idées d'attaquer des preuves.
Dans l'ensemble, ai-je vraiment besoin des mathématiques que j'ai prises au collège? Non, probablement pas. Mais avoir une formation formelle m'a donné de meilleures capacités de réflexion critique, une meilleure imagination (il existe généralement de nombreuses façons de résoudre un problème, parfois bonnes, parfois mauvaises, mais une idée unique peut être utile) et la confiance dans la résolution de problèmes.
Ecoutez, je suis bon en maths, mais je ne l'utilise vraiment pas du tout pour la programmation, et je programme beaucoup. Mon conseil serait simplement de vous habituer à ne pas en savoir assez et de demander à quelqu'un de faire le calcul pour vous.
Il y a tellement de choses à savoir, vous ne pouvez pas vous attendre à être bon dans toutes, mais les mathématiques en particulier, ce n'est pas très utile.
Bien sûr, vous en aurez peut-être besoin parce que vos programmes sont quelque chose de scientifique, sinon utilisez ce temps pour apprendre quelque chose de plus utile.
En regardant les notes de cours de certains des cours (débutants) de la section "Logique et calcul" d'ESSLLI (à titre d'exemple, le prochain programme 2011 ou le programme 201 , chercher plus) peut être intéressant. Il vous donnera une impression sur les développements théoriques actuels dans le domaine lié à la programmation. Ensuite, vous pouvez décider d'étudier plus en profondeur les fondations d'un certain sous-domaine abordé dans ces cours.
(Sinon, il est difficile de répondre à votre question, il y a tellement de "mathématiques" différentes, dont vous pourriez ne pas vraiment avoir besoin ou qui ne vous intéressent pas. L'une des raisons pour lesquelles les cours ESSLLI peuvent se révéler intéressants pour nous est qu'ils reflètent certains courants la recherche, il s'agit donc de résoudre certains casse-tête; et essayer de résoudre un certain casse-tête est un élément important dans le processus de compréhension réelle d'une théorie, de compréhension de ce qui est intéressant derrière elle.)
Commencez par les principes fondamentaux, puis passez à la spécialité: Mathematician's Delight et Comment le résoudre sont deux excellents livres pour commencer. Le plaisir du mathématicien aborde les sujets mathématiques fondamentaux (par exemple la géométrie, l'algèbre, le calcul, etc.) d'une manière conviviale et amusante. Je n'ai pas encore lu Comment le résoudre, mais il se concentre sur la façon d'attaquer les problèmes mathématiques en raisonnant.