Ты готов Продвинуть свою карьеру?

Наша программа специализируется в области систем программного обеспечения и разработки программного обеспечения с использованием ООП (Java), веб-приложений и науки о данных. Основные области исследования включают: передовую разработку программного обеспечения, программирование и архитектуру веб-приложений, анализ и технологии больших данных, машинное обучение и несколько важных областей применения.

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

NEW! Награда Data Science Track

Стандартные основные курсы

  • Современные практики программирования (Java-программирование) (CS 401)

    В этом курсе представлены основные принципы объектно-ориентированного программирования. Студенты научатся писать многоразовое и лучше обслуживаемое программное обеспечение и интегрируют эти знания с лабораторными заданиями и проектами. Темы включают: фундаментальные принципы и модели объектно-ориентированного программирования, диаграммы классов UML и принципы проектирования, которые способствуют повторному использованию и ремонтопригодности программного обеспечения. (Единицы 4)

  • Передовая разработка программного обеспечения (CS 525)

    В этом курсе рассматриваются современные методы и практики для хорошего проектирования программных систем. Темы включают: шаблоны проектирования программного обеспечения, структуры, архитектуры и системы проектирования для применения этих многоуровневых абстракций. (Кредиты 2-4) Условие: CS 401 или согласие факультета факультета.

  • Алгоритмы (CS 435)

    Этот курс представляет методы для анализа эффективности алгоритмов (включая анализ наихудшего и среднего случая) и вводит множество известных, высокоэффективных алгоритмов. Анализу, разработке и реализации алгоритмов уделяется одинаковое внимание. Темы включают в себя поиск и сортировку, эффективность операций над структурами данных (включая списки, хеш-таблицы, сбалансированные бинарные деревья поиска, очереди приоритетов), графовые алгоритмы, комбинаторные алгоритмы, рекуррентные отношения, динамическое программирование, задачи, полные NP, и некоторые специальные темы со временем позволяет. (Специальные темы включают вычислительную геометрию, алгоритмы для криптосистем, аппроксимацию, большие данные и параллельные вычисления.)

  • Компьютерные сети (CS 450)

    Целью данного курса является изучение концепций, принципов архитектуры и терминологии компьютерных сетей путем изучения работы сетей и разработки сетевых приложений. Этот курс следует нисходящему подходу к пониманию сетей с использованием архитектуры и протоколов Интернета в качестве основного примера реализации принципов сети. Мы начинаем с прикладного уровня и продолжаем работу на транспортном уровне, сетевом уровне, канальном уровне и физическом уровне компьютерных сетей. Учащиеся разрабатывают несколько сетевых приложений и выполняют несколько лабораторных работ, предназначенных для отслеживания и понимания преобладающих сетевых протоколов, используемых в Интернете. (Единицы 4) Условие: CS 401 или согласие факультета факультета.

  • Системы управления базами данных (CS 422)

    Системы баз данных организуют и извлекают информацию, позволяя пользователю легко и эффективно получать доступ к необходимой информации. Темы включают в себя: модель реляционных данных; SQL; ER моделирование; реляционная алгебра; нормализация данных; сделки; объекты в базе данных; безопасность и целостность данных; хранилище данных, OLAP и интеллектуальный анализ данных; распределенные базы данных; и изучение конкретной коммерческой системы баз данных. (Единицы 4) Условие: CS 401 или согласие факультета факультета.

  • Разработка программного обеспечения (CS 425)

    Программная инженерия - это курс, который знакомит студентов с лучшими практиками в разработке программного обеспечения с помощью методологии разработки программного обеспечения. Студенты уже имели некоторый опыт на предыдущих курсах с объектно-ориентированной парадигмой и использовали некоторые базовые UML-диаграммы для целей моделирования отношений между программными объектами. В области разработки программного обеспечения учащийся приобретет навыки объединения этих инструментов для создания надежного и легко обслуживаемого программного обеспечения. Методология разработки программного обеспечения описывает, когда и как следует использовать концепции ОО и диаграммы UML для достижения цели создания качественного программного обеспечения. Курс сосредоточен вокруг небольшого проекта, в котором принципы, обсуждаемые в формате лекции, могут быть проиллюстрированы и применены. К концу курса студент получит работающее приложение, созданное в соответствии с высокими стандартами методологии разработки RUP (Rational Unified Process).

  • Архитектура и фреймворки веб-приложений (CS 545)

    Этот курс посвящен веб-приложениям в корпоративной среде. Корпоративное приложение - это большая программная система, предназначенная для работы в большой организации, такой как корпорация или правительство. Корпоративные приложения являются сложными, масштабируемыми, основанными на компонентах, распределенными и критически важными. Этот курс, CS545, фокусируется на внешнем интерфейсе или уровне представления корпоративного веб-приложения. CS544 Enterprise Architecture - это сопутствующий курс, который фокусируется на серверном или бизнес-уровне, включая бизнес-логику, транзакции и постоянство. CS472, Программирование веб-приложений, является обязательным курсом, который охватывает HTML, CSS, JavaScript, сервлеты и JSP.

    Курс учит принципам и шаблонам, которые являются общими для всех платформ и структур. Курс изучит две основные веб-платформы Java, Java Server Faces (JSF) и SpringMVC. JSF - это основанная на компонентах структура и является официальной спецификацией структуры представления для стека технологий Java Enterprise Edition. SpringMVC является частью платформы Core Spring и стал наиболее широко используемым веб-каркасом Java в последние годы. (Единицы 4) Условие: CS 472 или согласие факультета факультета.

  • Программирование веб-приложений (CS 472)

    Этот курс предоставляет систематическое введение в программирование интерактивных и динамических веб-приложений. Курс предназначен для людей с небольшим опытом или без опыта программирования веб-приложений. Это предложение будет использовать Java-сервлеты и JSP для обработки на стороне сервера. Курс познакомит вас с HTML и CSS. JavaScript является предметом курса и рассматривается как функциональный язык программирования, включающий пространства имен и модули jQuery, Ajax и JavaScript. Это является обязательным условием для архитектуры веб-приложений CS545. Он не распространяется на AngularJS или NodeJS, но JavaScript, описанный здесь, подготовит вас к изучению этих технологий. (Единицы 4)
    Обязательное условие: CS 220 или CS 401 или согласие факультета факультета.

  • Наука и технология сознания для компьютерных специалистов (FOR 506)

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

  • Лидерство для технических менеджеров (ДЛЯ 506B)

    Цель этого курса - дать студентам знания и навыки лидерства, в том числе навыки общения, как подготовку к будущим руководящим ролям.

    К концу этого курса студенты поймут ответы на ключевые вопросы, касающиеся эффективного лидерства, включая следующие:

    Есть ли лидеры «естественного происхождения»?

    Нужно ли иметь харизму, чтобы эффективно вести?

    Какой актив должен быть лидером?

    В чем разница между управлением и ведением?

    Какими умственными способностями нужно руководить в эту эпоху?

    Что такое «злоупотребление служебным положением» и как оно ведет к саморазрушению?

    Знание того, что обратная связь важна для ведущего процесса, как нам преодолеть страх отдавать и получать его?

    Каков источник 80% проблем, обнаруженных на рабочем месте?

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

    В число приглашенных докладчиков войдут видные предприниматели, ученые-компьютерщики, филантропы, ученые и другие видные лидеры общества.

    (единицы) 2

Дополнительные курсы MSCS

  • Расширенные языки программирования (CS 505)

    Этот курс рассматривает сложные темы в дизайне языка программирования с акцентом на формальные методы и механизмы абстракции. Темы включают абстракцию данных и управления, формальную спецификацию синтаксиса и семантики, доказательства правильности программы, недетерминированное программирование, расширенные структуры управления и изучение конкретных языков. (Единицы 4) Условие: CS 401 или согласие факультета факультета.

  • Большие данные (трек Data Science) (CS 522)

    Современная обработка информации определяется обширными хранилищами данных, которые не могут обрабатываться традиционными системами баз данных. Этот курс охватывает новейшие технологии, разработанные и используемые лидерами отрасли для наиболее эффективного решения этой проблемы. Конкретные темы включают в себя алгоритмы MapReduce, шаблоны проектирования алгоритмов MapReduce, HDFS, кластерную архитектуру Hadoop, YARN, вычисление относительных частот, вторичную сортировку, веб-сканирование, инвертированные индексы и сжатие индексов, алгоритмы Spark и Scala. (Единицы 4) Необходимое условие: Алгоритмы CS 435.

  • Big Data Analytics (трек Data Science) (CS 488)

    Большие данные - это новый природный ресурс: данные удваиваются каждые 12-18 месяцы. Этот новый курс Big Data Analytics охватывает фундаментальные концепции и инструменты для разработки больших разнообразных наборов данных, чтобы генерировать новые идеи. Вы освоите использование языка R для создания Wordcloud, Pagerank, визуализации данных, деревьев решений, регрессии, кластеризации, нейронных сетей и многого другого. Вы будете работать с несколькими многомиллионными наборами записей, а также с моими лентами Twitter. Вы изучите концепции Hadoop / MapReduce и Streaming Data, а также изучите другие проекты Apache Big Data, такие как Spark, Flink, Kafka, Storm, Samza, NoSQL, на основе отдельных исследовательских работ. Вы будете работать в группах над открытыми проектами от Kaggle.com, чтобы побороться за призовые деньги, решая лучшие в своем классе задачи анализа данных. Вы также научитесь использовать ведущие в отрасли IBM SPSS Modeler и платформы для анализа данных с открытым исходным кодом. Учебник бестселлера #1, используемый в этом курсе, написан самим преподавателем. В курсе также будет использован широкий спектр обучающих видео материалов от MIT, Coursera, Google и других. (Единицы 4) Условие: согласие факультета кафедры

  • Big Data Technologies (трек Data Science) (CS 523)

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

    Целью курса является добавление некоторых действительно важных инструментов в ваш арсенал, которые помогут вам решить различные проблемы больших данных. Начнем с ответов на вопросы типа «Что такое большие данные? Почему это важно или полезно? Как вы храните эти большие данные? »Затем мы изучим различные инструменты и модели программирования из стека технологий больших данных, которые помогут нам анализировать данные. Темы включают некоторые проекты в экосистеме Hadoop, такие как проекты MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper и Apache Spark. Мы также рассмотрим введение в AWS и EMR. В основном вы будете работать с одноузловым распределением Hadoop от Cloudera. (Единицы 4) (без предварительных условий)

  • Компьютерная безопасность (CS 466)

    В этом курсе подробно рассматриваются три аспекта компьютерной безопасности: конфиденциальность, целостность и доступность. Изучено несколько моделей политики конфиденциальности и целостности. Роль криптографии в обеспечении конфиденциальности и целостности рассматривается. Другие темы включают аутентификацию, аудит, тестирование на проникновение, общие уязвимости и обнаружение вторжений. Курс заканчивается практическим примером реалистичной безопасной системы. Студентов попросят прочитать статьи из литературы по безопасности и применить их к материалам, представленным в лекциях. (Авторы 4). Условие: CS 401 или согласие факультета факультета.

  • Архитектура предприятия (CS 544)

    Этот курс направлен на обучение принципам и практикам, используемым при разработке крупномасштабных корпоративных приложений. Мы рассмотрим различные архитектурные уровни, которые часто используются, и различные технологии, связанные с этими уровнями, включая объектно-реляционное сопоставление (ORM), внедрение зависимостей (DI), аспектно-ориентированное программирование (AOP) и интеграцию с другими приложениями через веб-службы (RESTfull). и SOAP), обмен сообщениями и удаленный вызов метода. Должен иметь практические знания по реляционным базам данных и SQL. Если у вас нет сильного курса или хороших рабочих знаний SQL, вы должны зарегистрироваться в СУБД CS422 перед регистрацией в EA. (Единицы 4)

  • Машинное обучение (трек Data Science) (CS 582)

    Машинное обучение, область обучения, которая дает компьютерам возможность учиться на основе данных, лежит в основе почти каждой научной дисциплины, а изучение обобщения (то есть прогнозирования) на основе данных является центральной темой машинного обучения. Этот курс дает введение в машинное обучение на уровне выпускников и углубленное освещение новых и продвинутых методов машинного обучения, а также основополагающей теории. В нем подчеркиваются подходы, имеющие практическое значение, и обсуждается ряд последних приложений машинного обучения, таких как интеллектуальный анализ данных (в области больших данных / наука о данных, аналитика данных), обработка естественного языка, компьютерное зрение, робототехника, биоинформатика и обработка текстовых и веб-данных. Машинное обучение используется в различных отраслях, включая финансовые услуги, нефть и газ, здравоохранение, маркетинг и рекламу, государственное управление, Интернет и Интернет вещей.

    Этот курс охватывает различные парадигмы обучения, алгоритмы, теоретические результаты и приложения. Он использует основные понятия из искусственного интеллекта, теории информации, статистики и теории управления, поскольку они имеют отношение к машинному обучению. Темы включают: контролируемое обучение (генеративное / дискриминационное обучение, параметрическое / непараметрическое обучение, нейронные сети, машины опорных векторов, дерево решений, байесовское обучение и оптимизация); обучение без учителя (кластеризация, уменьшение размерности, методы ядра); теория обучения (компромиссы / компромиссы; теория ВК; большие поля); Усиление обучения и адаптивное управление. Другие темы включают HMM (скрытая модель Маркова), эволюционные вычисления, глубокое обучение (с нейронными сетями) и разработку алгоритмов, производительность которых может быть тщательно проанализирована для решения фундаментальных задач машинного обучения.

    Важной частью курса является групповой проект. Основные инструменты с открытым исходным кодом, используемые для параллельного, распределенного и масштабируемого машинного обучения, будут кратко рассмотрены, чтобы помочь студентам в выполнении проектов. (Единицы 4) Необходимое условие: Нет.

  • Программирование мобильных устройств (CS 473)

    В последние годы важность программирования для мобильных устройств стала новой областью в разработке программного обеспечения. Этот курс готовит студентов к разработке приложений для мобильных устройств, таких как IPhone, IPad или телефон Android. Это быстро развивающийся рынок. Курс посвящен установке, разработке, тестированию и распространению мобильных приложений. В конце этого курса студенты могут разработать приложение для рассматриваемых платформ, смоделировать их, протестировать на реальном устройстве и, наконец, опубликовать в магазине приложений, чтобы сделать их доступными для пользователей. (Единицы 4) Условие: CS472 или согласие факультета факультета.

  • Современные веб-приложения (CS 572)

    В этом курсе вы изучите архитектуру реактивного программирования SPA (одностраничные веб-приложения), а также все необходимые навыки для создания полноценного современного веб-приложения. Технологии включают: базы данных NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase и NoSQL (MongoDB). Курс будет охватывать:

    • Как работает механизм C ++ V8 и асинхронный код в Node и цикле событий Node.
    • Как структурировать ваш код для повторного использования и построить Restful API с использованием модулей и ExpressJS.
    • Как работают базы данных NoSQL: Mongo Shell, структура агрегации, наборы реплик, кластеризация, осколки, Mongoose ORM.
    • Глубокое понимание того, как работает Angular (при поддержке Google), обнаружение изменений, программирование Reactive RxJ с использованием наблюдаемых и объектов, Shadow DOM, зон, модулей и компонентов, пользовательских директив и каналов, служб и инъекций зависимостей, углового компилятора, компиляции JIT и AOF , Формы (управляемые шаблоном и управляемые данными), привязка данных, маршрутизация, защита и защита маршрутов, HTTP-клиент, аутентификация JWT JSON Web Token.

    (единицы) 4

  • Операционные системы (CS 465)

    Операционная система контролирует центральные ресурсы компьютерной системы и распределяет их по отдельным пользователям. Темы курса включают в себя последовательные и параллельные процессы, взаимное исключение, совместное использование ресурсов, взаимодействие процессов, взаимоблокировку, распределение ресурсов, планирование процессора, управление памятью, алгоритмы сегментации и разбиения на страницы, системы разделения времени, алгоритмы планирования и защиту ресурсов. (Единицы 4) Условие: CS 401 или согласие факультета факультета.

  • Параллельное программирование (CS 471)

    Стандартный процессор для всех новых компьютеров теперь является многоядерным процессором, который способен выполнять программы гораздо быстрее. Однако, чтобы использовать этот потенциал, программист должен иметь некоторые знания методов параллельного программирования. Во время этого курса студенты будут тратить большую часть своего времени на написание и отладку параллельных программ. Ожидаемым результатом будет развитие нового уровня практических навыков программирования. Этот навык будет полезен не только для программирования многоядерных процессоров, но также для программирования операционных систем и распределенных баз данных. Программные средства, использованные на этом курсе, включают Microsoft Visual C / C ++, библиотеку многопоточности Java и стандарт потоков OpenMP. (Модули 4) Пререквизиты: Знание компьютерного программирования на Java, C или C ++.

  • Архитектура программного обеспечения (CS 590)

    В этом курсе мы рассмотрим методы, принципы и шаблоны проектирования гибких, масштабируемых, тестируемых и гибких программных систем с использованием микросервисов. Мы изучим, как можно разбить большие приложения на более мелкие микросервисы, которые легче создавать, и другие преимущества по сравнению с монолитными корпоративными приложениями. Распределенная микросервисная архитектура также создает много проблем. Мы будем изучать эти проблемы и способы их решения. Темами этого курса являются архитектурные стили, методы и шаблоны интеграции, проектирование на основе предметной области, архитектура на основе событий и реактивное программирование. (Кредиты 4). (Без предварительных условий)

  • Практикум по разработке программного обеспечения (CS 575)

    В этом практическом курсе студенты выполняют задачи, связанные с компьютером, на должности технического специалиста. Выполненные задачи могут заключаться в проектировании и разработке новых систем или применении существующих систем для конкретных целей. Должностные инструкции Практикума составляются работодателем и студентом и требуют предварительного одобрения одного из выпускников факультета факультета в консультации с руководителем практикума, в котором находится студент. (Этот курс предназначен в первую очередь для студентов, проходящих стажировку или совместные программы.) (Единица 0.5-1 на блок - может повторяться.)

«Когда я впервые услышал о программе MSCS, я усомнился в этом. Я не мог поверить, что что-то подобное существует. Но однажды мой друг присоединился к программе. Именно тогда я подтвердил, что это реально. Затем я возобновил процесс подачи заявления. Что ж! Это правда, я здесь, я закончил программу, и я так счастлив ».

Эдвин БвамбейлУганда