Рачунарске науке и софтверски инжењеринг - Који је главни избор за вас?

Хеј сви! Моје име је ИК и тренутно водим ЦС Дојо, ИоуТубе канал за едукацију о програмирању са више од 200.000 претплатника. Такође сам раније био програмер софтвера у Гоогле-у.

Два најчешћа питања која ми поставља моја публика су:

„Која је разлика између смерова рачунарске науке и софтверског инжењерства?“

И…

„Да ли треба да одаберем рачунарску науку или софтверски инжењеринг ако желим да постанем софтверски инжењер?“

У овом чланку ћу одговорити на ово и дати вам своју брзу анализу ових смерова.

Кратки преглед ове две специјалности

  • Рачунарске науке су проучавање начина рада рачунара, углавном из теоријске и математичке перспективе.
  • Рачунарске науке би требало да одаберете ако волите математику, логику или ако желите да уђете у специјализовано поље у ЦС-у, попут вештачке интелигенције, машинског учења, безбедности или графике.
  • Софтверски инжењеринг је проучавање начина на који се граде софтверски системи, укључујући теме попут управљања пројектима, осигурања квалитета и тестирања софтвера.
  • Софтверско инжењерство би требало да одаберете ако вас више занима практични приступ и ако желите да научите укупан животни циклус како се софтвер гради и одржава.
  • И рачунарска наука и софтверско инжењерство подучавају основе програмирања и рачунарства, тако да можете одабрати било коју од њих да бисте постали програмер.

Да бисмо разумели разлику између смерова рачунарске науке и софтверског инжењерства, погледајмо њихов наставни програм на Универзитету Ватерлоо у Канади.

За ово сам изабрао Универзитет Ватерлоо јер има један од најбољих програма за информатику у Северној Америци.

Стварање нових радних мјеста

Прво упоредимо врсте послова и праксе које можете добити кроз сваки програм.

Срећом, веб локација Универзитета Ватерлоо нуди неколико примера.

Ево неких наслова које имају алумни и где раде:

Информатика

  • Веб програмер / архитекта, Тхе Стееле Гроуп
  • Програмер, Харри Росен Инц.
  • Програмер за мобилне уређаје / облак, Цлеарбридге Ассоциатес Лимитед
  • Софтверски инжењеринг, Генерал Динамицс Канада
  • Инжењеринг за развој софтвера, Мицрософт
  • Агиле Енгинеер, Пивотал Лабс
  • Пословни аналитичар, канадска корпорација за гуме
  • Заступник програмера, Гоогле
  • Менаџер производа, Дропбок

Софтверско инжењерство

  • Програмер софтвера, Таггед Инц
  • Програмер софтвера, ИБМ Канада
  • Менаџер софтвера, Ариус Софтваре Цорпоратион
  • Софтверски инжењер, ВистаПринт УСА
  • Софтверски инжењер, Харрис Цорпоратион
  • Програмер софтвера, Аццентуре Инц.
  • Технички менаџер производа - Дизајн и развој софтвера, НекЈ Системс Инц
  • Консултант, ПуреФацтс Финанциал Солутионс
  • Консултант за имплементацију, Десире2Леарн

Као што видите, нема велике разлике између врста послова које можете добити.

Најчешћи посао који дипломци добију након стицања дипломе рачунарске науке или софтверског инжењерства је програмер софтвера или софтверски инжењер.

Постоје и друге сродне опције, као што су менаџер производа, КА аналитичар и технолошки саветник. Ваше опције ће зависити од вашег одређеног скупа вештина.

Курсеви за прву годину:

Сада, погледајмо тражене курсеве сваког програма. Прво упоредимо неке курсеве које бисте требали похађати током прве године.

Информатика

  • ЦС 135 - Дизајн функционалних програма
  • ЦС 136 - Дизајн алгоритма и апстракција података
  • МАТЕМАТИКА 135 - Алгебра
  • МАТЕМАТИКА 136 - Линеарна алгебра 1
  • МАТЕМАТИКА 137 - Рачун 1
  • МАТЕМАТИКА 138 - рачун 2
  • Плус неколико изборних предмета

