Tietojenkäsittelytiede VS-ohjelmistosuunnittelu - mikä pääaine sopii sinulle parhaiten?

Hei kaikki! Nimeni on YK, ja minulla on tällä hetkellä CS Dojo, ohjelmointikoulutuksen YouTube-kanava, jolla on yli 200 000 tilaajaa. Olin myös aiemmin ohjelmistokehittäjä Googlessa.

Kaksi yleisintä kysymystä, joita yleisöni kysyy, ovat:

"Mitä eroa on tietojenkäsittelytieteen ja ohjelmistotekniikan pääaineilla?"

Ja…

"Pitäisikö minun valita tietojenkäsittelytiede tai ohjelmistotekniikka, jos haluan tulla ohjelmistoinsinööriksi?"

Tässä artikkelissa vastaan ​​tähän ja annan sinulle oman nopean analyysini näistä suurista yrityksistä.

Nopea yleiskatsaus näistä kahdesta pääaineesta

  • Tietojenkäsittelytiede on tutkimus tietokoneiden toiminnasta, lähinnä teoreettisesta ja matemaattisesta näkökulmasta.
  • Sinun tulisi valita tietojenkäsittelytiede, jos pidät matematiikasta, logiikasta tai jos haluat päästä erikoistuneelle alalle CS: ssä, kuten tekoäly, koneoppiminen, turvallisuus tai grafiikka.
  • Ohjelmistotuotanto on tutkimus siitä, miten ohjelmistojärjestelmät rakennetaan, mukaan lukien aiheet, kuten projektinhallinta, laadunvarmistus ja ohjelmistojen testaus.
  • Sinun tulisi valita ohjelmistotekniikka, jos olet kiinnostunut käytännönläheisemmästä lähestymistavasta ja jos haluat oppia yleisen elinkaaren siitä, miten ohjelmistot rakennetaan ja ylläpidetään.
  • Sekä tietojenkäsittely että ohjelmistotekniikka opettavat ohjelmoinnin ja tietojenkäsittelytieteen perusteita, joten voit valita jommankumman ohjelmistokehittäjäksi.

Ymmärtääksemme eron tietojenkäsittelytieteen ja ohjelmistotekniikan pääaineiden välillä katsokaamme heidän vastaavaa opetussuunnitelmaansa Waterloon yliopistossa Kanadassa.

Valitsin tähän Waterloon yliopiston, koska sillä on yksi Pohjois-Amerikan parhaista tietojenkäsittelyohjelmista.

Työmahdollisuudet

Verrataan ensin, minkä tyyppisiä työpaikkoja ja harjoittelupaikkoja voit saada jokaisen ohjelman kautta.

Onneksi Waterloon yliopiston verkkosivusto tarjoaa useita esimerkkejä.

Jokaiselle pääaineelle tässä on joitain nimityksiä, joita alumni omistaa ja missä he työskentelevät:

Tietokone Tiede

  • Verkkokehittäjä / arkkitehti, Steele Group
  • Ohjelmoija, Harry Rosen Inc.
  • Mobile / Cloud Developer, Clearbridge Associates Limited
  • Ohjelmistotuotanto, General Dynamics Canada
  • Ohjelmistokehitys, Microsoft
  • Ketterä insinööri, Pivotal Labs
  • Liiketoiminta-analyytikko, Canadian Tire Corporation
  • Kehittäjäasianajaja, Google
  • Tuotepäällikkö, Dropbox

Ohjelmistotuotanto

  • Ohjelmistokehittäjä, Tagged Inc.
  • Ohjelmistokehittäjä, IBM Kanada
  • Ohjelmistopäällikkö, Arius Software Corporation
  • Ohjelmistoinsinööri, VistaPrint USA
  • Ohjelmistoinsinööri, Harris Corporation
  • Ohjelmistokehittäjä, Accenture Inc.
  • Tekninen tuotepäällikkö - ohjelmistosuunnittelu ja -kehitys, NexJ Systems Inc.
  • Konsultti, PureFacts Financial Solutions
  • Toteutuskonsultti, Desire2Learn

Kuten näette, saamiesi työpaikkojen välillä ei ole suurta eroa.

Yleisin työhön valmistunut saa tietojenkäsittelytieteen tai ohjelmistotekniikan tutkinnon suorittamisen jälkeen ohjelmistokehittäjä tai ohjelmistosuunnittelija.

On myös muita asiaan liittyviä vaihtoehtoja, kuten tuotepäällikkö, laadunvalvontaanalyytikko ja teknologiakonsultti. Vaihtoehdot riippuvat taitosi joukosta.

Ensimmäisen vuoden kurssit:

Katsotaanpa nyt kunkin ohjelman vaaditut kurssit. Verrataan ensin joitain kursseja, jotka sinun on suoritettava ensimmäisenä vuonna.

Tietokone Tiede

  • CS 135 - Toiminnallisten ohjelmien suunnittelu
  • CS 136 - Algoritmien suunnittelu ja tiedonkeruu
  • MATH 135 - Algebra
  • MATH 136 - Lineaarinen algebra 1
  • MATH 137 - Laskenta 1
  • MATTA 138 - Laskin 2
  • Plus muutama valinnainen

