Ik ben over de helft van Oregon State University’s post-bacc computer science program. Het is een (lichtelijk) afmattende opgave van 15 cursussen, nog afmattender gemaakt door het feit dat ik full-time werk en twee cursussen per kwartaal volg (met een uitzondering voor de afgelopen zomer, toen er maar één cursus op het programma stond om me wat tijd te geven om te trouwen 🙂 ). Tot nu toe heb ik de volgende cursussen gevolgd, of volg ik ze momenteel (in willekeurige volgorde):
- Inleiding tot de Informatica I
- Inleiding tot de Informatica II
- Discrete Structures in Computer Science
- Data Structures
- Web Development
- Inleiding tot Databases
- Computer Architecture & Assembly Language
- Analysis of Algorithms
- Operating Systems (momenteel in uitvoering)
- Software Engineering I (momenteel in uitvoering)
En heb de volgende lessen voor de boeg:
- Software Engineering II
- Introductie tot Usability Engineering
- Intro tot Computer Networks
- Mobile and Cloud Software Development
- Software Projects (Program Capstone)
Zoals in elk programma dat is ontworpen om les te geven aan een diverse groep studenten, allemaal met verschillende leerstijlen en afkomstig uit verschillende achtergronden, varieert de kwaliteit en moeilijkheidsgraad van de cursussen. Naar mijn inschatting zijn de interessantste cursussen ook de moeilijkste geweest.
Introduction to Computer Science II was schijnbaar ontworpen om studenten die geen sterke programmeurs waren uit te sluiten. De cursus was zwaar op het schrijven van code (C + + is de primaire taal die wordt gebruikt in OSU’s programma en het was hier zwaar op de voorgrond) met een focus op object-georiënteerde design patterns.
Discrete Structures in Computer Science waarschijnlijk gemakkelijker zou zijn geweest als mijn algebra en bewijs schrijven spieren waren niet zo roestig. Maar als je eenmaal opgewarmd bent, is de cursus een fascinerende oefening in inductief redeneren en een solide introductie in set- en grafentheorie. Deze cursus is vooral nuttig gebleken bij mijn onderzoek naar disciplines die te maken hebben met kunstmatige intelligentie en die veel gebruik maken van de symbolen die je in deze cursus leert kennen.
Computer Architectuur & Assembleertaal is een reis. In C++ leer je concepten als pointers en geheugentoewijzing – zaken die in de meeste talen niet aan bod komen – maar assemblage is een heel ander verhaal. Hier leer je geheugen te verplaatsen op de CPU en zie je hoe lussen, conditionele statements en functies vanaf de basis worden opgebouwd. Je maakt ook kennis met de fetch, decode, execute-cyclus die alle CISC’s gebruiken. Kortom, je leert wat een computer is en hoe hij alle mooie dingen doet die wij als vanzelfsprekend beschouwen.
Analysis of Algorithms was, conceptueel gezien, de moeilijkste cursus in het programma. De werklast was lichter dan Inleiding tot de Informatica II, maar de laatste keer dat ik keek naar limieten en derivaten was op de universiteit. Ik ging weer naar Khan Academy in het weekend om wat calculus bij te spijkeren, maar toen ik de basis eenmaal onder de knie had, kon ik aan de slag. Dit was de eerste cursus waarin ik me een “computerwetenschapper” voelde, omdat de concepten een abstracte manier van denken vereisen die verder gaat dan “gewoon” programmeren of software schrijven. Hier krijg je Big-O notatie te zien en algoritme-analyse, dynamisch programmeren, complexiteitstheorie, grafentheorie en algoritmen, en je klassieke zoek- en sorteer-algoritmen. De kwaliteit van de cursus zelf laat te wensen over, maar de onderwerpen zijn echt prachtig.
De andere cursussen zijn niet “slecht”, per se, maar ze ofwel missen de strengheid of de diepte van de andere cursussen of de organisatie / lezing / cursuswerk is zo slecht dat het afleidend is. Dat gezegd hebbende, elke cursus heeft zijn eigen stukjes interessante inhoud, en het belangrijkste is dat het voortdurend oplossen van problemen de sleutel is om te leren hoe je een “ontwikkelaar”, “ingenieur”, “computerwetenschapper” (of hoe je iemand ook wilt noemen die bits verplaatst met hoge snelheden) moet zijn.
En nu ben ik in de laatste fase! In de komende drie kwartalen zal ik afronden 7 cursussen, met de meerderheid van de cursuswerk over (usability engineering, software engineering, cloud computing) alle dingen die in mijn wielhouse. In augustus van dit jaar zal ik de trotse eigenaar zijn van een B.S. in C.S. van Oregon State University en zal ik verder gaan met het Georgia Tech’s Master’s in C.S. programma. De tijdsbesteding van dit programma is soms stressvol geweest, maar ik zou deze ervaring voor niets willen ruilen.