Компьютерные науки VS разработка программного обеспечения – какая специальность для вас самая лучшая?

1656682219 kompyuternye nauki vs razrabotka programmnogo obespecheniya – kakaya speczialnost dlya

Ю. К. Суги

WPv6FFhvZsxzM7YyS23P0DQqYqDgVgVPal2c

Всем привет! Меня зовут YK, и сейчас я управляю CS Dojo, обучающим каналом по программированию на YouTube, который имеет более 200 000 подписчиков. Я был также разработчиком программного обеспечения в Google.

Два самых распространенных вопроса, которые мне задают мои аудитории:

«Какова разница между специальностями «Компьютерные науки» и «Инженерия программного обеспечения»?»

И…

«Если я хочу стать инженером-программистом, мне выбрать информатику или программную инженерию?»

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

Краткий обзор этих двух специальностей

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

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

Для этого я выбрал Университет Ватерлоо, поскольку у него одна из лучших программ по информатике в Северной Америке.

Перспективы работы

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

К счастью, веб-сайт Университета Ватерлоо содержит несколько примеров.

Для каждой специальности вот некоторые титулы, которые имеют выпускники, и они не работают:

Компьютерная наука

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

Разработка программного обеспечения

  • Разработчик программного обеспечения, Tagged Inc
  • Разработчик программного обеспечения, IBM Канада
  • Менеджер программного обеспечения, Arius Software Corporation
  • Инженер-программист, VistaPrint США
  • Инженер-программист, Harris Corporation
  • Разработчик программного обеспечения, Accenture Inc.
  • Менеджер по техническим продуктам – дизайн и разработка программного обеспечения, NexJ Systems Inc
  • Консультант PureFacts Financial Solutions
  • Консультант по внедрению, Desire2Learn

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

Самая распространенная работа, которую выпускники получают после получения степени компьютерных наук или инженера программного обеспечения, это разработчик программного обеспечения или инженер-программист.

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

Курсы первого курса:

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

Компьютерная наука

  • CS 135 — Проектирование функциональных программ
  • CS 136 — Проектирование алгоритма и абстракция данных
  • МАТЕМАТИКА 135 — Алгебра
  • МАТЕМАТИКА 136 — Линейная алгебра 1
  • МАТЕМАТИКА 137 — Вычисление 1
  • МАТЕМАТИКА 138 — Вычисление 2
  • Плюс несколько факультативов

Разработка программного обеспечения

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

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

Единственное существенное отличие состоит в том, что программная инженерия имеет дополнительные компоненты физики и электротехники, в то время как компьютерные науки имеют несколько дополнительных факультативов.

Курсы после первого курса:

Как насчет обязательных и факультативных курсов после первого курса? Давайте рассмотрим несколько примеров:

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

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

Разработка программного обеспечения:

  • CHE 102 Химия для инженеров
  • ECE 222 Цифровые компьютеры (включает язык ассемблера)
  • ECE 358 Компьютерные сети
  • MATH 213 Advanced Mathematics for Software Engineers
  • МАТЕМАТИКА 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 и т.п.).

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

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

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

Еще одно преимущество этой конкретной программы по информатике состоит в том, что она предоставляет больше факультативов по информатике. Это также отлично, поскольку в зависимости от спроса на рынке труда вы сможете корректировать свои курсы. К примеру, если разработка мобильных приложений востребована, вы можете этому научиться. И если параллельные вычисления востребованы, вы можете сосредоточиться на этом.

Я уверен, что изучение основ программной инженерии (управление проектами, проектирование, тестирование и т.п.) имеет некоторые преимущества. Но я лично предпочел бы гибкость вместо предварительно определенного набора навыков. Вот почему я считаю, что компьютерные науки являются лучшей специальностью, чтобы стать инженером-программистом по этой учебной программе.

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

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

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

Примечание 2: У некоторых университетов даже нет специальности «Инженер программного обеспечения». К примеру, Университет Британской Колумбии в Ванкувере имеет степени компьютерных наук и компьютерной инженерии, но не программную инженерию. Они сосредоточены на разработке программного обеспечения в рамках программы компьютерных наук, а также на компьютерной инженерии.

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

И вот основные источники, которые я использовал:

Спасибо за чтение и желаем удачного выбора университета и специальности! ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *