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

    Привет!
    Программа, по которой я сейчас обучаюсь, называется MSIT-SE (Master of Science in Information Technology – Software Engineering)*. Основная идея всей программы выражается в принципе “Learn by doing” (“Учись, делая”).
    Хочу рассказать, в чем разница между SE и CS и чем программа, которую я прохожу, отличается от всего остального. Без всякого сомнения этот вопрос обсуждаем, но ниже представлено мое личное мнение
    image
    Знаете, это какая-то слабая программа для 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 (оно у всех очень разное).

    Выше короткая вырезка с официального сайта. Можно увидеть, что пересечения есть, но фокус принципиально другой. Есть некоторые вещи, которым не учат на 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 Singapore и других партнеров в области образования. Университет Иннополис планирует осуществить набор группы магистров на своей базе для обучения в 2014/15 годах.
    Innopolis University
    Российский ИТ-вуз
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 29

      +83
        +23
        Еще можно упомянуть про важность ГОСТ'ов — изолента должна быть обязательно синей :)
          +2
          Это зарубежный фольклор, там вместо синей изоленты — армированный скотч (офигенная штука, кстатти, можно сделать все что угодно).
            0
            У нас он тоже уже входит в обиход.
        • НЛО прилетело и опубликовало эту надпись здесь
            +6
            Изоленту не забудь чтобы два раза не бегать — она понадобится если с монеткой не прокатит.
              0
              Получилось?
            +2
            Чем наука отличается от инженерии… тем же, чем ложка отличается от вилки. Идея в принципе похожа, но применение совершенно разное, хотя в некоторых частных случаях они взаимозаменяемы.
              +32
              image
                +3
                Не имеет значения сколько у вас имеется ресурсов. Если вы не знаете как ими воспользоваться, их никогда не будет хватать.
                  +7
                  Google translate, перелогиньтесь.
                  0
                  Не согласен. Если ресурсов будет очень много, то в итоге можно решить поставленную задачу.
                    0
                    Фишка в том что ресурсы не бесконечны в отличие от желаний…
                      +3
                      Забавно, но картинка, с которой вы не согласились, отчасти подтверждает вашу мысль: человечек на ней набрал столько лестниц, что их куча всё-таки позволила заглянуть за кирпичный забор.

                      Но такое справедливо не всегда. Например, можно обезьяну снабдить хоть миллиардом компьютеров, но до тех пор, пока она не научится ими пользоваться, она не сможет написать даже примитивную программу-калькулятор. Т.е. ресурсы у нее будут, но задача всё равно останется нерешенной. Хотя знающему человеку и одного компьютера хватит.

                          0
                          Там речь идет об абстрактной обезьяне, живущей бесконечно долго и при этом не перестающей набивать текст. У меня речь шла об обычной обезьяне. Вот ей ресурсы точно никак не помогут.
                          0
                          Задачу-то он решил, но сколько при этом маляров остались без лесниц и простаивают в это время? Вот им ресурсов не хватило…
                      0
                      Кто-нибудь подскажет вузы с действительно «мощным бакалавриатом по Computer Science»?
                        +2
                        EPFL Швейцария.
                        Но я считаю что бакалавриат должен давать общие знания. В этом лучше подходит МФТИ.
                        Да и если есть хорошая база от вуза то можно пойти в Школу Анализа Данных Яндекса.
                        Все советы по своему опыту.
                          +1
                          EPFL — действительно достойная школа, этакий «Швейцарский МФТИ»,

                          Согласен с вами, если под общими знаниями подразумеваются:

                          — (Уменьшенные в объеме специально для ИТшников) Матанализ, Линейная алгебра, Теорвер и т д

                          на которые ложатся расширенные

                          — (Расширенные по сравнению с МФТИ и Мехматом) Дискретная математика, Методы оптимизации, Численные методы, Теория алгоритмов и т д

                          и, наконец, сугубо компьютерные вещи в еще бОльших объемах:

                          — Языки программирования, Операционные системы, Базы данных, Сети
                            +1
                            — (Уменьшенные в объеме специально для ИТшников) Матанализ, Линейная алгебра, Теорвер и т д

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

                            — (Расширенные по сравнению с МФТИ и Мехматом) Дискретная математика, Методы оптимизации, Численные методы, Теория алгоритмов и т д


                            Я вот сказал бы что Методы Оптимизации+Численные методы+Дискретка на физтехе были сильнее чем в EPFL. Во всяком случае у меня знаний осталось больше чем у студентов бравших курсы тут. Про алгоритмы соглашусь, но еще больше и лучше изложение в Школе Анализа Данных Яндекса.

                            — Языки программирования, Операционные системы, Базы данных, Сети

                            Я бы не сказал что в бакалаврский курс EPFL входят нормальные курсы этого. Они уже на мастере.

                            Я бы утверждал о другом. В EPFL курсы дают с привязкой к практике с первого курса. Пример:
                            На первом курсе можно взять курс по ООП на примере Java. Уже на втором месяце вам в руки выдадут написанный тут для этого курса фреймворк для работы с ГИС на котором нужно будет решать задачи типа «найти куда можно добраться из EPFL за 20 минут от 'сейчас' с учетом расписания транспорта».

                            А на курсе по компиляторам будут писать свой парсер, свой простейший интерпретатор и свой сборщик муссора. Которые будут тестироваться автоматической системой.
                              0
                              Уверен, что в EPFL есть достаточно полезного, чтобы подсмотреть и перенять для Innopolis Univ, особенно учитывая ваше близкое знакомство с учебной программой и Ваше экспертное мнение.
                              Если Вы в Лозанне, то в какой период Вас можно там застать? Если в России — предлагаю встретиться в ближайшее время
                        +2
                        Замечательный вывод про схему «бакалавриат» + практика + «магистратура».

                        Но в большинстве своём сейчас необходимости этой схемы не понимает никто —
                        ни родители, ни студенты, ни работодатели, ни опытные инженеры.
                          +1
                          Мы (Университет Иннополис) требуем от поступающих к нам в профессиональную магистратуру Software Engineering обязательного 2-летнего опыта работы в софтверных проектах (собственный проект или работа в корпорации). Но это требование сталкивает нас с повсеместно встречающимся мнением «зачем мне чему-то учиться, я итак уже опытный разработчик (2 года ведь уже прогаю!!)»
                            +1
                            Т к студенты «нормальных» вузов (Университет Иннополис в этом смысле не совсем нормальный) практически всегда сразу после бакалавриата идут в магистратуру, то из них вырастают теоретики информационных технологий, и столкновение с реальностью повергает их в глубокий шок, т к это происходит довольно поздно, и в своих теориях они уже вознеслись довольно высоко, чтобы относительно безболезненно принять факт реальности.
                              +2
                              Многие студенты уже работают (например, на полставки) или подрабатывают (фриланс) на последних курсах, так что это спорное утверждение, впрочем, довольно верное для тех, кто не работал по своей специальности все 6 лет обучения.
                                0
                                Студенты подрабатывают во время учебы и набирают хоть сколько-то практического опыта — и это здорово!

                                Ощущается большая проблема отсутствия сильных связей вузов и индустриальных компаний, при наличии которых боевые" специалисты вели бы практические курсы для студентов, приводя в качестве примеров кейсы из собственной практики, и учили бы современным практикам, а не только тем, которые были несколько лет назад напечатаны в бумажных книжках (читай — были актуальными 5 и более лет назад).
                            +2
                            Я бы сказал так: наука — это в первую очередь анализ, изучение естественных закономерностей, а инженерия же — синтез, конструирование с использованием научных знаний.
                              0
                              Наука — это то, что объясняет как же на самом деле работает то, что сделала технология и инженерия, формализует и углубляет эти знания и создает базу для новых технологических и инженерных достижений :)

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

                            Самое читаемое