Компьютерные науки

Технические основы прикладного программирования

Программа о дополнительных темах прикладного программирования. Изучаются многопоточные приложения, технические основы объектно-ориентированного программирования и безопасность кода.
Студентов 922 Выпускников 89 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Темы:
Программирование
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание В учебной программе охватываются параллельное программирование на разделяемой памяти, применение структур данных и основы криптографии. Значительное внимание уделено технологиям виртуализации и общему оформлению кода. Материал сочетает вопросы безопасного кодирования с технической реализацией ООП в языке С++. Подробно рассматриваются эволюция аппаратного обеспечения и виртуальные машины. Учебная программа адресована специалистам в области информатики, которым необходимо расширить знания о технических аспектах создания современного программного обеспечения.
Цели
  • Сформировать понимание технических аспектов написания параллельных программ.
  • Раскрыть механизмы аппаратной виртуализации.
  • Дать представление о моделировании угроз ИБ.
Чему я научусь?
  • Оформлять тексты программ с учетом безопасности.
  • Применять структуры данных в параллельном окружении.
  • Использовать криптографические алгоритмы.

Авторы

Тормасов Александр Геннадьевич
Тормасов Александр Геннадьевич
Д.ф.-м.н., профессор, заместитель заведующего кафедры информатики МФТИ\n
Чему я научусь?
  • Оформлять тексты программ с учетом безопасности.
  • Применять структуры данных в параллельном окружении.
  • Использовать криптографические алгоритмы.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Обзор задач Дается обзор курса, рассматриваемые проблемы, возникающие при программировании и их решения. Также рассматриваются требования к заданиям... Дается обзор курса, рассматриваемые проблемы, возникающие при программировании и их решения. Также рассматриваются требования к заданиям и к курсовой работе, которые необходимо сделать в процессе работы над курсом. Детально рассказываются некоторые задачи, которые можно использовать как курсовые проекты (индивидуальные или коллективные) – например, задачи о триангуляции. ещё
