ОПИСАНИЕ ОБЯЗАТЕЛЬНЫХ ПРЕДМЕТОВ
Structured Programming, Object-oriented Programming COM 118, COM 119
Этот курс помогает студентам освоить необходимые навыки структурированного и объектно-ориентированного программирования. По окончании курса студенты должны понимать основные концепции программирования, такие как управление потоком, объекты, классы, методы, процедурное декомпозицию, наследование и полиморфизм; быть способными писать простые приложения, используя большинство возможностей языка программирования Java и применять принципы хорошей практики программирования на протяжении всего процесса.
По окончании курса студенты должны уметь исследовать, анализировать, проектировать, разрабатывать и поддерживать функционирующие программные системы в соответствии с целями Департамента "Программной инженерии" АУЦА и стандартом компетентности в области ИТ 510300 (ОК 17, 17, 115).
Темы: Структурированное программирование:
- Введение в процесс разработки программного обеспечения (6 часов)
- Выборы (9 часов)
- Циклы (12 часов)
- Методы (9 часов)
- Одномерные и многомерные массивы (6 часов)
Темы: Объектно-ориентированное программирование
- Объекты и классы (9 часов)
- Наследование и полиморфизм (9 часов)
- Абстрактные классы и интерфейсы (6 часов)
- Обработка исключений (6 часов)
- Основы GUI и компьютерной графики (6 часов)
- Обобщения и контейнерные классы (6 часов)
- Работа с вводом/выводом (6 часов)
Safety Management and Economics COM-120 COM-121
Курс "Safety Management for SFW" является вводным и охватывает наиболее важные аспекты безопасности программного обеспечения с точки зрения разработчика. Этот курс, оцениваемый в 3 кредита, фокусируется на темах построения безопасного, надежного и устойчивого программного обеспечения. В ходе этого курса мы подробно рассматриваем низкоуровневые языки программирования, такие как C, C++ и ассемблер, их взаимосвязь с базовым аппаратным обеспечением. Мы пытаемся понять, как решения в области дизайна таких фундаментальных технологий, используемых для создания основных систем вокруг нас, и их взаимосвязи могут повлиять на устойчивость и безопасность виртуального и реального мира.
Introduction to Software Engineering and Informatics COM-108
Курс "The IT Essentials" затрагивает фундаментальные аспекты аппаратного и программного обеспечения компьютера, а также расширенные концепции, такие как безопасность, сети и обязанности IT-специалиста. Он предназначен для студентов, желающих заниматься карьерой в сфере информационных и коммуникационных технологий, а также для тех, кто хочет получить практические знания о том, как работает компьютер. Студенты, завершившие курс COM-108, смогут описать внутренние компоненты компьютера, собрать компьютерную систему, установить операционную систему и осуществлять устранение неисправностей с помощью системных инструментов и диагностического программного обеспечения. Они также смогут подключаться к Интернету и делиться ресурсами в сетевой среде. Новые темы в этой версии включают мобильные устройства, такие как планшеты и смартфоны, а также виртуализацию на клиентской стороне. Расширенные темы включают безопасность, сети и устранение неполадок. Практические лабораторные занятия являются важными элементами, встроенными в учебный план.
Включение Packet Tracer поддерживает соответствие новым целям сертификации CompTIA A+. Этот курс помогает студентам подготовиться к сертификации CompTIA A+, в частности к экзамену Essentials.
Цели обучения:
- Определить информационные технологии (IT) и описать компоненты персонального компьютера
- Описать методы защиты людей, оборудования и окружающей среды от несчастных случаев, повреждений и загрязнения
- Выполнить пошаговую сборку настольного компьютера
- Объяснить цель профилактического обслуживания и идентифицировать элементы процесса устранения неисправностей
- Установить и ориентироваться в операционной системе
- Настроить компьютеры для подключения к сети
- Обновить или заменить компоненты ноутбука в соответствии с потребностями клиента
- Описать особенности и характеристики мобильных устройств
- Установить и подключить принтер
- Применять основные принципы аппаратной и программной безопасности
- Применять хорошие коммуникационные навыки и профессиональное поведение при работе с клиентами
- Выполнять профилактическое обслуживание и осуществлять базовое устранение неполадок
- Оценить потребности клиента, проанализировать возможные конфигурации и предложить решения или рекомендации по аппаратному обеспечению, операционным системам, сетям и безопасности.
Algorithms and data structures COM 223.1 3114
Цель курса заключается в передаче знаний о классических структурах данных и алгоритмах, базовых как для практической, так и для теоретической частей компьютерных наук. Краткий список структур данных и алгоритмов, изучаемых в этом курсе: динамические массивы, связанные списки, хеш-таблицы, бинарные деревья, линейный поиск, бинарный поиск. Особое внимание в курсе будет уделено STL-части стандартной библиотеки C++: классам string, vector, list, set, unordered_set, map, unordered_map и стандартным алгоритмам.
Язык программирования и программные инструменты курса:
Студенты должны выполнять лабораторные работы и проекты, используя стандартный C++ и любые компиляторы, поддерживающие стандартный C++ и интерфейс командной строки.
-
Производительность алгоритмов. O-notation
-
Linked lists. Класс list стандартной библиотеки C++
-
Двусвязные и односвязные списки.
-
Hashing. Классы unordered_set и unordered_map стандартной библиотеки C++.
-
Реализация класса HashSet
-
Binary Search Trees. Классы set и map стандартной библиотеки C++
-
Реализация класса BinarySearchTree
-
Рекурсия. Возврат к началу
-
Алгоритмы сортировки: insertion sort, merge sort, quick sort
-
Heap, heap sort
-
Графы. Breadth-first Search, depth-first search,
-
Топологическая сортировка.
-
Взвешенные графы. Кратчайший путь.
-
Взвешенные графы. Минимальное остовное дерево.
-
Динамическое программирование. Наибольшая общая подпоследовательность
-
Алгоритмы стандартной библиотеки C++.
Computer Architecture COM 410 3268
Курс знакомит студентов с темой компьютерной архитектуры и организации. Студенты сосредоточатся на изучении структуры и проектировании современных центральных процессорных устройств. Они узнают основы наборов инструкций x86-64 и aarch64, языков ассемблера для этих платформ, а также представление структур высокоуровневых языков в низкоуровневых языках.
По завершении курса студенты должны иметь возможность исследовать, анализировать, проектировать, разрабатывать и поддерживать программное обеспечение на низкоуровневых языках программирования в соответствии с целями направления "Программной инженерии" АУЦА и стандартом компетенции в области информационных технологий 510300 (ОК 17, 17, 115).
Темы курса:
- Современные компьютерные архитектуры и организация
- Языки ассемблера x86-64 и ARM64
- Представление структур высокоуровневых языков в низкоуровневых языках ассемблера
- Ускорение с помощью инструкций SIMD
- Эмуляция системы
Operating Systems COM 341.1 3325
Курс знакомит студентов с основами проектирования и реализации операционных систем. Темы включают обзор компонентов операционной системы, синхронизацию, реализацию процессов, алгоритмы планирования, управление памятью и файловые системы. Этот курс предназначен для студентов, обучающихся по направлению "Программная инженерия".
- Процессы
Планирование
Межпроцессное взаимодействие - Управление памятью
Сегментация
Управление виртуальной памятью
Алгоритмы замещения страниц
Переключение - Файловые системы
Реализация файловой системы
Механизмы защиты - Ввод и вывод
Принципы of I/O Hardware & Software
Deadlocks
RAM диски
Диски
Терминалы
System Programming COM 392 (Formerly COM 451.1 – Parallel & Distributed Programming)
По мере того как скорость CPU начала превышать 3,5 ГГц, дальнейшее увеличение скорости CPU стало достигать предела. В результате производители компьютеров начали создавать машины с несколькими CPU. Вскоре были разработаны техники программирования этих многопроцессорных машин. В этот же временной промежуток появились графические процессоры (GPU), программно-программируемые вентильные матрицы (FPGAs) и другие типы гетерогенных вычислительных технологий и интегральных схем. Гетерогенные вычисления предоставляют эффективные способы решения конкретных видов вычислительных задач. В настоящее время большинство современных вычислений, особенно серверных или облачных вычислений, распределено на гетерогенных вычислительных машинах. Современный программный инженер, заинтересованный в быстром и эффективном [облачном] вычислении, должен понимать, когда и как использовать такие технологии. Этот курс предоставляет введение и базовые знания по этим темам с особым акцентом на:
- Многопоточное программирование ЦП,
- Программирование графических процессоров (GPU),
- Выполнение алгоритмов вычислений, интенсивных по вычислениям, в облаке, используя как многопоточную обработку, так и обработку на GPU.
ЦЕЛИ И РЕЗУЛЬТАТЫ
По окончании курса студенты смогут:
- писать multi-threaded программу на С/С++, использующую несколько ядер ЦП,
- писать программу, использующую десятки тысяч ядер графического процессора и использующую различные виды памяти графического процессора,
- разрабатывать программы для решения вычислительно интенсивных задач, независимо от используемого языка программирования.
Computer Graphics COM 391 4954
Курс учит студентов основам компьютерной графики через разработку трехмерного движка в серии лабораторных заданий на протяжении всего курса. Студенты изучат, как работать с графическими ускорителями с помощью API OpenGL ES для создания качественных трехмерных компьютерных изображений, анимаций или интерактивных приложений. В результате студенты должны быть способны исследовать и анализировать функционирование сложной системы реального времени, улучшать свои навыки в использовании языков программирования для проектирования и разработки программного обеспечения в соответствии с целями направления "Программной инженерии" АУЦА и стандартом компетенции в области ИТ (включая элементы компетенции ОК 1–7, 1–7, 1–15).
Темы курса:
- Введение, краткая история, окружение разработки, первая программа (6 часов)
- Векторы, матрицы, сценовый граф, камера (6 часов)
- Геометрия, буферные объекты, конвейер GPU (6 часов)
- Материалы, теневые эффекты, GLSL (6 часов)
- Освещение Ламберта, Фонга, Блинна-Фонга (3 часа)
- Текстурирование и картографирование (6 часов)
- Процедурная геометрия (3 часа)
- Системы частиц, оптимизация рендеринга (6 часов)
- Графика в реальном времени в играх, создание игры с использованием вашего движка (6 часов)
Software Engineering I, II COM 421, 430
Курс знакомит студентов с "Программной инженерией", обучая каждого из отдельных этапов жизненного цикла программного обеспечения: определение требований, проектирование, кодирование, тестирование и поставка программного обеспечения. Курс включает в себя оценку человеко-месяцев для завершения проекта и написание проектных предложений. Помимо теории, студенты пройдут через все этапы разработки программного обеспечения на собственных проектах.
Это двухсеместровый курс, разработанный для студентов, изучающих программную инженерию. Курс знакомит студентов с инженерией программного обеспечения, предоставляя информацию о ключевых процессах.
Освещаемые темы:
- Концепции инженерии программного обеспечения
- Методологии разработки программного обеспечения
- Гибкая разработка программного обеспечения
- Определение требований
- Проектирование и моделирование системы
- Реализация системы
- Тестирование программного обеспечения
- Эволюция программного обеспечения
- Управление проектами
- Надежность и безопасность
Senior Project Preparation I II COM 431.1 COM 433
Все студенты, обучающиеся по специальности "Программная Инженерия", должны успешно завершить двухсеместровый Курсовой Проект/Дипломный проект в свой последний год обучения. Дипломный проект/Курсовой проект представляет собой завершающий опыт студента в данной области. Студенты, получающие два диплома в другой области, могут предложить междисциплинарные проекты по своему выбору.
К концу курса студент сможет:
- Знания и понимание
- определить тему и вопрос исследования, разработки или бизнеса в области программной инженерии
- понимать использование метода разработки для планирования проекта исследования, разработки или бизнес-приложения
- понимать текущую практику в области программной инженерии и взаимосвязь практических проблем и академических исследований
- Навыки и умения
- сформулировать вопрос исследования, разработки, релевантный в области программной инженерии
- систематически решать проблемы исследования, разработки, релевантные в области программной инженерии
- применять метод исследования, разработки для решения проблемы, релевантной теме
- объединять теории, модели и/или методы, релевантные теме
- планировать и проводить проект исследования, разработки и документировать его в письменном отчете
- интегрировать знания систематическим и критическим образом для достижения и представления знаний, релевантных в области программной инженерии
- коммуницировать эти знания в академической среде, т.е. представить результаты исследования перед академической аудиторией
- Суждение и подход
- понимать область программной инженерии и области исследования, релевантные этой области
- размышлять о важности коммуникации исследований в академической среде
- использовать знания из этого курса как основу для вступления в исследовательское сообщество в области программной инженерии.
Содержание курса
Курс включает в себя разработку приложения или исследование актуальной проблемы в области "Программной инженерии". Проблема определяется студентами и должна иметь практическую и/или теоретическую значимость для данной области. Студенты работают индивидуально или в парах, предпочтительно в корпоративной среде, где исследуется проблема, которую они рассматривают. Исследование должно быть задокументировано в виде письменного отчета.