Bonjour à tous,
Je me suis donné cet été pour objectif de participer à la Google Code Jam (et sûrement d’autres compétitions du genre organisée par Facebook ou IBM) avec l’objectif d’arriver en finale. De manière conjointe j’aimerais devenir particulièrement bon en algorithmie, domaine dans lequel j’aimerais faire de la recherche. Je viens vers vous pour savoir si mon approche est bonne et ce qui pourrait être amélioré pour compléter ces deux objectifs.
Tout d’abord, que vous sachiez où j’en suis pour me guider au mieux. Je viens de terminer une double Licence Mathématiques Informatique, que j’ai essentiellement réussi grâce à l’info sans se mentir. J’ai donc un bagage mathématiques non nul et qui commence à être suffisant pour aborder l’informatique théorique (dans ce que j’ai pu voir / lire dans différents cours). A préciser que je suis plus à l’aise en algèbre que dans le reste. Avant ceci j’avais fait un DUT Informatique à Descartes, là où j’ai appris toute l’informatique pratique que je connais. En effet, à la fac je n’ai appris des nouvelles choses que d’un point de vue théorique. Maintenant vous avez un minorant de mes connaissances.
Pour aborder mes deux objectifs j’ai décidé de procéder de la manière suivante :
-
Lire et travailler le fameux livre CLRS : Introduction to Algorithms
-
Pour chaque algorithme rencontré / découvert : le coder dans différents paradigmes : Impératif (haut niveau avec Python, bas niveau avec Rust), Fonctionnel (avec Haskell)
-
Participer à un maximum de compétitions en ligne une fois que j’ai suffisamment de bases (j’aimerais au moins apprendre la programmation dynamique avant de me lancer)
Mon approche semble correcte, j’ai cependant un doute sur mon deuxième point. Mon idée en faisant cela, c’est d’avoir un point de vue global de l’algorithme avec le haut niveau, voir comment diminuer les facteurs constants avec le bas niveau et avoir une approche différente avec le fonctionnel. Sauf que ne connaissant pas du tout le fonctionnel je ne sais pas si c’est une bonne idée. Pour le choix des langages, j’ai pris Python parce que je commence à bien connaître et qu’il s’agit du langage que je préfère, les deux autres sont totalement nouveau pour moi et m’intéressent.
Enfin, on m’a conseillé d’analyser des sources et d’essayer de les améliorer (sections critiques, changements d’algos, tests couvrants…). Sauf que je n’ai pas la moindre idée d’où je pourrais trouver des sources qui me seraient utiles (si ce n’est celles que je produirais ou que j’ai déjà produit).