Ohjelmistotuotanto

  • CS 137 - Ohjelmointiperiaatteet
  • CS 138 - Tiedonkeruu ja toteutus
  • MATH 115 - Lineaarinen algebra tekniikkaa varten
  • MATH 117 - Laskenta 1 tekniikalle
  • MATH 119 - Laskenta 2 tekniikalle
  • MATH 135 - Matematiikan kunniamerkki
  • ECE 105 - Sähkötekniikan fysiikka 1
  • ECE 106 - Sähkö ja magneetti
  • ECE 124 - Digitaaliset piirit ja järjestelmät
  • ECE 140 - Lineaariset piirit
  • SE 101 - Ohjelmistotekniikan menetelmät

Kuten näette, myös ensimmäisen vuoden kurssit ovat melko samanlaisia. Ne molemmat kattavat muutaman perustietotekniikan kurssin ja muutaman matemaattisen kurssin lineaarisessa algebrassa ja laskennassa.

Ainoa merkittävä ero on se, että ohjelmistotuotannossa on muita fysiikan ja sähkötekniikan komponentteja, kun taas tietojenkäsittelytieteessä on muutama valinnainen.

Kurssit ensimmäisen vuoden jälkeen:

Entä vaaditut ja valinnaiset kurssit ensimmäisen vuoden jälkeen? Katsotaanpa useita esimerkkejä täältä:

Tietokone Tiede:

  • MATH 239 Johdatus yhdistelmiin
  • STAT 230 Todennäköisyys
  • STAT 231 Tilastot
  • CS 240 -tietorakenteet ja tiedonhallinta
  • CS 241 Peräkkäisten ohjelmien perustukset
  • CS 245 Logiikka ja laskenta
  • CS 246 olio-ohjelmistokehitys <- ei vaadita ohjelmistotuotannon päätoimialoilla
  • CS 251 Tietokoneiden organisaatio ja suunnittelu
  • CS 341 -algoritmit
  • CS 350 -käyttöjärjestelmät
  • Lisäksi useita tietojenkäsittelytieteen valinnaisia

Ohjelmistotuotanto:

  • CHE 102 Kemia insinööreille
  • ECE 222 digitaaliset tietokoneet (sisältää kokoonpanokielen)
  • ECE 358 -tietoverkot
  • MATH 213 Advanced Mathematics -ohjelmistosuunnittelijoille
  • MATH 239 Johdatus yhdistelmiin
  • STAT 206 Ohjelmistotuotannon tilastot
  • MSCI 261 Engineering Economics: Taloushallinta insinööreille
  • CS 241 Peräkkäisten ohjelmien perustukset
  • CS 240 -tietorakenteet ja tiedonhallinta
  • CS 247 Ohjelmistotuotannon periaatteet <- ei vaadita tietojenkäsittelytieteen pääaineille
  • CS 341 -algoritmit
  • CS 349 -käyttöliittymät <- ei vaadita tietojenkäsittelytieteen pääaineille
  • CS 343 Rinnakkais- ja rinnakkaisohjelmointi <- ei vaadita tietojenkäsittelytieteen pääaineille
  • CS 348 Johdanto tietokannan hallintaan
  • SE 212 Logiikka ja laskenta
  • SE 350 -käyttöjärjestelmät
  • SE 465 Ohjelmistojen testaus ja laadunvarmistus
  • SE 464 Ohjelmistosuunnittelu ja -arkkitehtuurit
  • SE 463 Ohjelmistovaatimusten määrittely ja analyysi
  • SE 490 -suunnitteluprojekti
  • Lisäksi muutama tietojenkäsittelytieteen ja sähkötekniikan valinnainen

Olen antanut sinulle paljon tietoa sulattamista varten täällä. Mutta tässä on yhteenvetoni:

Matematiikan ja tilastojen vaatimusten osalta tietojenkäsittelytiede ja ohjelmistotuotanto ovat lähes identtisiä. Ne kattavat kombinaatiot, todennäköisyydet ja tilastot.

Myös tietojenkäsittelytieteen perusvaatimukset ovat samanlaiset, ja ne ulottuvat algoritmeihin, tietorakenteisiin ja käyttöjärjestelmiin.

Tärkein ero on, että:

  • Ohjelmistotuotannolla on enemmän vaatimuksia sähkötekniikassa ja ohjelmistotekniikan perusteissa, kuten ohjelmistojen testauksessa, suunnittelussa ja ohjelmistovaatimusten määrittelyssä.
  • Tietojenkäsittelytiede sallii enemmän valinnaisia ​​aineita korkeamman tason tietojenkäsittelytieteen kursseilla. Voit valita monenlaisista aiheista, kuten turvallisuus, ohjelmistotekniikan perusteet, tietokonenäkö, koneoppiminen ja tietokantojen hallinta.

Joten mikä pääaine sinun pitäisi valita?

