Arvutiteadus VS tarkvaratehnika - milline eriala on teie jaoks parim?

Hei kõigile! Minu nimi on YK ja mul on praegu käsil CS Dojo, programmeerimishariduse YouTube'i kanal, millel on üle 200 000 tellija. Varem olin ka Google'i tarkvaraarendaja.

Kaks kõige levinumat küsimust, mida minu publik mulle esitab, on:

"Mis vahe on arvutiteaduse ja tarkvaratehnika erialadel?"

Ja…

"Kas ma peaksin valima arvutiteaduse või tarkvaratehnika, kui tahan saada tarkvarainseneriks?"

Selles artiklis vastan sellele ja annan teile oma peamise analüüsi nende peamiste ettevõtete kohta.

Kiire ülevaade neist kahest suuremast ettevõttest

  • Arvutiteadus on arvutite töö uurimine, enamasti teoreetilisest ja matemaatilisest vaatenurgast.
  • Valige arvutiteadus, kui teile meeldib matemaatika, loogika või kui soovite minna CS-i spetsialiseeritud valdkonda nagu tehisintellekt, masinõpe, turvalisus või graafika.
  • Tarkvaratehnika on tarkvarasüsteemide ülesehituse uurimine, sealhulgas sellised teemad nagu projektijuhtimine, kvaliteedi tagamine ja tarkvara testimine.
  • Kui olete rohkem huvitatud praktilisest lähenemisviisist ja kui soovite õppida tarkvara ehitamise ja hooldamise üldist elutsüklit, peaksite valima tarkvaratehnika.
  • Nii arvutiteadus kui ka tarkvaratehnika õpetavad programmeerimise ja arvutiteaduse aluseid, nii et saate tarkvaraarendajaks valida kas ühe.

Et mõista arvutiteaduse ja tarkvaratehnika erialade erinevust, vaatame nende vastavat õppekava Kanada Waterloo ülikoolis.

Valisin selleks Waterloo ülikooli, kuna seal on üks parimaid arvutiteaduse programme Põhja-Ameerikas.

Töö väljavaated

Võrdleme kõigepealt, milliseid töökohti ja praktikaid saate iga programmi kaudu saada.

Õnneks on Waterloo ülikooli veebisaidil mitu näidet.

Iga peaeriala jaoks on siin mõned vilistlaste tiitlid ja koht, kus nad töötavad:

Arvutiteadus

  • Veebiarendaja / arhitekt, Steele Group
  • Programmeerija, Harry Rosen Inc.
  • Mobiil- / pilvearendaja, Clearbridge Associates Limited
  • Tarkvaratehnika, Kanada ülddünaamika
  • Tarkvaraarenduse insener, Microsoft
  • Vilgas insener, Pivotal Labs
  • Ärianalüütik, Kanada Rehvide Korporatsioon
  • Arendaja advokaat, Google
  • Tootejuht, Dropbox

Tarkvaraarendus

  • Tarkvaraarendaja, Tagged Inc.
  • Tarkvaraarendaja, IBM Kanada
  • Tarkvarajuht, Arius Software Corporation
  • Tarkvarainsener, VistaPrint USA
  • Tarkvarainsener, Harris Corporation
  • Tarkvaraarendaja, Accenture Inc.
  • Tehniline tootejuht - tarkvara kujundamine ja arendamine, NexJ Systems Inc
  • Konsultant, PureFacts Financial Solutions
  • Rakenduskonsultant, Desire2Learn

Nagu näete, pole saadaolevate töökohtade vahel suurt erinevust.

Kõige tavalisemad tööalased lõpetajad saavad pärast arvutiteaduse või tarkvaratehnika kraadi omandamist tarkvaraarendaja või tarkvarainsener.

Samuti on muid seotud võimalusi, näiteks tootejuht, kvaliteedikontrolli analüütik ja tehnoloogiakonsultant. Teie valikud sõltuvad teie konkreetsest oskuste komplektist.

Esimese aasta kursused:

Vaatame nüüd iga programmi nõutavaid kursusi. Kõigepealt võrdleme mõningaid kursusi, mille peate esimesel aastal läbima.

Arvutiteadus

  • CS 135 - Funktsionaalsete programmide kujundamine
  • CS 136 - algoritmi kujundamine ja andmete abstraktsioon
  • MATH 135 - algebra
  • MATH 136 - lineaaralgebra 1
  • MATTE 137 - arvutus 1
  • MATT 138 - arvutus 2
  • Lisaks mõned valikained

