Počítačové vedy VS Softvérové ​​inžinierstvo - Ktorý hlavný obor je pre vás najlepší?

Ahojte, všetci! Volám sa YK a momentálne prevádzkujem CS Dojo, kanál YouTube zameraný na programovacie vzdelávanie s viac ako 200 000 predplatiteľmi. Tiež som predtým pracoval ako vývojár softvéru v spoločnosti Google.

Dve z najbežnejších otázok, ktoré sa ma diváci pýtajú, sú:

"Aký je rozdiel medzi počítačovými vedami a softvérovým inžinierstvom?"

A ...

"Mám si zvoliť informatiku alebo softvérové ​​inžinierstvo, ak sa chcem stať softvérovým inžinierom?"

V tomto článku na to odpoviem a poskytnem vám vlastnú rýchlu analýzu týchto veľkých spoločností.

Stručný prehľad týchto dvoch veľkých spoločností

  • Počítačová veda je štúdium fungovania počítačov, väčšinou z teoretického a matematického hľadiska.
  • Počítačovú vedu by ste si mali zvoliť, ak máte radi matematiku, logiku alebo ak sa chcete dostať do špecializovanej oblasti CS, ako je umelá inteligencia, strojové učenie, bezpečnosť alebo grafika.
  • Softvérové ​​inžinierstvo je štúdium toho, ako sa vytvárajú softvérové ​​systémy, vrátane tém, ako je projektové riadenie, zabezpečenie kvality a testovanie softvéru.
  • Softvérové ​​inžinierstvo by ste si mali zvoliť, ak vás zaujíma praktický prístup a ak sa chcete dozvedieť celkový životný cyklus spôsobu vytvárania a údržby softvéru.
  • Výpočetná technika aj softvérové ​​inžinierstvo učia základy programovania a informatiky, takže si môžete zvoliť buď jedného z nich, ktorý sa stane vývojárom softvéru.

Aby sme pochopili rozdiel medzi odbormi v oblasti počítačovej vedy a softvérového inžinierstva, pozrime sa na ich príslušné učebné osnovy na University of Waterloo v Kanade.

Vybral som si kvôli tomu University of Waterloo, pretože má jeden z najlepších programov informatiky v Severnej Amerike.

Pracovné vyhliadky

Poďme si najskôr porovnať druhy pracovných miest a stáží, ktoré môžete získať v rámci každého programu.

Našťastie webová stránka University of Waterloo poskytuje niekoľko príkladov.

Pre každého majora sú uvedené niektoré z titulov, ktoré absolventi majú a kde pracujú:

Počítačová veda

  • Webový vývojár / architekt, skupina Steele
  • Programátor, Harry Rosen Inc.
  • Mobile / Cloud Developer, Clearbridge Associates Limited
  • Softvérové ​​inžinierstvo, General Dynamics Canada
  • Softvér pre vývoj softvéru, Microsoft
  • Agilný inžinier, kľúčové laboratóriá
  • Obchodný analytik, Canadian Tire Corporation
  • Advokát vývojárov, Google
  • Produktový manažér, Dropbox

Softvérové ​​inžinierstvo

  • Softvérový vývojár, Tagged Inc.
  • Softvérový vývojár, IBM Kanada
  • Softvérový manažér, Arius Software Corporation
  • Softvérový inžinier, VistaPrint USA
  • Softvérový inžinier, Harris Corporation
  • Softvérový vývojár, Accenture Inc.
  • Technický produktový manažér - Dizajn a vývoj softvéru, NexJ Systems Inc.
  • Konzultant, PureFacts Financial Solutions
  • Konzultant pre implementáciu, Desire2Learn

Ako vidíte, nie je veľký rozdiel medzi typmi pracovných miest, ktoré môžete získať.

Najčastejšie absolventi zamestnania, ktorí získajú titul počítačová veda alebo softvérové ​​inžinierstvo, sú softvérový vývojár alebo softvérový inžinier.

Existujú aj ďalšie súvisiace možnosti, napríklad produktový manažér, analytik QA a technologický konzultant. Vaše možnosti budú závisieť od konkrétnej schopnosti.

Kurzy prvého ročníka:

Poďme sa teraz pozrieť na povinné kurzy každého programu. Najprv si porovnajme niektoré kurzy, ktoré by si musel absolvovať v prvom ročníku.

Počítačová veda

  • CS 135 - Návrh funkčných programov
  • CS 136 - Návrh algoritmu a abstrakcia údajov
  • MATH 135 - Algebra
  • MATH 136 - Lineárna algebra 1
  • MATH 137 - počet 1
  • Matematika 138 - Počet 2
  • Plus pár voliteľných predmetov

