Quels cours tout étudiant en informatique devrait-il suivre ?


Les matières les plus faciles à apprendre en dehors de l'école sont celles qui peuvent être directement appliquées à la résolution d'un problème existant dans votre vie. Vous voulez faire un site web ? Allez apprendre JavaScript. Vous voulez écrire une application iOS ? Allez apprendre l'Objective C. Lorsque vous avez un cas d'utilisation clair en tête, l'auto-motivation devient beaucoup plus facile.

En revanche, les connaissances acquises, par exemple, en lisant un livre sur un sujet théorique abstrait sont rapidement oubliées (ou jamais vraiment apprises) lorsque vous ne pouvez pas'trouver un moyen de les mettre en pratique. C'est ce qui fait la valeur d'un cadre universitaire. Les devoirs, les tests, les projets de fin de semestre : tout cela vous oblige à vous colleter avec des concepts importants qui pourraient, à première vue, sembler insignifiants.


Les structures de données et les algorithmes sont un parfait exemple d'un tel sujet. Il'est tentant, après avoir lu un livre sur les algorithmes célèbres, de déplorer le fait que tous ces algorithmes ont été implémentés sous forme d'appels d'API standard. Pourquoi prendre le temps de comprendre le pivotement aléatoire dans quicksort alors que vous n'aurez jamais besoin d'écrire un algorithme de tri dans votre vie ? Ce n'est qu'après quelques années, lorsque vous'êtes confronté à un problème qui ressemble suspicieusement à quelque chose que vous avez vu sur votre finale d'algorithmes, que vous apprenez enfin la valeur de ces connaissances.


Le cours susmentionné est le grand. Si vous ne prenez rien d'autre, vous devriez prendre Structures de données et algorithmes parce que:

  1. Vous ne serez pas'motivé à apprendre vraiment le matériel en dehors d'un cadre académique
  2. Chaque entretien avec une grande entreprise technologique pose des questions qui nécessitent des connaissances de ce cours en particulier
  3. Tous les sujets de CS de niveau supérieur vraiment cool nécessitent une bonne maîtrise du matériel de ce cours

À partir de là, tout'est une question de ce qui vous intéresse. Si vous voulez obtenir un emploi en tant qu'ingénieur logiciel, je suggère un cours d'algorithmes de niveau supérieur et un cours sur la conception orientée objet. Si vous êtes comme moi et aimez l'IA, il y a l'exploration de données et l'apprentissage automatique. Les personnes qui aiment vivre plus près du métal pourraient aimer les systèmes d'exploitation ou les architectures informatiques.

Si vous'êtes réellement dans un programme de CS et que vous voulez être un informaticien complet, alors évidemment vous devriez apprendre toutes ces choses dans une certaine mesure, plus la théorie des automates et les principes des langages de programmation, puis bifurquer à partir de là.