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

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

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

НОВИНКА! Перемога наука даних

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

  • Сучасні практики програмування (програмування 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-діаграм для цілей моделювання відносин між об'єктами програмного забезпечення. У програмній інженерії, студент буде розвивати навички в поєднанні цих інструментів разом, щоб виробляти надійне, легко підтримуване програмне забезпечення. Методологія розробки програмного забезпечення описує, коли і як повинні бути використані концепції OO і 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 є частиною базової основи Spring і стала найпоширенішою веб-платформою Java за останні роки. (Одиниці 4) Передумова: CS 472 або згода факультету кафедри.

  • Програмування веб-додатків (CS 472)

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

  • Наука і технологія свідомості комп'ютерних професіоналів (ДЛЯ 506)

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

  • Керівництво для технічних менеджерів (ЗА 506B)

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

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

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

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

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

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

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

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

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

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

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

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

    (Одиниць 2)

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

  • Розширені мови програмування (CS 505)

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

  • Великі дані (Science Data) (CS 522)

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

  • Аналіз великих даних (Science Science) (CS 488)

    Великі дані - це новий природний ресурс: дані кожного місяця подвоюються кожні 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) Передумова: Згода факультету кафедри

  • Технології великих даних (Science 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)

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

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

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

  • Програмування мобільних пристроїв (CS 473)

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

  • Сучасні веб-програми (CS 572)

    У цьому курсі ви дізнаєтеся 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)

  • Операційні системи (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, я сумнівався в цьому. Я не міг повірити, що щось подібне існує. Але одного дня мій приєднався до програми. Саме тоді я підтвердив, що це реально. Потім я відновив процес подання заяви. Добре! Це правда, я тут, я завершив програму, і я такий щасливий ».

Едвін БвамбалеУганда