Pour donner un aperçu - un diplôme en informatique enseigne la "science" d'un ordinateur. Pour étudier la science de quelque chose, vous étudiez les principes de fonctionnement.
Si quelqu'un vous demandait comment fonctionne une bicyclette, vous iriez probablement expliquer comment la pédale transfère l'énergie aux roues à travers la chaîne. De même, l'informatique est essentiellement une réponse à la question "Comment l'ordinateur fonctionne ?".
Apparemment, tous les diplômes en informatique ne sont pas les mêmes. Voici ce que j'ai parcouru. C'est un peu daté (j'ai été diplômé en 2002, il y a presque deux décennies)
On commence généralement par des cours de codage de base. J'ai personnellement eu 3 classes qui enseignent la programmation. Deux sur C++ et une sur Java. Les deux classes de C++ ont pris deux semestres, et celle de Java est juste un été. C'est tout ce que sont les cours de "programmation". D'après ce que je comprends, le but est d'avoir un langage pour parler des principes. Vous ne pouvez pas être un programmeur compétent avec seulement ces cours.
Contrairement à ce que l'on pense habituellement - les cours d'informatique ne consistent pas tant à enseigner comment écrire du code. Tout comme si vous avez une classe enseignant le fonctionnement d'un vélo, elle ne passera probablement pas beaucoup de temps à vous apprendre à faire du vélo. C'est probablement la plus grande idée fausse qui ait jamais existé sur l'enseignement de l'informatique.
Un ordinateur est un trillion de fois plus compliqué qu'un vélo. L'adjectif "un trillion de fois" n'est pas seulement beaucoup, c'est littéralement un trillion de fois. Si vous pensez qu'un vélo a quelques pièces, la pédale, la chaîne, les roues, et ainsi de suite. Un microprocesseur à lui seul compte 1 400 000 000 de transistors. La façon dont nous le comprenons est le principe d'abstraction. En bref, n'ouvrez pas la boîte. Il suffit de l'allumer et de profiter de la magie.
C'est ainsi que la plupart des gens considèrent l'ordinateur. Étudier l'informatique, cependant, fait exactement le contraire. Elle ouvre toutes les boîtes.
Dans mon programme, en particulier, nous avons commencé par la conception de circuits. En fin de compte, un ordinateur est composé de circuits. Ce n'est que si nous comprenons les circuits que nous comprenons l'unité de base d'un ordinateur. La conception de circuits est un vaste sujet, j'ai personnellement passé par des conceptions analogiques de base (résistances, diodes, transistors polaires à double jonction), des conceptions numériques de base (portes logiques, verrous, flip flops), des conceptions de processeurs de base (unités arithmétiques, chemin de données, pipelining), cette chaîne de cours se termine lorsque j'ai conçu une disposition de silicium d'un composant simple (dans mon cas un commutateur crossbar) et une discussion dans les architectures modernes (comment l'hyper-threading a fonctionné, c'était la technologie chaude à mon époque)
Légèrement au-dessus du matériel, nous avons commencé avec le logiciel du système. Nous apprenons comment fonctionne un système d'exploitation. Comment l'ordinateur peut-il exécuter plusieurs programmes à la fois ? Comment l'ordinateur peut-il partager les ressources de manière équitable et efficace entre différents processus ? Comment programmer un microcontrôleur ? (un microcontrôleur est un microprocesseur très réduit qui est généralement utilisé dans des appareils autres que les ordinateurs). Mon école n'avait pas de cours de compilateur, si c'était le cas, j'aurais appris comment un programme de haut niveau est compilé et exécuté sur un ordinateur.
Plus haut, j'ai l'occasion d'étudier les composants logiciels très couramment utilisés. En commençant par les structures de données de base (comme une liste, un arbre ou un graphe), comprendre comment mettre en œuvre une base de données en utilisant les structures de données. Comment s'assurer que l'accès aux données est rapide, comment rendre les données disponibles lorsque les accès sont concurrents, comment s'assurer que l'intégrité des données reste intacte lorsqu'une défaillance peut se produire. Finalement, cela conduit à étudier les algorithmes (c'est-à-dire les méthodes bien prescrites) pour résoudre des problèmes informatiques difficiles.
L'étude des algorithmes nécessite un certain niveau de maturité mathématique. À cette fin, nous étudiions l'algèbre linéaire, le calcul multivariable, les probabilités et les statistiques, et quelques équations différentielles de base.
Plus haut dans la pile, on nous apprend comment fonctionnaient les systèmes distribués. (Distribué signifie fondamentalement plus d'un ordinateur). Pour ce faire, nous avons commencé par les bases de la mise en réseau. Comment modéliser les signaux, comment les transformer pour qu'ils soient aptes à être transmis par le média> Comment détecter et corriger les erreurs ? Comment acheminer le message vers sa destination dans un immense réseau (comme l'Internet) ? Comment s'assurer que les messages sont sécurisés contre l'écoute clandestine, la falsification ou simplement l'abandon ?
Nous avions une classe qui enseigne le génie logiciel. Cette classe est très pratique et nous sommes censés mettre en œuvre un système de taille modérée en un semestre. Cela nous donne une expérience limitée.
Le reste est constitué de cours facultatifs. Nous pourrions choisir de nous spécialiser dans beaucoup de sujets différents. Nous avions des cours d'IA (que j'ai pris), d'infographie (que je n'ai pas pris), de programmation fonctionnelle, d'ingénierie sans fil, et bien d'autres choses encore.
Avec tout cela, un diplômé en informatique peut dire fièrement que nous comprenons un ordinateur de haut en bas. D'aussi grand qu'un système distribué (comme Google) à aussi petit qu'un transistor (Qui n'a qu'une taille de quelques nanomètres, ou 0,000000005m).
Le thème général de tout le diplôme consiste à expliquer comment l'ordinateur fonctionne. Il ne s'agit pas d'apprendre à devenir un ingénieur logiciel. Il s'agit là de la principale idée fausse. Tout comme le fait d'aller à un cours qui vous apprend comment un vélo fonctionne, ne vous fera probablement pas mieux conduire un vélo.