Mielestäni se riippuu enimmäkseen mieltymyksistäsi. Lyhyesti:

  • Sinun tulisi valita tietojenkäsittelytiede, jos pidät matematiikasta, logiikasta tai jos haluat päästä tietyn alan erikoistuneille aloille, kuten tekoäly, koneoppiminen, tietoturva tai grafiikka.
  • Sinun tulisi valita ohjelmistotuotanto, jos olet kiinnostunut käytännönläheisemmästä lähestymistavasta ja jos haluat oppia yleisen elinkaaren siitä, miten ohjelmistot rakennetaan ja ylläpidetään.

Mutta odota - mikä se sitten on? Mikä pääaine on parempi, jos haluat olla ohjelmistoinsinööri?

Tässä on mielipiteeni. Tässä tietyssä yliopistossa (Waterloon yliopisto) tietojenkäsittelytiede on parempi pääohjelma, jos haluat olla ohjelmistosuunnittelija.

Oletetaan yksinkertaisesti yksinkertaisuuden vuoksi, että toivot saavasi yhden parhaiten palkkaavan työpaikan (~ 100 000 dollaria vuodessa) ohjelmistoinsinöörinä Pohjois-Amerikassa. Nämä työpaikat ovat tyypillisesti suurissa ohjelmistoyrityksissä (ajattele Microsoft, Google, Amazon jne.) Tai keskisuurissa, nopeasti kasvavissa yrityksissä (ajattele Dropbox, Lyft, Snapchat, Pinterest jne.).

Ohjelmistosuunnittelijaehdokkaasta he etsivät yleensä kykyä kirjoittaa kiinteää koodia ja rakentaa mielenkiintoisia projekteja sekä tietojenkäsittelytieteen perusteita, mukaan lukien tietorakenteet ja algoritmit.

Mielestäni paras tapa kasvattaa tätä taitopakettia on oppia nopeasti tietojenkäsittelytieteen perusteet ja viettää oma aika ongelmien ratkaisemiseen ja koodin kirjoittamiseen.

Ohjelmistotekniikan opetussuunnitelman perusteella ja sen perusteella, kuinka kiireiset tekniikan opiskelijat yleensä ovat, mielestäni sitä olisi vaikeampi tehdä ohjelmistotuotannon kuin tietojenkäsittelytieteen kanssa.

Tämän tietojenkäsittelytieteen ohjelman toinen etu on, että se mahdollistaa enemmän tietojenkäsittelytieteen valinnaisia ​​valintoja. Tämä on myös hienoa, koska työmarkkinoiden kysynnän mukaan pystyt säätämään kurssejasi. Jos esimerkiksi mobiilisovellusten kehittäminen on kysyttävää, voit oppia sen. Ja jos rinnakkaislaskentaan on kysyntää, voit keskittyä siihen.

Olen varma, että ohjelmistotekniikan perusteiden (projektinhallinta, suunnittelu, testaus jne.) Oppimisessa on joitain etuja. Mutta haluaisin henkilökohtaisesti mieluummin ottaa joustavuutta ennalta määriteltyihin taitoihin. Siksi mielestäni tietojenkäsittelytiede on parempi pääaine tulla ohjelmistosuunnittelijaksi tällä opetussuunnitelmalla.

Tietysti se on vain minun mielipiteeni, ja tämä on vain yksi erityinen yliopisto. Haluaisin kuulla mielipiteestäsi ja kokemuksistasi, jos opiskelisit joko tietojenkäsittelytieteen tai ohjelmistotekniikan alaa. Kerro minulle alla olevassa kommentissa.

Muutama muistiinpano

Huomautus 1: Eri yliopistoilla on erilaiset vaatimukset näille kahdelle pääaineelle. Tämän artikkelin pitäisi olla hyvä lähtökohta, mutta sinun tulisi silti tarkastella ohjelman vaatimuksia yliopistossa, johon olet kiinnostunut.

Huomautus 2: Joillakin yliopistoilla ei ole edes ohjelmistotekniikan pääaineita. Esimerkiksi British Columbian yliopistossa Vancouverissa on tietojenkäsittelytieteiden ja tietotekniikan tutkinnot, mutta ei ohjelmistotuotanto. Mutta heillä on ohjelmistotekniikan keskittyminen tietojenkäsittelyohjelmassa sekä tietokonetekniikassa.

Jos yliopistossa, johon olet kiinnostunut, ei ole ohjelmistotekniikan pääaineita, jatkan tietojenkäsittelytieteen kanssa, jos haluat tulla ohjelmistokehittäjäksi. Tietokonetekniikka on keskittynyt enemmän laitteistoon kuin tietojenkäsittelytieteeseen tai ohjelmistotekniikkaan, joten se liittyy vähemmän suoraan tyypilliseen ohjelmistokehittäjän työhön.

Ja tässä ovat tärkeimmät käyttämäni lähteet:

  • Tietojenkäsittelytiede Waterloon
  • Ohjelmistotuotanto Waterloon

Kiitos lukemisesta ja onnea yliopiston ja pääaineesi valinnassa! ?