Компьютерные науки или программная инженерия – что выбрать?

На кого учиться: изучать компьютерные науки или постигать навык софт-инженера – вопрос очень популярный. А что вы выберете?

Очень часто можно встретить размышления на тему выбора одного из перечисленных направлений: “Какая разница между вычислительной техникой и программной инженерией?” и “Должен ли я выбрать вычислительную технику или программную инженерию, если хочу стать софт-инженером?”.

В этой статье мы попытаемся понять и проанализировать важность и необходимость обучения этим специальностям.

Быстрый осмотр пациента

  • Компьютерные науки изучают, как устроен компьютер, как он работает, в основном с теоретической и математической стороны.
  • Вы должны выбрать это направление, если любите математику и логику или если хотите работать в сфере компьютерных наук, искусственного интеллекта, машинного обучения, безопасности, графики.
  • Программная инженерия изучает, как устроена операционные и программные системы, затрагивает управление проектами, обеспечение качества и тестирование.
  • Вы должны выбрать разработку программного обеспечения, если вас интересует практический подход, жизненный цикл и разработка/поддержка ПО.
  • Обе отрасли учат основам программирования и информатики, что полезно, если вы хотите стать программным разработчиком.

Программная инженерия

Чтобы понять разницу между специалистами в области вычислительной техники и программного обеспечения, давайте взглянем на их соответствующую учебную программу в Университете Ватерлоо в Канаде.

Какие перспективы?

Давайте сначала сравним виды рабочих мест и стажировок, которые вы можете пройти после каждой программы.

К счастью, на сайте университета Ватерлоо есть несколько примеров. По каждому из направлений предложены места работы после успешного завершения учебы:

Компьютерные науки:

  • Веб-разработчик / архитектор, The Steele Group
  • Программист, Harry Rosen Inc.
  • Мобильный / облачный разработчик, Clearbridge Associates Limited.
  • Разработка программного обеспечения, General Dynamics Canada.
  • Разработка программного обеспечения, Microsoft.
  • Agile Engineer, Pivotal Labs.
  • Бизнес-аналитик, Canadian Tire Corporation.
  • Менеджер по продуктам, Dropbox.

Программная инженерия:

  • Разработчик ПО, Tagged Inc.
  • Разработчик ПО, IBM Canada
  • Менеджер продукта, Arius Software Corporation.
  • Инженер по ПО, VistaPrint USA.
  • Инженер-программист, Harris Corporation.
  • Разработчик ПО, Accenture Inc.
  • Менеджер продукта/Разработка программного обеспечения, NexJ Systems Inc.
  • Консультант, PureFacts Financial Solutions.
  • Консультант по реализации, Desire2Learn.

Как вы можете видеть, нет особой разницы между рабочими местами, которые вы можете получить.

Наиболее распространенные предложения работы, на которые можно рассчитывать после получения степени «Компьютерные науки» или «Программная инженерия» – это разработчик программного обеспечения или инженер-программист. Существуют и другие варианты, такие как менеджер продукта, аналитик QA и консультант по технологиям, которые зависят от вашего набора навыков.

Обязательные темы первого года

Университет Ватерлоо

Теперь давайте посмотрим на курсы каждой программы. Сначала сравним некоторые курсы, которые вам нужно будет посетить в первый год.

Компьютерные науки:

  • CS 135 – Разработка функциональных программ.
  • CS 136 – Разработка алгоритмов и абстракция данных.
  • MATH 135 – Алгебра.
  • MATH 136 – Линейная алгебра 1.
  • MATH 137 – Исчисление 1.
  • MATH 138 – Исчисление 2.
  • Плюс несколько факультативных.

Программная инженерия:

  • CS 137 – Принципы программирования.
  • CS 138 – Абстракция и реализация данных.
  • MATH 115 – Линейная алгебра для инженерии.
  • MATH 117 – Исчисление 1 для инженерии.
  • MATH 119 – Исчисление 2 для инженерии.
  • MATH 135 – Высшая математика.
  • ECE 105 – Физика электротехники 1.
  • ECE 106 – Электричество и магнетизм.
  • ECE 124 – Цифровые схемы и системы.
  • ECE 140 – Линейные цепи.
  • SE 101 – Методы разработки программного обеспечения.

Как вы видите, на первом курсе обе специальности очень похожи. Обе рассматривают основные знания по информатике, алгебре и исчислениям. Отличия в том, что на “Программной инженерии” есть дополнительно физика и электротехника, в то время, как у “Компьютерных наук” еще несколько факультативов.

Обязательные темы второго курса

Теперь рассмотрим предметы второго курса.