2 История создания программ Продолжается обзор задач, которые можно использовать в качестве курсовых проектов. Написание программ, комментарии, сопровождение, жизненный цикл... Продолжается обзор задач, которые можно использовать в качестве курсовых проектов. Написание программ, комментарии, сопровождение, жизненный цикл программ. Краткий экскурс в историю создания программ. Оформление текста программ, требования к нему и откуда они берутся. ещё
3 Оформление текста программ и основные структуры Оформление текста программ – написание комментариев, их типы и разновидности, содержание. Несколько слов о правах на... Оформление текста программ – написание комментариев, их типы и разновидности, содержание. Несколько слов о правах на программу, копирайтах, откуда берутся права, отличия в законодательстве России и США. Хорошая и плохая практика написания текста программ – выбор имен для переменных, использование препроцессора и тд. Структуры данных, и их выбор для задач. Типовые элементы структур данных и связанных с ними алгоритмов, итераторы. Проблемы использования структур данных в параллельном окружении на примере односвязного списка. ещё
Оформление текста программ и основные структуры тест для курса Технические основы прикладного программирования 60 мин
4 Структуры данных "Что такое ""структуры данных"" в общем, типовые элементы и понятия, итераторы. Односвязный список и его использование... "Что такое ""структуры данных"" в общем, типовые элементы и понятия, итераторы. Односвязный список и его использование в куче (heap) рантайма (библиотеке периода исполнения) языка С, в функциях malloc/free. Проблемы создания программ, использующих односвязные списки, в том числе в параллельном окружении. Двусвязные списки и очереди на их основе. Стек, его использование в программах на языке С, поддержка рекурсии на его основе. Расположение данных в памяти. Использование структур памяти в параллельном окружении, операции синхронизации. Графы, деревья, использование их для компрессии данных." ещё
5 Параллельное программирование и безопасность программного обеспечения Хеш таблица и ее параллельное использование. Хорошая и плохая практика написания параллельных программ. Безопасность программного обеспечение.... Хеш таблица и ее параллельное использование. Хорошая и плохая практика написания параллельных программ. Безопасность программного обеспечение. Типовые проблемы, откуда они берутся. ещё
Параллельное программирование и безопасность программного обеспечения тест для курса Технические основы прикладного программирования 60 мин
6 Техника кодирования и основы криптографии "Безопасность ПО. Написание программ без ""дырок"". Техника кодирования защищенных программ и типичные ошибки. Переполнение буфера, определение... "Безопасность ПО. Написание программ без ""дырок"". Техника кодирования защищенных программ и типичные ошибки. Переполнение буфера, определение уровня доступа, работа с минимально возможными привилегиями, криптография и ее корректное применение, предохранение секретных данных, работа с входными данными, проблемы разных путей доступа к одним и тем же данным, запросов к базам данных и веб-страницам, а также проблемы поддержки интернационального ПО. Основные понятия криптографии, история. Симметричная и ассиметричная криптография, использование ее для безопасной почты. Безопасные и небезопасные алгоритмы (является ли секретный алгоритм безопасным?), генераторы случайных чисел. Устройство цифровой подписи. Как правильно применять криптографию для обеспечения безопасности. Способы взлома программ." ещё
7 Моделирование угроз. Эволюция аппаратного обеспечения Моделирование угроз. Классификация опасностеий STRIDE – Spoofing (подмена данных), Tampering (подделка и изменение содержания данных), Repudiation... Моделирование угроз. Классификация опасностеий STRIDE – Spoofing (подмена данных), Tampering (подделка и изменение содержания данных), Repudiation (незаконныий отказ от проведенноий операции), Information disclosure (разглашение информации), Denial of service (отказ в обслуживании), Elevation of privilege (незаконное поднятие привилегиий). Методика оценки риска DREAD - Damage potential (что может быть сломано), Reproducibility (повторяемость), Exploitability (пригодность угрозы для использования), Affected users (на каких пользователеий повлияет), Discoverability (возможно ли детектировать факт использования). Эволюция современного аппаратного обеспечения и ее влияние на программное обеспечение. Гипертредовые (многопоточные) и многоядерные процессоры, универсальные графические (GPU) процессоры и новые возможности по их использованию. ещё
Моделирование угроз. Эволюция аппаратного обеспечения тест для курса Технические основы прикладного программирования 60 мин
8 Параллельное программирование "Параллельное программирование. Параллельные программы – от работы с разделяемоий памятью, использования массивнопараллельных компьютеров и до распределенных... "Параллельное программирование. Параллельные программы – от работы с разделяемоий памятью, использования массивнопараллельных компьютеров и до распределенных расчетов на многих физических компьютерах. Декомпозиция задач на параллельные куски. Закон Амдала. Геометрическая декомпозиция. Параллелизм данных, параллелизм кода. Паттерны параллельного программирования: параллелизм на уровне задач – декомпозиция задачи, ""разделяий и властвуй"" - декомпозиция задач и данных, геометрическая декомпозиция – декомпозиция данных, конвеиерное исполнение – декомпозиция потока данных, ""фронт волны"" - декомпозиция данных c ""многомерными"" зависимостями. Пример типового шаблона программирования – пул нитей." ещё
9 Технические аспекты написания параллельных программ "Технические аспекты написания параллельных программ на разделяемой памяти. Многопоточные программы. Работа с разделяемоий памятью. Атомарность операций.... "Технические аспекты написания параллельных программ на разделяемой памяти. Многопоточные программы. Работа с разделяемоий памятью. Атомарность операций. Синхронизационные примитивы (низкоуровневые атомарные команды, критические секции, взаимоисключающая блокировка - mutex, рекурсивная блокировка - lock, блокировка чтения-записи – read/write lock, многопроцессорная блокировка - spin-lock, семафоры, барьеры). Принятие во внимание особенностей аппаратной платформы, например, последовательности операций записи в память и т.д. Тупики и взаимные блокировки. Неблокирующая синхронизация. Реализация одних примитивов через другие, относительная ""мощность"" примитивов. Задача о консенсусе как способ оценки примитивов." ещё
Технические аспекты написания параллельных программ тест для курса Технические основы прикладного программирования 60 мин
10 Объектно ориентированное программирование "Объектно ориентированное программирование с понятийной точки зрения. Экскурс в историю появления, возникновение понятий. Объекты как способ... "Объектно ориентированное программирование с понятийной точки зрения. Экскурс в историю появления, возникновение понятий. Объекты как способ моделирования ""параллельного внешнего мира"" и формализации понятий. Объект как совокупность методов и данных, классы объектов, мета объекты. Объектная модель. Жизненный цикл объектов. Статические и динамические объекты. Раннее и позднее связывание, постоянно существующие объекты. Инкапсуляция и полиморфизм как базовые понятия ООП. Наследование и агрегирование как способы создания новых, более сложных, объектов, их достоинства и недостатки (на примере С++ и COM). Технические способы создания объектов в языках типа С++, представление их в компьютере." ещё
11 Техническая реализация ООП в языке программирования С++ Техническая реализация ООП в языке программирования С++ - конструкторы и деструкторы, представление методов через функции, расположение... Техническая реализация ООП в языке программирования С++ - конструкторы и деструкторы, представление методов через функции, расположение данных в памяти. Реализация понятия полиморфизма через таблицы виртуальных функций. НАследование и его реализация, связь с виртуальными функциями, абстрактные типы данных. Исключения, их техническая реализация и особенности применения в языке и ОС Windows. ещё
12 Поддержка ООП в различных системах и средах. Технологии виртуализации Поддержка ООП в языке и системе программирования ObjectiveC, категории, сообщения и методы. Поддержка ООП в ОС... Поддержка ООП в языке и системе программирования ObjectiveC, категории, сообщения и методы. Поддержка ООП в ОС Windows, отличия от поддержки ООП в языке программирования. Реализация основных понятий ООП в этих системах. Использование подходов ООП в разных условиях. Технологии виртуализации. Почему они стали в последнее время столь широко распространены, их типы – виртуализация ОС и виртуализация оборудования. Преимущества и недостатки разных виртуализационных подходов с точки зрения потребителя. Технические основы виртуализации уровня ОС, контейнеры, уровни изоляции. ещё
Поддержка ООП в различных системах и средах. Технологии виртуализации тест для курса Технические основы прикладного программирования 60 мин
13 Технология аппаратной виртуализации и виртуальные машины Технология аппаратной виртуализации. Особенности работы кода прикладных программ внутри виртуальных машин. Новые возможности, предоставляемые виртуальными машинами... Технология аппаратной виртуализации. Особенности работы кода прикладных программ внутри виртуальных машин. Новые возможности, предоставляемые виртуальными машинами и контейнерами – миграция, универсальность конфигурации, быстрота развертывания и обновления, удобства управления. Технические принципы организации виртуальных машин. Монитор виртуальных машин, аппаратная поддержка виртуализации, бинарная трансляция и другие подходы. Накладные расходы в реализации поддержки системы виртуальных машин. Паравиртуализация. Какие типы виртуализации следует применять в разных условиях. ещё
Технология аппаратной виртуализации и виртуальные машины тест для курса Технические основы прикладного программирования 60 мин
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

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

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.