Софтверско инжењерство

  • ЦС 137 - Принципи програмирања
  • ЦС 138 - Апстракција података и примена
  • МАТЕМАТИКА 115 - Линеарна алгебра за инжењерство
  • МАТЕМАТИКА 117 - Рачун 1 за инжењерство
  • МАТЕМАТИКА 119 - Рачун 2 за инжењерство
  • МАТЕМАТИКА 135 - Алгебра за почасну математику
  • ЕЦЕ 105 - Физика електротехнике 1
  • ЕЦЕ 106 - Електричност и магнетизам
  • ЕЦЕ 124 - Дигитални склопови и системи
  • ЕЦЕ 140 - Линеарни кругови
  • СЕ 101 - Методе софтверског инжењерства

Као што видите, и курсеви прве године су прилично слични. Обоје покривају неколико основних курсева рачунарства и неколико курсева математике из линеарне алгебре и рачуна.

Једина главна разлика је у томе што софтверско инжењерство има додатне физичке и електротехничке компоненте, док рачунарство има још неколико изборних предмета.

Курсеви након прве године:

Шта кажете на обавезне и изборне предмете након прве године? Погледајмо овде неколико примера:

Информатика:

  • МАТЕМАТИКА 239 Увод у комбинаторику
  • СТАТУС 230 Вероватноћа
  • СТАТИСТИКА 231 Статистика
  • ЦС 240 Структуре података и управљање подацима
  • ЦС 241 Основи секвенцијалних програма
  • ЦС 245 Логика и рачунање
  • ЦС 246 Објектно оријентисани развој софтвера <- није потребан за специјалности софтверског инжењерства
  • ЦС 251 Организација и дизајн рачунара
  • ЦС 341 Алгоритми
  • ЦС 350 оперативни системи
  • Плус, неколико изборних предмета из области рачунарства

Софтверско инжењерство:

  • ЦХЕ 102 Хемија за инжењере
  • ЕЦЕ 222 дигитални рачунари (укључује монтажни језик)
  • ЕЦЕ 358 Рачунарске мреже
  • МАТЕМАТИКА 213 Напредна математика за софтверске инжењере
  • МАТЕМАТИКА 239 Увод у комбинаторику
  • СТАТ 206 Статистика за софтверско инжењерство
  • МСЦИ 261 Инжењерска економија: Финансијски менаџмент за инжењере
  • ЦС 241 Основи секвенцијалних програма
  • ЦС 240 Структуре података и управљање подацима
  • ЦС 247 Принципи софтверског инжењерства <- нису потребни за смерове рачунарства
  • ЦС 341 Алгоритми
  • ЦС 349 Кориснички интерфејс <- није потребан за смерове у рачунарству
  • ЦС 343 Истовремено и паралелно програмирање <- није потребно за смерове у рачунарству
  • ЦС 348 Увод у управљање базама података
  • СЕ 212 Логика и рачунање
  • СЕ 350 оперативни системи
  • СЕ 465 Тестирање софтвера и осигурање квалитета
  • СЕ 464 Дизајн и архитектура софтвера
  • СЕ 463 Спецификација и анализа софтверских захтева
  • СЕ 490 Дизајн пројекат
  • Плус неколико изборних предмета из области рачунарства и електротехнике

Дао сам вам ПУНО информација које сте овде сварили. Али ево мог резимеа:

Што се тиче захтева у математици и статистици, рачунарство и софтверско инжењерство су готово идентични. Обухватају комбинаторику, вероватноћу и статистику.

Основни захтеви за рачунарством су такође слични, у распону од алгоритама, структура података и оперативних система.