Компьютерные науки:

  • MATH 239 – Введение в комбинаторику.
  • STAT 230 – Теория вероятностей.
  • STAT 231 – Статистика.
  • CS 240 – Структуры данных и управление данными.
  • CS 241 – Основы последовательных программ.
  • CS 245 – Логика и вычисления.
  • CS 246 – Разработка объектно-ориентированного программного обеспечения.
  • CS 251 – Организация и дизайн компьютеров.
  • CS 341 – Алгоритмы.
  • CS 350 – Операционные системы.
  • Кроме того, некоторые факультативы по компьютерной науке.

Программная инженерия:

  • CHE 102 – Химия для инженеров.
  • ECE 222 – Digital Computers (включая язык ассемблера).
  • ECE 358 – Компьютерные сети.
  • MATH 213 – Высшая математика для инженеров-программистов.
  • MATH 239 – Введение в комбинаторику.
  • STAT 206 – Статистика для разработчиков программного обеспечения.
  • MSCI 261 – Инженерная экономика: финансовый менеджмент для инженеров.
  • CS 241 – Основы последовательных программ.
  • CS 240 – Структуры данных и управление данными.
  • CS 247 – Принципы разработки программного обеспечения.
  • CS 341 – Алгоритмы.
  • CS 349 – Пользовательские интерфейсы.
  • CS 343 – Параллельное программирование.
  • CS 348 – Введение в управление базой данных.
  • SE 212 – Логика и вычисления.
  • SE 350 – Операционные системы.
  • SE 465 – Тестирование программного обеспечения и обеспечение качества.
  • SE 464 – Разработка и дизайн программного обеспечения.
  • SE 463 – Спецификация и анализ требований к программному обеспечению.
  • SE 490 – Дизайн проекта.
  • Кроме того, несколько факультативов по информатике и электротехнике.

Когда дело доходит до математики и статистики, вычислительная техника и программная инженерия почти похожи. Они охватывают комбинаторику, теорию вероятностей и статистику.

Основные требования по обоим направлениям также схожи и рассматривают алгоритмы, структуры данных и операционные системы.

Рассмотрим ключевые различия:

  • Программная инженерия имеет больше требований в области электротехники и разработки ПО, таких как тестирование ПО, дизайн и спецификации программного обеспечения.
  • Вычислительная техника позволяет проводить обучение с более широким выбором курсов по информатике высокого уровня. Вы можете выбирать из множества тем, таких как безопасность, основы разработки программного обеспечения, компьютерное зрение, машинное обучение и управление базами данных.

И все-таки, что выбрать, чтобы быть инженером-программистом?

Софт-инженер

Исходя из набора предметов и курсов в этом университете следует, что лучшим выбором будет “Вычислительна техника”, если вы хотите стать инженером-программистом.

Для простоты предположим, что вы надеетесь получить одну из самых высокооплачиваемых работ (~ 100 000 долларов США в год) в качестве инженера-программиста в Северной Америке. Эти рабочие места обычно находятся в крупных компаниях-разработчиках программного обеспечения (например, Microsoft, Google, Amazon и т. д.). Или в компаниях среднего бизнеса с высокими темпами роста (Dropbox, Lyft, Snapchat, Pinterest и т. д.).

Как правило, они ищут в кандидате на программиста возможность писать хороший код и создавать интересные проекты, а также знание основ компьютерных наук, структур данных и алгоритмов.

Лучший способ активизировать этот набор навыков – быстро изучить основы и тратить свое время на решение проблем и написание кода.

Основываясь на учебной программе для софт-инженера и на занятости инженеров-программистов, это будет сложнее сделать на курсе “Программной инженерии”.

Еще одно преимущество “Вычислительной техники” в том, что она дает больше факультативов. Это здорово, потому что в зависимости от того, что востребовано на рынке труда, вы сможете корректировать свое обучение. Например, если разработка мобильных приложений востребована, вы можете начать изучать ее.

Несколько примечаний

  • Различные университеты имеют разные требования к данным специальностям. Эта статья должна быть хорошей отправной точкой, но вы все равно должны взглянуть на требования к программе в университете, в котором вы заинтересованы.
  • Некоторые университеты даже не имеют такого направления, как “Программная инженерия”. Например, Университет Британской Колумбии в Ванкувере может дать вам степень в вычислительной технике и компьютерной инженерии, но не в программной инженерии. Но у них есть концентрация программного обеспечения в рамках своей программы по вычислительной технике, а также в области компьютерной инженерии.

Заключение

Если в университете, в котором вы заинтересованы, нет специальности программная инженерия, можно остановиться на вычислительной технике, если вы хотите стать разработчиком программного обеспечения. Вычислительная техника больше ориентирована на аппаратное обеспечение, чем на компьютерную науку или программное обеспечение, поэтому она меньше связана с работой типичного разработчика ПО. Перевод на русский осуществлен Библиотекой Программиста.

Оригинал

Другие материалы по теме:

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