Ви готові Просуньте свою кар'єру?

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

Всі курси розроблені, щоб допомогти вам просунути вашу кар'єру, і кожен курс містить практичні завдання. Переглянути вимоги до випуску.

Курси наукових даних

Стандартні базові курси

  • Цей курс представляє основні принципи об'єктно-орієнтованого програмування. Студенти дізнаються, як писати багаторазове та краще програмне забезпечення, а також інтегрувати ці знання з лабораторними завданнями та проектами. Теми включають: основні принципи і моделі об'єктно-орієнтованого програмування, UML-діаграми класів і принципи проектування, що сприяють повторному використанню та ремонтопридатності програмного забезпечення. (Одиниць 4)

  • Даний курс розглядає сучасні методи та практики для гарного проектування програмних систем. Теми включають: шаблони розробки програмного забезпечення, рамки, архітектури та системи проектування для застосування цих багаторівневих абстракцій. (Кредити 2-4) Передумова: CS 401 або згода факультету кафедри.

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

  • Цей курс фокусується на викладанні принципів і практик, що використовуються при розробці більш масштабних корпоративних додатків. Ми розглянемо різні архітектурні шари, які часто використовуються, і різні технології, пов'язані з цими шарами, включаючи об'єктне реляційне зіставлення (ORM), залежність від ін'єкцій (DI), аспектно-орієнтоване програмування (AOP) і інтеграцію з іншими додатками через веб-служби (RESTfull) і SOAP), виклик повідомлень і віддалений метод. Необхідно мати робочі знання реляційних баз даних і SQL. Якщо у вас немає сильного курсу або хорошого знання SQL, ви повинні зареєструватися для СУБД CS422, перш ніж підписуватись на EA. (Одиниць 4)

  • Програмна інженерія - це курс, який знайомить студентів з найкращими практиками розробки програмного забезпечення за допомогою методології розробки програмного забезпечення. Студенти вже мали певний досвід попередніх курсів з об'єктно-орієнтованою парадигмою і використовували деякі з базових UML-діаграм для цілей моделювання відносин між об'єктами програмного забезпечення. У програмній інженерії, студент буде розвивати навички в поєднанні цих інструментів разом, щоб виробляти надійне, легко підтримуване програмне забезпечення. Методологія розробки програмного забезпечення описує, коли і як повинні бути використані концепції OO і UML діаграми для досягнення мети побудови якісного програмного забезпечення. Курс охоплює невеликий проект, в якому можна проілюструвати та застосувати принципи, обговорювані у форматі лекції. До закінчення курсу студент буде мати запущену програму, побудовану відповідно до високих стандартів методології розробки RUP (Rational Unified Process).

  • Цей курс фокусує веб-додатки в корпоративних умовах. Корпоративне додаток - це велика система програмного забезпечення, призначена для роботи у великій організації, наприклад, корпорації або уряді. Корпоративні програми є складними, масштабованими, заснованими на компонентах, розподіленими та критично важливими. Цей курс, CS545, фокусується на передньому або презентаційному шарі корпоративного веб-додатка. CS544 Enterprise Architecture - це супутній курс, який фокусується на зворотному або бізнес-рівні, включаючи бізнес-логіку, транзакції та наполегливість. CS472, програмування веб-додатків, є обов'язковим курсом, який охоплює HTML, CSS, JavaScript, сервлети і JSP.

    Курс навчає принципам і моделям, які є загальними для всіх платформ і рамок. Курс вивчатиме та працюватиме з двома переважними веб-фреймворками Java, Java Server Faces (JSF) та SpringMVC. JSF є компонентною базою і є офіційною специфікацією презентації для стека технологій Java Enterprise Edition. SpringMVC є частиною базової основи Spring і стала найпоширенішою веб-платформою Java за останні роки. (Одиниці 4) Передумова: CS 472 або згода факультету кафедри.

  • Цей курс забезпечує систематичне введення в програмування інтерактивних та динамічних веб-додатків. Курс призначений для осіб, які практично не мають досвіду програмування веб-програм. Ця пропозиція використовуватиме сервлети Java та JSP для обробки на стороні сервера. Курс введе HTML та CSS. JavaScript є основним напрямком курсу, і він розглядається як функціональна мова програмування, включаючи jQuery, Ajax та простори імен та модулі JavaScript. Це є необхідною умовою архітектури веб-додатків CS545. Він не охоплює AngularJS або NodeJS, але розглянутий тут JavaScript підготує вас до вивчення цих технологій. (4 одиниці)
    Передумова: CS 220 або CS 401 або згода факультету кафедри.

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

  • Мета цього курсу - надати студентам знання та навички лідерства, включаючи комунікативні навички як підготовку до майбутніх керівних ролей.

    До кінця цього курсу студенти зрозуміють відповіді на ключові питання щодо ефективного керівництва, включаючи наступне:

    Чи є «лідери природжених»?

    Чи потрібно ефективно володіти харизмою?

    Який актив потрібно бути лідером?

    У чому різниця між управлінням і провідним?

    Які багато «інтелігентів» потрібні для того, щоб очолити цю епоху?

    Що таке «зловживання керівництвом» і як це призводить до саботажу?

    Знаючи, що зворотній зв'язок є важливим для провідного процесу, як ми переживаємо страх давати і отримувати його?

    Який джерело 80% проблем виявлено на робочому місці?

    Чи доступні наукові дослідження, які допоможуть організації поліпшити навички керівництва індивіда та команди?

    До присутніх виступатимуть видатні підприємці, комп'ютерні вчені, філантропи, академіки та інші відомі лідери в суспільстві.

    (Одиниць 2)

