j_sulz

Sono oltre la metà del programma di informatica post-baccalaureato della Oregon State University. E’ una (lievemente) estenuante sfida di 15 corsi, resa più estenuante dal fatto che ho lavorato a tempo pieno e preso due corsi a trimestre (con un’eccezione fatta per l’estate scorsa quando solo un corso era in programma per darmi un po’ di tempo per sposarmi 🙂 ). Ad oggi, ho preso, o sto attualmente prendendo, i seguenti corsi (in nessun ordine particolare):

  • Introduzione all’informatica I
  • Introduzione all’informatica II
  • Strutture discrete in informatica
  • Strutture di dati
  • Sviluppo web
  • Introduzione ai database
  • Architettura di computer & Linguaggio di assemblaggio
  • Analisi di algoritmi
  • Sistemi operativi (attualmente in corso)
  • Ingegneria del software I (attualmente in corso)

E ho i seguenti corsi davanti a me:

  • Ingegneria del software II
  • Introduzione all’ingegneria dell’usabilità
  • Introduzione alle reti di computer
  • Sviluppo di software mobile e cloud
  • Progetti software (Capstone del programma)

Come in ogni programma progettato per insegnare a un gruppo di studenti diversi, tutti con stili di apprendimento diversi e provenienti da ambienti diversi, la qualità e la difficoltà dei corsi varia. Nella mia stima, i corsi più interessanti sono stati anche quelli che considero i più difficili.

Introduzione all’informatica II era apparentemente progettato per eliminare gli studenti che non erano forti programmatori. Il corso era pesantemente incentrato sulla scrittura di codice (il C++ è il linguaggio principale usato nel programma dell’OSU e qui era molto presente) con un’attenzione ai modelli di progettazione orientati agli oggetti.

Strutture discrete in informatica probabilmente sarebbe stato più facile se i miei muscoli di algebra e scrittura di prove non fossero stati così arrugginiti. Una volta riscaldato, comunque, il corso è un affascinante esercizio di ragionamento induttivo e una solida introduzione alla teoria degli insiemi e dei grafi. Questo corso si è rivelato particolarmente utile mentre indago discipline legate all’intelligenza artificiale che sono pesanti sui tipi di simbologia a cui si viene introdotti in questa classe.

Architettura di computer & Il linguaggio di assemblaggio è un viaggio. Mentre il C++ ti espone a concetti come i puntatori e l’allocazione della memoria – cose che la maggior parte dei linguaggi astrae – l’assemblaggio è una bestia diversa. Qui si impara a spostare la memoria sulla CPU e a vedere come i loop, le istruzioni condizionali e le funzioni sono costruite da zero. Si viene anche introdotti al ciclo fetch, decode, execute che tutti i CISC utilizzano. In breve, si impara cos’è un computer e come fa tutte le belle cose che noi diamo per scontate.

Analisi degli algoritmi era, concettualmente, il corso più difficile del programma. Il carico di lavoro era più leggero di Introduzione all’informatica II, ma l’ultima volta che ho guardato i limiti e le derivate è stato al college. Mi sono ritrovato di nuovo ad andare su Khan Academy nei fine settimana per ripassare il calcolo, ma una volta che le basi erano giù, si andava alle corse. Questo corso è stato il primo in cui mi sono sentito un “informatico”, poiché i concetti richiedono un modo astratto di pensare che va oltre la “semplice” programmazione o la scrittura di software. Qui, si arriva a vedere la notazione Big-O e l’analisi degli algoritmi, la programmazione dinamica, la teoria della complessità, la teoria dei grafici e gli algoritmi, e i classici algoritmi di ricerca e ordinamento. La qualità del corso in sé lascia un po’ a desiderare, ma gli argomenti sono veramente belli.

Gli altri corsi non sono “cattivi”, di per sé, ma o mancano del rigore o della profondità degli altri corsi o l’organizzazione/lezioni/corsi sono così poveri da distrarre. Detto questo, ogni corso ha le sue pepite di contenuto interessante, e soprattutto, l’atto continuo di risolvere problemi è la chiave per imparare come essere uno “sviluppatore”, “ingegnere”, “scienziato informatico” (o come volete chiamare qualcuno che muove bit ad alta velocità).

E ora sono in dirittura d’arrivo! Nei prossimi tre trimestri concluderò 7 corsi, con la maggior parte dei corsi rimasti (ingegneria dell’usabilità, ingegneria del software, cloud computing) tutte cose che sono nelle mie corde. Ad agosto di quest’anno, sarò l’orgogliosa proprietaria di un B.S. in C.S. dell’Oregon State University e passerò al programma di Master in C.S. della Georgia Tech. L’impegno di tempo di questo programma è stato a volte stressante, ma non scambierei questa esperienza con niente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.