Аудитория:
- Разработчики, собирающиеся создавать ПО на Unix/Linux платформе
- Опытные администраторы и инженеры
- Специалисты, решающие вычислительно-инженерные задачи на Unix-компьютерах
- Студенты, интересующиеся проблемами разработки ПО
Обязательная предварительная подготовка:
- Знание синтаксиса языка Си
- Знания и умения использования Unix/Linux систем в пределах курсов «Использование и администрирование Unix-систем для программистов» или «Администрирование FreeBSD» или «Администрирование Oracle SUN Solaris 10″ или «Администрирование GNU/Linux»
- Небольшой опыт программирования на любом языке
- Знание английского языка в пределах чтения компьютерно-ориентированного материала
Содержание курса:
- Введение
- Архитектура Unix с точки зрения программиста
- Системные вызовы и библиотечные функции
- Обработка ошибок
- Аргументы командной строки
- Oружение оболочки
- Лабораторная работа
- Инструменты
- Использование компилятора GNU cc (gcc)
- Утилита make
- RCS и CVS – поддержка версий
- Редакторы
- Отладчик gdb
- Создание библиотек
- Утилиты autoconf и automake
- Лабораторная работа
- Ввод/вывод
- Низкоуровневый ввод/ввывод
- Лабораторная работа
- Работа с файлами с помощью библиотеки stdio
- Лабораторная работа
- Управление памятью
- Процессы
- Создание процессов
- Сигналы
- Завершение процессов
- Лабораторная работа
- Потоки
- Создание потоков
- Отмена потоков
- Взаимодействие потоков
- Потоки и процессы. Сравнение
- Лабораторная работа
- Взаимодействие между процессами
- Каналы (pipes)
- Oчереди сообщений
- Механизм разделяемой памятью (shared memory)
- Семафоры
- Локальные сокеты
- Лабораторная работа
- Создание безопасных программ
- Причины наличия уязвимостей, безопасность и обеспечение с открытыми исходными текстами
- Проверка ввода данных
- Переполнение буфера
- Подходы и принципы, используемые для написания безопасных программ, инженерный подход к проектированию безопасного ПО
- Языки программирования и безопасные программы
- Криптография
- Инструменты для обнаружения брешей в безопасности программ