Додаткові курси MSCS

  • Даний курс розглядає сучасні теми з програмування мови програмування з акцентом на формальних методах та механізмах абстрагування. Теми включають абстракцію даних і управління, формальну специфікацію синтаксису і семантики, докази коректності програми, недетермінованого програмування, розширені структури управління і вивчення конкретних мов. (Одиниці 4) Передумова: CS 401 або згода факультету кафедри.

  • Сучасна обробка інформації визначається величезними сховищами даних, які не можуть бути оброблені традиційними системами баз даних. Цей курс охоплює новітні технології, розроблені та використані лідерами галузі для вирішення цієї проблеми найбільш ефективним способом. Окремі теми охоплюють алгоритми MapReduce, алгоритм розробки алгоритму MapReduce, HDFS, кластерну архітектуру Hadoop, YARN, обчислювальні відносні частоти, вторинне сортування, сканування в Інтернеті, інвертовані індекси та компресія індексів, Spark алгоритми і Scala. (Одиниці 4) Необхідна умова: Алгоритми CS 435.

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

  • За кілька коротких років, великі технології передачі даних перейшли від області галасу до одного з основних компонентів нового цифрового віку. Ці технології дуже корисні для перетворення інформації в знання.

    Метою курсу є додати до свого арсеналу кілька дуже важливих інструментів, які допоможуть вам вирішити різні проблеми з великими даними. Ми почнемо з того, що дамо відповіді на запитання типу „Що таке великі дані? Чому це важливо чи корисно? Як ви зберігаєте ці великі дані? " Потім ми вивчимо різні інструменти та моделі програмування зі стеку технологій великих даних, які допоможуть нам проаналізувати дані. Теми включають деякі проекти в екосистемі Hadoop, такі як MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), екосистеми Zookeeper та Apache Spark. Ми також розглянемо вступ до AWS та EMR. Ви будете працювати в основному з одним вузлом Hadoop розподілу Cloudera. (4 одиниці) (Без передумов)

  • Метою цього курсу є вивчення концепцій, принципів архітектури та термінології комп'ютерних мереж шляхом вивчення того, як працюють мережі, та розробки мережевих додатків. Цей курс дотримується підходу зверху вниз до розуміння мереж, використовуючи архітектуру та протоколи Інтернету як основний приклад реалізації мережевих принципів. Ми починаємо з рівня додатків і продовжуємо через транспортний рівень, мережевий рівень, рівень посилань та фізичний рівень комп’ютерних мереж. Студенти розробляють кілька мережевих додатків та заповнюють кілька лабораторій, призначених для відстеження та розуміння переважаючих мережевих протоколів, що використовуються в Інтернеті. (4 одиниці) Обов’язкова умова: CS 401 або згода викладачів кафедри.

  • Цей курс глибоко враховує три аспекти комп'ютерної безпеки: конфіденційність, цілісність і доступність. Вивчається кілька моделей для конфіденційної політики безпеки. Розглянуто роль криптографії в забезпеченні конфіденційності та цілісності. Інші теми включають аутентифікацію, аудит, тестування проникнення, загальні вразливості та виявлення вторгнень. Курс завершується вивченням реалістичної системи безпеки. Студентам буде запропоновано прочитати статті з літератури з безпеки та застосувати їх до матеріалів, викладених на лекціях. (Кредити 4) Передумова: CS 401 або згода факультету кафедри.

  • Системи бази даних організовують і отримують інформацію, що дозволяє користувачеві легко і ефективно отримувати доступ до потрібної інформації. Теми включають: реляційну модель даних; SQL; ER моделювання; реляційна алгебра; нормалізація даних; операції; об'єкти в базі даних; безпека та цілісність даних; сховища даних, OLAP та інтелектуального аналізу даних; розподілені бази даних; вивчення конкретної комерційної системи бази даних. (Одиниці 4) Передумова: CS 401 або згода факультету кафедри.

  • Машинне навчання, галузь дослідження, яка надає комп’ютерам можливість вчитися на даних, лежить в основі майже кожної наукової дисципліни, а вивчення узагальнення (тобто прогнозування) на основі даних є центральною темою машинного навчання. Цей курс дає вступ до рівня машинного навчання на рівні аспірантів та поглиблене висвітлення нових та вдосконалених методів машинного навчання, а також їх основної теорії. Він підкреслює підходи, що мають практичну актуальність, і обговорює низку останніх програм машинного навчання, таких як видобуток даних (у Big Data / Data Science, Data Analytics), обробка природних мов, комп'ютерне бачення, робототехніка, біоінформатика та обробка текстових та веб-даних. Машинне навчання використовується в різних галузях промисловості, включаючи фінансові послуги, нафту та газ, охорону здоров’я, маркетинг та реклама, уряд, Інтернет та Інтернет речей.

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

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

  • Важливість програмування мобільних пристроїв виникла за останні роки як новий домен у розробці програмного забезпечення. Цей курс готує студентів до розробки додатків, які працюють на мобільних пристроях, таких як IPhone, IPad або Android. Це ринок, що швидко розвивається. Курс спрямований на встановлення, розробку, тестування та розповсюдження мобільних додатків. Наприкінці цього курсу студенти мають змогу розробити додаток для платформ, що імітуються, імітувати їх, протестувати на реальному пристрої і, нарешті, опублікувати в магазині додатків, щоб зробити їх доступними для користувачів. (Одиниці 4) Необхідна умова: CS472 або згода факультету кафедри.

  • У цьому курсі ви дізнаєтеся Reactive Programming Architecture SPA (веб-додатки з однією сторінкою) разом з усіма необхідними навичками для створення повного сучасного веб-додатка. Технології включають: бази даних NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase і NoSQL (MongoDB). Курс охоплюватиме:

    • Як двигун C ++ V8 і асинхронний код працюють у вузлі і циклі подій Node.
    • Як структурувати свій код для повторного використання і побудувати Restful API за допомогою модулів і ExpressJS.
    • Як працюють бази даних NoSQL: Mongo Shell, фреймворк агрегації, набори реплік, кластеризація, осколки, Mongoose ORM.
    • Глибоке розуміння того, як працює Angular (підтримується Google), Виявлення змін, Реактивне програмування RxJs з спостережуваними та суб'єктами, Shadow DOM, Зони, Модулі та Компоненти, Спеціальні директиви та труби, Послуги та ін'єкції залежностей, Кутовий компілятор, JIT та компіляція AOF , Форми (Шаблонний засіб і Data Driven), Прив'язка даних, Маршрутизація, Захист і захист маршруту, HTTP-клієнт, JWT JSON Web Token Authentication.

    (Одиниць 4)

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

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

  • У цьому курсі ми розглянемо методи, принципи та закономірності розробки гнучких, масштабованих, тестованих і стійких програмних систем, що використовують мікросервіси. Ми вивчимо, як можна розділити великі програми на менші мікросервіси, які легше будувати та інші переваги в порівнянні з монолітними корпоративними додатками. Розподілена архітектура мікросервісу також дає багато викликів. Ми вивчимо ці виклики і як їх вирішувати. Теми цього курсу - архітектурні стилі, методи інтеграції та шаблони, дизайн, керований областями, архітектура, керована подіями, і реактивні програми. (Кредити 4). (Немає передумов)

  • У цьому курсі практикуму студенти виконують завдання, пов’язані з комп’ютером, на технічній професійній посаді. Завдання, що виконуються, можуть полягати в проектуванні та розробці нових систем або застосуванні існуючих систем для конкретних цілей. Посадові інструкції практикуму формулюються роботодавцем та студентом та вимагають попереднього затвердження одним із випускників факультету, за погодженням із керівником практикуму, де розміщується студент. (Цей курс в першу чергу призначений для студентів, які навчаються в програмах стажування чи кооперації.) (0.5-1 одиниця на блок - може бути повторена.)

“Перший раз, коли я почув про програму MSCS, я сумнівався в цьому. Я не міг повірити, що щось подібне існує. Але одного разу до програми долучився мій друг. Тоді я підтвердив, що це реально. Потім я відновив процес подання заявки. Добре! Це правда, я тут, я закінчив програму і дуже щасливий ".