Computer Science VS Software Engineering - Hvilken major er bedst for dig?

Hey alle sammen! Mit navn er YK, og jeg kører i øjeblikket CS Dojo, en YouTube-kanal med programmeringsuddannelse med 200.000+ abonnenter. Jeg var også tidligere softwareudvikler hos Google.

To af de mest almindelige spørgsmål, som mit publikum stiller mig, er:

"Hvad er forskellen mellem computerfag og softwareingeniørfag?"

Og…

"Skal jeg vælge datalogi eller softwareudvikling, hvis jeg vil blive softwareingeniør?"

I denne artikel vil jeg besvare dette og give dig min egen hurtige analyse af disse store.

Et hurtigt overblik over disse to store

  • Datalogi er studiet af, hvordan computere fungerer, for det meste fra det teoretiske og matematiske perspektiv.
  • Du skal vælge datalogi, hvis du kan lide matematik, logik, eller hvis du vil komme ind på et specialiseret felt inden for CS såsom kunstig intelligens, maskinindlæring, sikkerhed eller grafik.
  • Software Engineering er studiet af, hvordan softwaresystemer er bygget, herunder emner som projektledelse, kvalitetssikring og softwaretest.
  • Du bør vælge Software Engineering, hvis du er mere interesseret i den praktiske tilgang, og hvis du vil lære den samlede livscyklus for, hvordan software bygges og vedligeholdes.
  • Både datalogi og softwareteknik lærer fundamentet i programmering og datalogi, så du kan vælge en af ​​dem til at blive softwareudvikler.

For at forstå forskellen mellem computerfag og softwareingeniørfag, lad os se på deres respektive læseplaner ved University of Waterloo i Canada.

Jeg valgte University of Waterloo til dette, fordi det har et af de bedste datalogiprogrammer i Nordamerika.

Jobudsigter

Lad os først sammenligne de slags job og praktikophold, du kan få gennem hvert program.

Heldigvis giver University of Waterloos hjemmeside flere eksempler.

For hver større er her nogle af titlerne, som alumner besidder, og hvor de arbejder:

Computer videnskab

  • Webudvikler / arkitekt, Steele Group
  • Programmør, Harry Rosen Inc.
  • Mobile / Cloud-udvikler, Clearbridge Associates Limited
  • Software Engineering, General Dynamics Canada
  • Softwareudviklingsteknologi, Microsoft
  • Agile Engineer, Pivotal Labs
  • Forretningsanalytiker, Canadian Tire Corporation
  • Udvikler advokat, Google
  • Produktchef, Dropbox

Software Engineering

  • Softwareudvikler, Tagged Inc.
  • Softwareudvikler, IBM Canada
  • Software Manager, Arius Software Corporation
  • Softwareingeniør, VistaPrint USA
  • Softwareingeniør, Harris Corporation
  • Softwareudvikler, Accenture Inc.
  • Teknisk produktchef - software design og udvikling, NexJ Systems Inc.
  • Konsulent, PureFacts finansielle løsninger
  • Implementation Consultant, Desire2Learn

Som du kan se, er der ikke en stor forskel mellem de typer job, du kan få.

De mest almindelige jobuddannede får efter at have optjent deres grad inden for datalogi eller softwareingeniør er softwareudvikler eller softwareingeniør.

Der er også andre relaterede muligheder, såsom Product Manager, QA Analyst og Technology Consultant. Dine muligheder afhænger af dit specifikke færdighedssæt.

Førsteårs kurser:

Lad os nu se på hvert programs krævede kurser. Lad os først sammenligne nogle af de kurser, du skal tage i dit første år.

Computer videnskab

  • CS 135 - Design af funktionelle programmer
  • CS 136 - Algoritmedesign og dataabstraktion
  • MATH 135 - Algebra
  • MATH 136 - Lineær algebra 1
  • MATH 137 - Calculus 1
  • MATH 138 - Calculus 2
  • Plus et par valgfag

Software Engineering

  • CS 137 - Programmeringsprincipper
  • CS 138 - Data Abstraktion og Implementering
  • MATH 115 - Lineær algebra til ingeniørarbejde
  • MATH 117 - Calculus 1 for Engineering
  • MATH 119 - Calculus 2 for Engineering
  • MATH 135 - Algebra for Honours Mathematics
  • ECE 105 - Fysik inden for elektroteknik 1
  • ECE 106 - Elektricitet og magnetisme
  • ECE 124 - Digitale kredsløb og systemer
  • ECE 140 - Lineære kredsløb
  • SE 101 - Metoder til softwareudvikling

Som du kan se, er de første årskurser også ret ens. De dækker begge et par grundlæggende datalogikurser og et par matematiske kurser i lineær algebra og calculus.

Den eneste store forskel er, at softwareteknik har yderligere fysik- og elektrotekniske komponenter, mens datalogi har nogle få valgfag.

Kurser efter det første år:

Hvad med de krævede og valgfrie kurser efter det første år? Lad os se på flere eksempler her:

Computer videnskab:

  • MATH 239 Introduktion til kombinatorik
  • STAT 230 Sandsynlighed
  • STAT 231 Statistik
  • CS 240 datastrukturer og datastyring
  • CS 241 Grundlaget for sekventielle programmer
  • CS 245 Logik og beregning
  • CS 246 Objektorienteret softwareudvikling <- ikke påkrævet i softwareudvikling
  • CS 251 Computerorganisation og design
  • CS 341 algoritmer
  • CS 350-operativsystemer
  • Plus, flere datalogi valgfag