Softvérové ​​inžinierstvo

  • CS 137 - Zásady programovania
  • CS 138 - Abstrakcia a implementácia údajov
  • MATH 115 - Lineárna algebra pre strojárstvo
  • MATH 117 - Počet 1 pre strojárstvo
  • MATH 119 - Calculus 2 for Engineering
  • MATH 135 - Algebra pre vyznamenanie matematiku
  • ECE 105 - Fyzika elektrotechniky 1
  • ECE 106 - Elektrina a magnetizmus
  • ECE 124 - Digitálne obvody a systémy
  • ECE 140 - lineárne obvody
  • SE 101 - Metódy softvérového inžinierstva

Ako vidíte, kurzy prvého ročníka sú si tiež dosť podobné. Obidva pokrývajú niekoľko základných kurzov informatiky a niekoľko matematických kurzov lineárnej algebry a počtu.

Jediný zásadný rozdiel je v tom, že softvérové ​​inžinierstvo má ďalšie komponenty fyziky a elektrotechniky, zatiaľ čo informatika má ešte niekoľko voliteľných predmetov.

Kurzy po prvom ročníku:

Čo tak povinné a výberové kurzy po prvom ročníku? Pozrime sa tu na niekoľko príkladov:

Počítačová veda:

  • MATH 239 Úvod do kombinatoriky
  • STAT 230 Pravdepodobnosť
  • Štatistika STAT 231
  • CS 240 Dátové štruktúry a správa údajov
  • CS 241 Základy sekvenčných programov
  • Logika a výpočet CS 245
  • CS 246 Objektovo-orientovaný vývoj softvéru <- nevyžaduje sa v prípade veľkých softvérových spoločností
  • CS 251 Počítačová organizácia a dizajn
  • Algoritmy CS 341
  • Operačné systémy CS 350
  • Plus niekoľko voliteľných predmetov z oblasti informatiky

Softvérové ​​inžinierstvo:

  • CHE 102 Chémia pre inžinierov
  • Digitálne počítače ECE 222 (vrátane montážneho jazyka)
  • ECE 358 Počítačové siete
  • MATH 213 Pokročilá matematika pre softvérových inžinierov
  • MATH 239 Úvod do kombinatoriky
  • Štatistika STAT 206 pre softvérové ​​inžinierstvo
  • MSCI 261 Engineering Economics: Financial Management for Engineers
  • CS 241 Základy sekvenčných programov
  • CS 240 Dátové štruktúry a správa údajov
  • CS 247 Princípy softvérového inžinierstva <- nevyžaduje sa pre veľké spoločnosti v oblasti informatiky
  • Algoritmy CS 341
  • Používateľské rozhrania CS 349 <- nevyžaduje sa pre veľké spoločnosti v oblasti informatiky
  • CS 343 Súbežné a paralelné programovanie <- nevyžaduje sa pre veľké spoločnosti v oblasti informatiky
  • CS 348 Úvod do správy databáz
  • Logika a výpočet SE 212
  • Operačné systémy SE 350
  • SE 465 Testovanie softvéru a zabezpečenie kvality
  • SE 464 Dizajn a architektúry softvéru
  • SE 463 Špecifikácia a analýza softvérových požiadaviek
  • Dizajnový projekt SE 490
  • Plus niekoľko voliteľných predmetov z oblasti informatiky a elektrotechniky

Dal som vám veľa informácií, aby ste ich tu strávili. Ale tu je moje zhrnutie:

Pokiaľ ide o požiadavky v matematike a štatistike, informatika a softvérové ​​inžinierstvo sú takmer identické. Zahŕňajú kombinatoriku, pravdepodobnosť a štatistiku.

Podobné sú aj základné požiadavky na informatiku, ktoré sa týkajú algoritmov, dátových štruktúr a operačných systémov.

Kľúčový rozdiel je v tom, že:

  • Softvérové ​​inžinierstvo má ďalšie požiadavky v oblasti elektrotechniky a základov softvérového inžinierstva, ako je testovanie softvéru, návrh a špecifikácia softvérových požiadaviek.
  • Počítačová veda umožňuje viac voliteľných predmetov na kurzoch informatiky na vyššej úrovni. Môžete si vybrať zo širokej škály tém, ako sú bezpečnosť, základy softvérového inžinierstva, počítačové videnie, strojové učenie a správa databáz.

