Am parcurs peste jumătate din programul de informatică post-absolvire de la Oregon State University. Este o mănușă (ușor) epuizantă de 15 cursuri, făcută și mai epuizantă de faptul că am lucrat cu normă întreagă și am urmat două cursuri pe trimestru (cu o excepție făcută pentru vara trecută, când a fost programat doar un singur curs pentru a-mi da timp să mă căsătoresc 🙂 ). Până în prezent, am urmat, sau urmez în prezent, următoarele cursuri (fără o anumită ordine):
- Introducere la informatică I
- Introducere la informatică II
- Structuri discrete în informatică
- Structuri de date
- Dezvoltare web
- Introducere la baze de date
- Arhitectura calculatoarelor & Limbaj de asamblare
- Analiza algoritmilor
- Sisteme de operare (în curs de desfășurare)
- Inginerie software I (în curs de desfășurare)
.
Și am în față următoarele cursuri:
- Software Engineering II
- Introduction to Usability Engineering
- Introduction to Computer Networks
- Mobile and Cloud Software Development
- Software Projects (Program Capstone)
Ca în orice program conceput pentru a preda unui grup divers de studenți, toți cu stiluri de învățare diferite și provenind din medii diferite, calitatea și dificultatea cursurilor variază. După părerea mea, cele mai interesante cursuri au fost, de asemenea, cele pe care le consider cele mai dificile.
Introduction to Computer Science II a fost aparent conceput pentru a elimina studenții care nu erau programatori puternici. Cursul a fost puternic axat pe scrierea de cod (C++ este limbajul principal folosit în programul OSU și a fost foarte mult prezentat aici), cu accent pe modelele de proiectare orientate pe obiecte.
Discrete Structures in Computer Science (Structuri discrete în informatică) probabil că ar fi fost mai ușor dacă mușchii mei de algebră și de scriere a demonstrațiilor nu ar fi fost atât de ruginiti. Odată ce te-ai încălzit, totuși, cursul este un exercițiu fascinant de raționament inductiv și o introducere solidă în teoria seturilor și a grafurilor. Acest curs s-a dovedit a fi deosebit de util pe măsură ce investighez disciplinele legate de inteligența artificială, care se bazează foarte mult pe tipurile de simbologie cu care ești introdus în acest curs.
Arhitectura calculatoarelor & Limbajul de asamblare este o călătorie. În timp ce C++ vă expune la concepte precum pointeri și alocarea memoriei – lucruri pe care majoritatea limbajelor le abstractizează – asamblarea este o bestie diferită. Aici, învățați să deplasați memoria pe CPU și vedeți cum sunt construite buclele, instrucțiunile condiționale și funcțiile de la zero. De asemenea, veți face cunoștință cu ciclul de preluare, decodare, execuție pe care îl utilizează toate CISC-urile. Pe scurt, învățați ce este un calculator și cum face toate lucrurile frumoase pe care le considerăm de la sine înțelese.
Analysis of Algorithms a fost, din punct de vedere conceptual, cel mai dificil curs din program. Volumul de lucru a fost mai ușor decât Introducere în informatică II, dar ultima dată când m-am uitat la limite și derivate a fost în facultate. M-am trezit din nou că mă duceam la Khan Academy în weekenduri pentru a mă pune la punct cu calculul, dar odată ce am învățat elementele de bază, am pornit la drum. Acest curs a fost primul în care m-am simțit ca un “informatician”, deoarece conceptele necesită un mod abstract de gândire care merge dincolo de “simpla” programare sau scriere de software. Aici, veți vedea notația Big-O și analiza algoritmilor, programarea dinamică, teoria complexității, teoria grafurilor și algoritmii, precum și algoritmii clasici de căutare și sortare. Calitatea cursului în sine lasă de dorit, dar subiectele sunt cu adevărat frumoase.
Celelalte cursuri nu sunt “rele”, în sine, dar fie le lipsește rigoarea sau profunzimea celorlalte cursuri, fie organizarea/prelegerea/cursurile sunt atât de slabe încât să distragă atenția. Acestea fiind spuse, fiecare curs are propriile sale pepite de conținut interesant și, cel mai important, actul continuu de rezolvare a problemelor este esențial pentru a învăța cum să fii un “dezvoltator”, “inginer”, “informatician” (sau cum vreți să numiți pe cineva care mișcă biți la viteze mari).
Și acum am intrat în ultima linie dreaptă! În următoarele trei trimestre voi încheia 7 cursuri, cu majoritatea cursurilor rămase (ingineria utilizării, ingineria software, cloud computing), toate lucruri care se află în aria mea de activitate. În luna august a acestui an, voi fi mândrul posesor al unui B.S. în C.S. de la Oregon State University și voi trece la programul de masterat în C.S. al Georgia Tech. Angajamentul de timp al acestui program a fost uneori stresant, dar nu aș schimba această experiență pentru nimic în lume.
.