Tarkvaraarendus

  • CS 137 - Programmeerimise põhimõtted
  • CS 138 - andmete kogumine ja rakendamine
  • MATH 115 - lineaaralgebra inseneritööks
  • MATH 117 - arvutus 1 inseneritöö jaoks
  • MATH 119 - arvutus 2 inseneritöö jaoks
  • MATH 135 - matemaatika autasude algebra
  • ECE 105 - elektrotehnika füüsika 1
  • ECE 106 - elekter ja magnetism
  • ECE 124 - digitaalahelad ja -süsteemid
  • ECE 140 - lineaarsed ahelad
  • SE 101 - tarkvaratehnika meetodid

Nagu näete, on ka esimese aasta kursused üsna sarnased. Mõlemad hõlmavad mõnda arvutiteaduse põhikursust ning paar matemaatilist kursust lineaaralgebras ja arvutusalas.

Ainus oluline erinevus on see, et tarkvaratehnikal on täiendavaid füüsika- ja elektrotehnika komponente, samas kui arvutiteadusel on veel paar valikainet.

Kursused pärast esimest aastat:

Kuidas oleks kohustuslike ja valikainetega pärast esimest aastat? Vaatame siin mitmeid näiteid:

Arvutiteadus:

  • MATH 239 Sissejuhatus kombinatorikatesse
  • STAT 230 Tõenäosus
  • STAT 231 Statistika
  • CS 240 andmestruktuurid ja andmehaldus
  • CS 241 järjestikuste programmide alused
  • CS 245 loogika ja arvutus
  • CS 246 Objektorienteeritud tarkvaraarendus <- pole vajalik tarkvaratehnika erialadel
  • CS 251 Arvuti korraldus ja disain
  • CS 341 algoritmid
  • CS 350 opsüsteemid
  • Lisaks mitmed arvutiteaduste valikained

Tarkvaraarendus:

  • CHE 102 Keemia inseneridele
  • ECE 222 digitaalarvutid (sisaldab montaažikeelt)
  • ECE 358 arvutivõrgud
  • MATH 213 Täiustatud matemaatika tarkvarainseneridele
  • MATH 239 Sissejuhatus kombinatorikatesse
  • STAT 206 Tarkvaratehnika statistika
  • MSCI 261 Inseneriökonoomika: Finantsjuhtimine inseneridele
  • CS 241 järjestikuste programmide alused
  • CS 240 andmestruktuurid ja andmehaldus
  • CS 247 Tarkvaraarenduse põhimõtted <- pole nõutavad arvutiteaduse eriala peaerialadele
  • CS 341 algoritmid
  • CS 349 kasutajaliidesed <- pole vajalik arvutiteaduse erialadel
  • CS 343 Samaaegne ja paralleelne programmeerimine <- pole vajalik arvutiteaduse erialadel
  • CS 348 Sissejuhatus andmebaaside haldamisse
  • SE 212 Loogika ja arvutus
  • SE 350 operatsioonisüsteemid
  • SE 465 Tarkvara testimine ja kvaliteedi tagamine
  • SE 464 Tarkvara disain ja arhitektuur
  • SE 463 Tarkvaranõuete spetsifikatsioon ja analüüs
  • SE 490 disainiprojekt
  • Lisaks mõned arvutiteaduse ja elektrotehnika valikained

Ma olen teile siin andnud palju teavet seedimiseks. Kuid siin on minu kokkuvõte:

Matemaatika ja statistika nõuete osas on arvutiteadus ja tarkvaratehnika peaaegu identsed. Need hõlmavad kombinatorikat, tõenäosust ja statistikat.

Ka arvutiteaduse põhinõuded on sarnased, ulatudes algoritmide, andmestruktuuride ja operatsioonisüsteemide peale.

Peamine erinevus on see, et:

  • Tarkvaratehnikal on rohkem nõudeid elektrotehnika ja tarkvaratehnika põhialuste osas, näiteks tarkvara testimine, disain ja tarkvaranõuete spetsifikatsioon.
  • Arvutiteadus võimaldab kõrgema taseme arvutiteaduse kursustel rohkem valikaineid. Saate valida paljude teemade hulgast, nagu turvalisus, tarkvaratehnika alused, arvutinägemine, masinõpe ja andmebaaside haldamine.

