Чем Software Engineering отличается от Computer Science

Привет! Программа, по которой я сейчас обучаюсь, называется MSIT-SE (Master of Science in Information Technology — Software Engineering)*. Основная идея всей программы выражается в принципе «Learn by doing» («Учись, делая»).Хочу рассказать, в чем разница между SE и CS и чем программа, которую я прохожу, отличается от всего остального. Без всякого сомнения этот вопрос обсуждаем, но ниже представлено мое личное мнение Знаете, это какая-то слабая программа для Computer Science

До того, как я приехал на программу SE, во всех комментариях читал именно такое утверждение.Человек переходит по [вот этой] ссылке и читает: • 17–651 Models of Software Systems• 17–652 Methods: Deciding What to Design• 17–653 Managing Software Development• 17–602 Introduction to Personal Software Process• 17–654 Analysis of Software Artifacts• 17–655 Architectures for Software Systems• 17–677 MSIT Project I• 17–678 MSIT Project IIИ начинаются разговоры: хм, простите, но где здесь хотя бы один классический курс по алгоритмам и структурам данных? Ну или хотя бы один годный курс по ООП, или по C++, или по основам распределенных систем или может быть базы данных, где всё это? Ну, что я могу сказать, всего этого нет. Точнее, этого нет среди указанных выше основных курсов, зато каждый семестр можно брать 1–2 электива, я вот, например, брал Distributed systems и Data structures for application programmers. Подробнее про элективы [читать тут] и [здесь]. Причина подобного отношения — изначально неверная реклама этой программы в России, а также невнятное определение того, что такое software engineering (оно у всех очень разное).11b27c8021a6123339535a8fda0112a1.jpgВыше короткая вырезка с официального сайта. Можно увидеть, что пересечения есть, но фокус принципиально другой. Есть некоторые вещи, которым не учат на Computer Science программах. Я не знаю как иначе объяснить разницу между SE и CS, кроме как сравнить создание IT системы с чем-нибудь из реальной жизни. Например, с постройкой моста. Вот список вещей, которым не учат на CS: • как выбрать форму моста• как решить, где именно этот мост должен стоять• как скоординировать это с финансовыми или правовыми вопросами• как именно должен выглядеть мост с точки зрения заказчика• как скоординировать 100500 рабочих, которые будут строить этот мост• как ответить руководству (спонсорам, инвесторам, etc), на каком этапе строительства сейчас мост и когда он будет завершен• как ДО того, как мост построен, оценить его качества: грузоподъемность, производительность• как задокументировать построенный мост так, чтобы в будущем его можно было починить• какие действия должны быть выполнены, кем и когда, чтобы мост не упал через 2 года… ну, в общем, идея понятна, продолжать можно долго. С одной стороны, это менеджмент (17–653 Managing Software Development). От него никуда не денешься, потому что с людьми надо общаться, и это почти самое сложное, а еще является причиной провала большинства проектов. После чего — умение собирать требования (17–652 Methods: Deciding What to Design). Как только требования собраны, мост нужно нарисовать на бумаге (17–655 Architectures for Software Systems), по возможности используя формальные методы расчета моста (17–651 Models of Software Systems). На протяжении всего процесса желательно проверять качество собранных требований, процесса постройки, итогового результата и т.д. (17–654 Analysis of Software Artifacts)

Я считаю, что все вышеописанные курсы должны предваряться мощным бакалавриатом по Computer Science, а затем 3–5 годами работы в индустрии. Лишь после этого имеет смысл говорить о менеджменте или архитектуре.

И вот мы плавно переходим к вишенке на торте. Практикум, он же MSIT Project, это то, что склеивает всю программу воедино. Я уже писал краткий обзор нашего проекта [тут]. Следующим постом расскажу о практикуме более подробно.По материалам студента магистратуры первого потока (2013/2014) совместной программы Университета Иннополис

*MSIT-SE (Master of Science in Information Technology) — программа магистратуры Университета Иннополис, разрабатываемая на базе одноименной программы одного из лучших ИТ-вузов мира Carnegie Mellon University (№3, QS World University Rankings by Subject 2014 — Computer Science & Information Systems), с учетом лучших практик МФТИ, ИТМО, National University of Singapoor и других партнеров в области образования. Университет Иннополис планирует осуществить набор группы магистров на своей базе для обучения в 2014/15 годах.

© Habrahabr.ru