j_sulz

Olen yli puolessa välissä Oregon State University’s Post-Bacc Computer Science Program. Se on 15 kurssin (lievästi) uuvuttava koitos, jonka tekee vielä uuvuttavammaksi se, että olen tehnyt kokopäivätyötä ja käynyt kaksi kurssia neljännesvuodessa (poikkeuksen teki viime kesä, jolloin oli vain yksi kurssi, jotta minulla olisi aikaa mennä naimisiin 🙂 ). Tähän mennessä olen käynyt tai käyn parhaillaan seuraavia kursseja (ilman erityistä järjestystä):

  • Introduction to Computer Science I
  • Introduction to Computer Science II
  • Discrete Structures in Computer Science
  • Data Structures
  • Web Development
  • Introduction to Databases
  • Computer Architecture & Assembly Language
  • Analysis of Algorithms
  • Operating Systems (tällä hetkellä meneillään)
  • Software Engineering I (tällä hetkellä meneillään)

Ja minulla on seuraavat kurssit edessä:

  • Software Engineering II
  • Introduction to Usability Engineering
  • Intro to Computer Networks
  • Mobile and Cloud Software Development
  • Software Projects (Program Capstone)

Kuten missä tahansa ohjelmassa, joka on suunniteltu opettamaan monipuolista oppilasryhmää, jolla on erilaiset oppimistyylit ja jolla on erilaiset taustat, kurssin laadussa ja vaikeusasteessa on suuria eroja. Arvioni mukaan mielenkiintoisimmat kurssit ovat olleet myös niitä, joita pidän vaikeimpina.

Introduction to Computer Science II oli ilmeisesti suunniteltu karsimaan pois opiskelijat, jotka eivät olleet vahvoja ohjelmoijia. Kurssi painottui vahvasti koodin kirjoittamiseen (C++ on OSU:n ohjelmassa käytetty ensisijainen kieli, ja se oli vahvasti esillä), ja siinä keskityttiin objektisuuntautuneisiin suunnittelumalleihin.

Discrete Structures in Computer Science olisi todennäköisesti ollut helpompaa, jos algebran ja todistusten kirjoittamisen lihakseni eivät olisi olleet niin ruosteessa. Kun olet kuitenkin lämmennyt, kurssi on kiehtova harjoitus induktiivisessa päättelyssä ja vankka johdatus joukko- ja graafiteoriaan. Tämä kurssi on osoittautunut erityisen hyödylliseksi, kun tutkin tekoälyyn liittyviä tieteenaloja, jotka käyttävät paljon samantyyppistä symboliikkaa, johon tällä kurssilla tutustutaan.

Computer Architecture & Assembly Language is a trip. Vaikka C++:ssa tutustut sellaisiin käsitteisiin kuin osoittimet ja muistin allokointi – asioita, jotka useimmat kielet abstrahoivat pois – assemblerointi on erilainen peto. Tässä opit siirtämään muistia suorittimessa ja näet, miten silmukat, ehdolliset lausekkeet ja funktiot rakennetaan alusta alkaen. Tutustut myös haku, dekoodaus, suoritus -sykliin, jota kaikki CISC-suorittimet käyttävät. Lyhyesti sanottuna opit, mikä tietokone on ja miten se tekee kaikkia niitä kauniita asioita, joita pidämme itsestäänselvyyksinä.

Algoritmien analyysi oli käsitteellisesti ohjelman vaikein kurssi. Työmäärä oli kevyempi kuin Johdatus tietojenkäsittelytieteeseen II:ssa, mutta tarkastelin raja-arvoja ja derivaattoja viimeksi yliopistossa. Huomasin jälleen käyväni viikonloppuisin Khan Academyssa kertaamassa laskutoimituksia, mutta kun perusasiat olivat hallussa, oli aika lähteä kisoihin. Tämä kurssi oli ensimmäinen, jolla tunsin itseni “tietojenkäsittelytieteilijäksi”, sillä käsitteet vaativat abstraktia ajattelutapaa, joka ylittää “pelkän” ohjelmoinnin tai ohjelmistojen kirjoittamisen. Täällä pääset tutustumaan Big-O-notaatioon ja algoritmien analysointiin, dynaamiseen ohjelmointiin, kompleksisuusteoriaan, graafiteoriaan ja algoritmeihin sekä klassisiin haku- ja lajittelualgoritmeihin. Itse kurssin laatu jättää toivomisen varaa, mutta aiheet ovat todella kauniita.

Eivät muut kurssit sinänsä ole “huonoja”, mutta niistä joko puuttuu muiden kurssien tiukkuus tai syvällisyys tai organisaatio/luento/kurssityöt ovat niin huonoja, että ne häiritsevät. Tästä huolimatta jokaisella kurssilla on omat nuggettinsa mielenkiintoista sisältöä, ja mikä tärkeintä, jatkuva ongelmanratkaisu on avainasemassa oppiessa “kehittäjäksi”, “insinööriksi”, “tietojenkäsittelytieteilijäksi” (tai miksi ikinä haluatkin kutsua jotakuta, joka liikuttaa bittejä suurella nopeudella).

Ja nyt olen loppusuoralla! Seuraavien kolmen vuosineljänneksen aikana saatan päätökseen 7 kurssia, joista suurin osa on jäljellä (käytettävyystekniikka, ohjelmistotekniikka, pilvilaskenta), kaikki asioita, jotka ovat minun alaani. Tämän vuoden elokuussa minulla on ylpeänä Oregonin osavaltionyliopiston tietotekniikan kandidaatin tutkinto ja siirryn Georgia Techin tietotekniikan maisteriohjelmaan. Ohjelman ajallinen sitovuus on ollut ajoittain stressaavaa, mutta en vaihtaisi tätä kokemusta mihinkään.

Vastaa

Sähköpostiosoitettasi ei julkaista.