Millise eriala peaksite valima?

Ma arvan, et see sõltub enamasti teie eelistustest. Lühidalt:

  • Valige arvutiteadus, kui teile meeldib matemaatika, loogika või kui soovite minna CS-i spetsialiseerunud valdkonnale nagu tehisintellekt, masinõpe, turvalisus või graafika.
  • Peaksite valima tarkvaratehnika, kui olete rohkem huvitatud praktilisest lähenemisviisist ja kui soovite õppida tarkvara ehitamise ja hooldamise üldist elutsüklit.

Aga oota - mis see siis on? Milline eriala on parem, kui soovite olla tarkvarainsener?

Siin on minu arvamus. Selles konkreetses ülikoolis (Waterloo ülikool) on selle konkreetse programminõuete kogumiga arvutiteadus parem eriala, kui soovite olla tarkvarainsener.

Oletame lihtsalt lihtsuse huvides, et loodate saada Põhja-Ameerikas tarkvarainsenerina kõige paremini tasustatud töökohti (~ 100 000 USD aastas). Need töökohad on tavaliselt suurtes tarkvarafirmades (mõtleme Microsoftile, Google'ile, Amazonile jne) või keskmise suurusega ja suure kasvuettevõtetele (mõtle Dropbox, Lyft, Snapchat, Pinterest jne).

Tavaliselt ootavad nad tarkvarainseneri kandidaadilt võimet kirjutada kindlat koodi ja luua huvitavaid projekte, samuti arvutiteaduse aluseid, sealhulgas andmestruktuure ja algoritme.

Ma arvan, et parim viis selle oskuste kogumi kasvatamiseks on arvutiteaduse aluste kiire õppimine ja oma aja kulutamine probleemide lahendamisele ja koodi kirjutamisele.

Tuginedes tarkvaratehnika õppekavale ja lähtudes sellest, kui hõivatud inseneriõpilased üldiselt kipuvad olema, arvan, et tarkvaratehnika abil oleks seda raskem teha kui arvutiteadusega.

Selle konkreetse arvutiteaduse programmi eeliseks on ka see, et see võimaldab rohkem informaatika valikaineid. See on suurepärane ka seetõttu, et sõltuvalt tööturu nõudlusest saate oma kursusi kohandada. Näiteks kui mobiilirakenduste arendamine on nõudlik, saate seda õppida. Ja kui paralleelarvutus on nõudlik, võite selle asemel keskenduda.

Olen kindel, et tarkvaratehnika põhialuste õppimisel on mõned eelised (projektijuhtimine, disain, testimine jne). Kuid ma isiklikult eelistaksin paindlikkust etteantud oskuste komplekti üle. Seetõttu arvan, et arvutiteadus on selle konkreetse õppekavaga tarkvarainseneriks saamiseks parem eriala.

Muidugi on see ainult minu arvamus ja see on ainult üks konkreetne ülikool. Mulle meeldiks kuulda teie arvamusest ja sellest, milline oli teie kogemus, kui olete spetsialiseerunud kas arvutiteadusele või tarkvaratehnikale. Palun andke mulle sellest teada allpool olevas kommentaaris.

Paar märkust

Märkus 1: Erinevatel ülikoolidel on nende kahe eriala suhtes erinevad nõuded. See artikkel peaks olema hea lähtepunkt, kuid siiski peaksite heitma pilgu ülikooli nõuetele, kus olete huvitatud.

Märkus 2: Mõnes ülikoolis pole isegi tarkvaratehnika eriala. Näiteks Vancouveris asuvas Briti Columbia ülikoolis on arvutiteaduse ja arvutitehnika kraad, kuid mitte tarkvaratehnika. Kuid neil on tarkvaratehnika kontsentratsioon nii arvutiteaduse programmis kui ka arvutitehnikas.

Kui ülikoolis, kuhu olete huvitatud, pole tarkvaratehnika eriala, läheksin arvutiteaduse juurde, kui soovite saada tarkvaraarendajaks. Arvutitehnika on rohkem keskendunud riistvarale kui arvutiteadus või tarkvaratehnika, seega on see vähem otseselt seotud tüüpilise tarkvaraarendaja tööga.

Ja siin on peamised allikad, mida ma kasutasin:

  • Arvutiteadus Waterloos
  • Tarkvaratehnika Waterloos

Täname lugemast ja palju õnne ülikooli ja eriala valimisel! ?