Aký obor by ste si mali zvoliť?

Myslím si, že to väčšinou závisí od vašich preferencií. V skratke:

  • Mali by ste si zvoliť informatiku, ak máte radi matematiku, logiku alebo ak sa chcete dostať do špecializovanej oblasti CS, ako je umelá inteligencia, strojové učenie, bezpečnosť alebo grafika.
  • Softvérové ​​inžinierstvo by ste si mali zvoliť, ak vás zaujíma praktický prístup a ak sa chcete dozvedieť celkový životný cyklus spôsobu vytvárania a údržby softvéru.

Ale počkajte - čo to potom je? Ktorý z hlavných odborov je lepší, ak chcete byť softvérovým inžinierom?

Tu je môj názor. Na tejto konkrétnej univerzite (University of Waterloo) s touto konkrétnou požiadavkou na program je informatika lepším odborom, ak chcete byť softvérovým inžinierom.

Len pre zjednodušenie predpokladajme, že dúfate, že ako softvérový inžinier v Severnej Amerike získate jedno z najlepšie platených pracovných miest (~ 100 000 USD / rok). Ide zvyčajne o veľké softvérové ​​spoločnosti (napríklad Microsoft, Google, Amazon atď.) Alebo o stredne veľké a rýchlo rastúce spoločnosti (napríklad Dropbox, Lyft, Snapchat, Pinterest atď.).

To, čo hľadajú u kandidáta na softvérového inžiniera, je zvyčajne schopnosť písať solídny kód a vytvárať zaujímavé projekty, ako aj základy informatiky vrátane dátových štruktúr a algoritmov.

Myslím si, že najlepším spôsobom, ako si túto sadu zručností vypestovať, je rýchle osvojenie si základov informatiky a trávenie vlastného času cvičením pri riešení problémov a písaní kódu.

Na základe učebných osnov pre softvérové ​​inžinierstvo a na základe toho, ako sú zvyčajne vyťažení študenti inžinierstva, si myslím, že by to bolo ťažšie so softvérovým inžinierstvom ako s informatikou.

Ďalšou výhodou tohto konkrétneho programu Computer Science je, že umožňuje viac voliteľných predmetov informatiky. To je tiež výborné, pretože v závislosti od toho, čo je na trhu práce požadované, budete môcť upraviť svoje kurzy. Ak je napríklad dopyt po vývoji mobilných aplikácií, môžete sa to naučiť. A ak je dopyt po paralelnom výpočte, môžete sa namiesto toho zamerať na to.

Som si istý, že osvojenie základných princípov softvérového inžinierstva (projektové riadenie, dizajn, testovanie atď.) Má nejaké výhody. Ale osobne by som radšej vzal flexibilitu nad vopred definovaným súborom zručností. Preto si myslím, že informatika je lepším odborníkom na to, aby sa z tohto konkrétneho učebného plánu stal softvérový inžinier.

Samozrejme, je to iba môj názor a toto je iba jedna konkrétna univerzita. Rád by som počul o vašom názore a o tom, aké boli vaše skúsenosti, keby ste sa zamerali na informatiku alebo softvérové ​​inžinierstvo. Dajte mi prosím vedieť v komentári nižšie.

Niekoľko poznámok

Poznámka 1: Rôzne univerzity majú odlišné požiadavky na tieto dve veľké spoločnosti. Tento článok by mal byť dobrým východiskovým bodom, mali by ste sa však stále pozrieť na programové požiadavky na univerzite, ktorú chcete navštevovať.

Poznámka 2: Niektoré univerzity nemajú ani softvérové ​​inžinierstvo. Napríklad University of British Columbia vo Vancouveri má tituly z počítačových vied a počítačového inžinierstva, ale nie softvérové ​​inžinierstvo. Ale majú sústredenie v softvérovom inžinierstve v rámci svojho programu Computer Science, ako aj v Computer Engineering.

Ak univerzita, na ktorú máte záujem, nemá hlavné zameranie na softvérové ​​inžinierstvo, chcel by som ísť na informatiku, ak sa chcete stať vývojárom softvéru. Počítačové inžinierstvo sa viac zameriava na hardvér ako počítačové vedy alebo softvérové ​​inžinierstvo, takže to menej priamo súvisí s prácou typického vývojára softvéru.

A tu sú hlavné zdroje, ktoré som použil:

  • Computer Science at Waterloo
  • Softvérové ​​inžinierstvo vo Waterloo

Ďakujeme za prečítanie a veľa šťastia pri výbere univerzity a vášho odboru! ?