Je suis plus de la moitié du programme d’informatique post-bac de l’Oregon State University. C’est un gantelet (légèrement) éreintant de 15 cours, rendu plus éreintant par le fait que je travaille à temps plein et que je prends deux cours par trimestre (avec une exception faite pour l’été dernier où un seul cours était au programme pour me donner du temps pour me marier 🙂 ). Jusqu’à présent, j’ai suivi, ou je suis en train de suivre, les cours suivants (sans ordre particulier) :
- Introduction à l’informatique I
- Introduction à l’informatique II
- Structures discrètes en informatique
- Structures de données
- Développement Web
- Introduction aux bases de données
- Architecture des ordinateurs& Langage d’assemblage
- Analyse des algorithmes
- Systèmes d’exploitation (en cours)
- Génie logiciel I (en cours)
.
Et j’ai devant moi les cours suivants :
- Génie logiciel II
- Introduction à l’ingénierie de l’utilisabilité
- Intro aux réseaux informatiques
- Développement de logiciels mobiles et en nuage
- Projets logiciels (synthèse du programme)
Comme dans tout programme conçu pour enseigner à un groupe diversifié d’étudiants, tous ayant des styles d’apprentissage différents et venant de milieux différents, la qualité et la difficulté des cours varient. Selon moi, les cours les plus intéressants ont également été ceux que je considère comme les plus difficiles.
L’introduction à l’informatique II était apparemment conçue pour éliminer les étudiants qui n’étaient pas de bons programmeurs. Le cours était lourd sur l’écriture de code (C ++ est le principal langage utilisé dans le programme de l’OSU et il a été fortement mis en vedette ici) avec un accent sur les modèles de conception orientés objet.
Les structures discrètes en informatique auraient probablement été plus faciles si mes muscles d’algèbre et d’écriture de preuves n’étaient pas si rouillés. Une fois que vous êtes échauffé, cependant, le cours est un exercice fascinant de raisonnement inductif et une introduction solide à la théorie des ensembles et des graphes. Ce cours s’est avéré particulièrement utile lorsque j’étudie les disciplines liées à l’intelligence artificielle qui sont lourdes sur les types de symbologie que vous êtes introduit dans cette classe.
Architecture informatique & Le langage d’assemblage est un voyage. Alors que le C++ vous expose à des concepts comme les pointeurs et l’allocation de mémoire – des choses que la plupart des langages abstraient – l’assemblage est une bête différente. Ici, vous apprenez à déplacer la mémoire sur le CPU et vous voyez comment les boucles, les instructions conditionnelles et les fonctions sont construites à partir de la base. Vous êtes également initié au cycle de récupération, de décodage et d’exécution que tous les CISC utilisent. En bref, vous apprenez ce qu’est un ordinateur et comment il fait toutes les belles choses que nous prenons pour acquises.
L’Analyse des algorithmes était, conceptuellement, le cours le plus difficile du programme. La charge de travail était plus légère que Introduction à l’informatique II, mais la dernière fois que j’ai examiné les limites et les dérivés était au collège. Je me suis à nouveau retrouvé à aller sur Khan Academy le week-end pour réviser mes connaissances en calcul, mais une fois les bases acquises, c’était parti pour la course. Ce cours a été le premier où je me suis sentie comme une “informaticienne”, car les concepts exigent un mode de pensée abstrait qui va au-delà de la “simple” programmation ou de l’écriture de logiciels. Ici, on découvre la notation Big-O et l’analyse des algorithmes, la programmation dynamique, la théorie de la complexité, la théorie des graphes et les algorithmes, ainsi que les algorithmes classiques de recherche et de tri. La qualité du cours lui-même laisse à désirer, mais les sujets sont vraiment magnifiques.
Les autres cours ne sont pas “mauvais”, en soi, mais ils manquent soit de la rigueur ou de la profondeur des autres cours, soit l’organisation/l’exposé/le travail de cours est si pauvre qu’il est distrayant. Cela dit, chaque cours a ses propres pépites de contenu intéressant, et surtout, l’acte continu de résoudre des problèmes est la clé pour apprendre à être un “développeur”, un “ingénieur”, un “informaticien” (ou tout ce que vous voulez appeler quelqu’un qui déplace des bits à grande vitesse).
Et maintenant, je suis dans la dernière ligne droite ! Au cours des trois prochains trimestres, je vais conclure 7 cours, avec la majorité des cours restants (ingénierie de l’utilisabilité, génie logiciel, informatique en nuage), toutes des choses qui sont dans ma timonerie. En août de cette année, je serai l’heureux propriétaire d’un B.S. en C.S. de l’Oregon State University et je passerai au programme de maîtrise en C.S. de Georgia Tech. Le temps consacré à ce programme a parfois été stressant, mais je n’échangerais cette expérience pour rien au monde.