Кључна разлика је у томе што:

  • Софтверско инжењерство има више захтева у електротехници и основама софтверског инжењерства, као што су испитивање софтвера, дизајн и спецификација софтверских захтева.
  • Рачунарске науке омогућавају више изборних предмета на вишим нивоима курсева рачунарства. Можете да бирате између широког спектра тема као што су безбедност, основе софтверског инжењерства, рачунарски вид, машинско учење и управљање базама података.

Дакле, који главни предмет бисте требали одабрати?

Мислим да то углавном зависи од ваших жеља. Укратко:

  • Рачунарске науке би требало да одаберете ако волите математику, логику или ако желите да уђете у специјализовано поље у ЦС-у, попут вештачке интелигенције, машинског учења, безбедности или графике.
  • Софтверско инжењерство би требало да одаберете ако вас више занима практични приступ и ако желите да научите целокупан животни циклус како се софтвер гради и одржава.

Али сачекајте - шта је то онда? Који је главни предмет бољи ако желите да будете софтверски инжењер?

Ево мог мишљења. На овом универзитету (Университи оф Ватерлоо), са овим одређеним скупом програмских захтева, рачунарство је боље ако желите да будете софтверски инжењер.

Само ради једноставности, претпоставимо да се надате да ћете добити један најбоље плаћени посао (~ 100.000 УСД годишње) као софтверски инжењер у Северној Америци. Ти послови су обично у великим софтверским компанијама (мислите на Мицрософт, Гоогле, Амазон итд.) Или у средњим компанијама са великим растом (мислите на Дропбок, Лифт, Снапцхат, Пинтерест, итд.).

Обично оно што траже од кандидата за софтверског инжењера је способност писања солидног кода и израде занимљивих пројеката, као и основа рачунарске науке, укључујући структуре података и алгоритме.

Мислим да је најбољи начин за култивацију овог скупа вештина брзо учење основа рачунарске науке и трошење сопственог времена увежбавајући решавање проблема и писање кода.

На основу курикулума за софтверско инжењерство и на основу тога колико су студенти инжењерства уопште заузети, мислим да би било теже то урадити са софтверским инжењерством него са рачунарством.

Још једна предност овог одређеног програма Рачунарске науке је што омогућава више изборних предмета из информатике. И ово је сјајно јер ћете, у зависности од потражње на тржишту рада, моћи да прилагодите своје курсеве. На пример, ако се тражи развој мобилне апликације, то можете научити. А ако се тражи паралелно рачунање, можете се усредсредити на то.

Сигуран сам да постоје неке користи од учења основа софтверског инжењерства (управљање пројектима, дизајн, тестирање итд.). Али лично бих радије узео флексибилност у односу на унапред дефинисани скуп вештина. Због тога сматрам да је рачунарство боље да постанете софтверски инжењер са овим наставним програмом.

Наравно, то је само моје мишљење, а ово је само један одређени универзитет. Волео бих да чујем за ваше мишљење и какво је било ваше искуство ако сте се бавили рачунарском науком или софтверским инжењерством. Обавестите ме у коментару испод.

Неколико напомена

Напомена 1: Различити универзитети имају различите захтеве за ова два смера. Овај чланак би требао бити добра полазна основа, али ипак бисте требали погледати програмске захтеве на универзитету који желите да похађате.

Напомена 2: Неки универзитети немају чак ни смер софтверског инжењерства. На пример, Универзитет Британске Колумбије у Ванкуверу има диплому рачунарства и рачунарства, али не и софтверског инжењерства. Али они имају концентрацију софтверског инжењерства у оквиру свог програма Рачунарске науке, као и у рачунарском инжењерству.

Ако универзитет који желите да похађате нема специјалност софтверског инжењерства, ишао бих на Цомпутер Сциенце ако желите да постанете програмер софтвера. Рачунарско инжењерство је више усмерено на хардвер него на рачунарство или софтверско инжењерство, тако да је мање директно повезано са послом типичног програмера.

И ево главних извора које сам користио:

  • Рачунарске науке у Ватерлоо-у
  • Софтверски инжењеринг у Ватерлоо-у

Хвала на читању и сретно у одабиру универзитета и вашег смера! ?