Software Engineering:

  • CHE 102 Kemi for ingeniører
  • ECE 222 digitale computere (inkluderer monteringssprog)
  • ECE 358 computernetværk
  • MATH 213 Avanceret matematik til softwareingeniører
  • MATH 239 Introduktion til kombinatorik
  • STAT 206 Statistik for softwareudvikling
  • MSCI 261 Ingeniørøkonomi: Økonomistyring for ingeniører
  • CS 241 Grundlaget for sekventielle programmer
  • CS 240 datastrukturer og datastyring
  • CS 247 Software Engineering Principper <- ikke påkrævet til datalogi
  • CS 341 algoritmer
  • CS 349 brugergrænseflader <- ikke påkrævet til datalogi
  • CS 343 Samtidig og parallel programmering <- ikke påkrævet til datalogi
  • CS 348 Introduktion til databasestyring
  • SE 212 Logik og beregning
  • SE 350-operativsystemer
  • SE 465 Softwaretest og kvalitetssikring
  • SE 464 Software Design og arkitekturer
  • SE 463 Specifikation og analyse af softwarekrav
  • SE 490 designprojekt
  • Plus et par datalogi og elektroteknik valgfag

Jeg har givet dig en masse information at fordøje her. Men her er mit resume:

Når det kommer til kravene i matematik og statistik, er Computer Science og Software Engineering næsten identiske. De dækker kombinatorik, sandsynlighed og statistik.

Kernekravene til datalogi er også ens og spænder over algoritmer, datastrukturer og operativsystemer.

Hovedforskellen er, at:

  • Software Engineering har flere krav inden for grundlæggende elektroteknik og software engineering, såsom specifikation af softwaretest, design og softwarekrav.
  • Datalogi tillader flere valgfag i højere grad computervidenskabskurser. Du kan vælge mellem en bred vifte af emner såsom sikkerhed, softwaretekniske grundlæggende, computersyn, maskinindlæring og databasestyring.

Så hvilken major skal du vælge?

Jeg tror, ​​det afhænger mest af dine præferencer. Kort sagt:

  • Du bør vælge datalogi, hvis du kan lide matematik, logik, eller hvis du vil komme ind på et specialiseret felt inden for CS som kunstig intelligens, maskinindlæring, sikkerhed eller grafik.
  • Du bør vælge Software Engineering, hvis du er mere interesseret i den praktiske tilgang, og hvis du vil lære den samlede livscyklus for, hvordan software bygges og vedligeholdes.

Men vent - hvad er det så? Hvilken major er bedre, hvis du vil være softwareingeniør?

Her er min mening. På dette særlige universitet (University of Waterloo), med dette særlige sæt programkrav, er datalogi en bedre major, hvis du vil være softwareingeniør.

Lad os antage, at du bare for enkelhedens skyld håber at få en af ​​de mest betalte job (~ $ 100.000 USD / år) som softwareingeniør i Nordamerika. Disse job er typisk hos store softwarevirksomheder (tænk Microsoft, Google, Amazon osv.) Eller hos mellemstore virksomheder med høj vækst (tænk Dropbox, Lyft, Snapchat, Pinterest osv.).

Typisk hvad de leder efter i en softwareingeniør kandidat er evnen til at skrive solid kode og opbygge interessante projekter såvel som datalogiske grundlæggende, herunder datastrukturer og algoritmer.

Jeg tror, ​​at den bedste måde at dyrke dette færdighedssæt på er ved hurtigt at lære grundlæggende i datalogi og bruge din egen tid på at løse problemer og skrive kode.

Baseret på læseplanen for Software Engineering og baseret på hvor travle ingeniørstuderende har en tendens til at være generelt, tror jeg, det ville være sværere at gøre dette med Software Engineering end med Computer Science.

En anden fordel ved dette særlige datalogiprogram er, at det tillader flere datalogiske valgfag. Dette er også godt, for afhængigt af hvad der er efterspurgt på jobmarkedet, vil du være i stand til at justere dine kurser. For eksempel, hvis udvikling af mobilapps er efterspurgt, kan du lære det. Og hvis der er efterspørgsel efter parallel computing, kan du i stedet fokusere på det.

Jeg er sikker på, at der er nogle fordele ved at lære fundamentale softwareteknik (projektledelse, design, test osv.). Men jeg vil personligt hellere tage fleksibilitet over et foruddefineret sæt færdigheder. Derfor synes jeg, at datalogi er en bedre major for at blive softwareingeniør med netop denne læseplan.

Det er selvfølgelig bare min mening, og dette er bare et bestemt universitet. Jeg ville elske at høre om din mening, og hvordan din oplevelse var, hvis du studerede enten Computer Science eller Software Engineering. Giv mig besked i en kommentar nedenfor.

Et par noter

Note 1: Forskellige universiteter har forskellige krav til disse to hovedfag. Denne artikel skal være et godt udgangspunkt, men du skal stadig se på programmets krav på det universitet, du er interesseret i at gå på.

Bemærk 2: Nogle universiteter har ikke engang en softwareingeniørfag. For eksempel har University of British Columbia i Vancouver datalogi og computerteknik grader, men ikke software engineering. Men de har en softwareteknisk koncentration inden for deres datalogiprogram såvel som inden for computerteknik.

Hvis det universitet, du er interesseret i at gå på, ikke har en softwareingeniørfag, ville jeg gå med datalogi, hvis du vil blive softwareudvikler. Computer Engineering er mere fokuseret på hardware end Computer Science eller Software Engineering, så det er mindre direkte relateret til en typisk softwareudvikler job.

Og her er de vigtigste kilder, jeg brugte:

  • Datalogi ved Waterloo
  • Software Engineering hos Waterloo

Tak for læsningen, og held og lykke med at vælge et universitet og din hovedfag! ?