В обзорной заметке предлагается авторский подход к преподаванию (или самообразованию) в области информационных технологий для бакалавров информационной безопасности.
Подход основывается на многолетнем опыте проведения занятий для студентов направления «Информационная безопасность» в СПбГЭУ
и организации производственной (преддипломной) практики, т.е. тесном сотрудничестве с компаниями-работодателями.
Остановимся на каждой из тем, показанной на схеме.
1. Язык программирования Python
Подходит для любых специальностей и любого начального уровня (школа, вуз, курсы повышения квалификации). Создавался как язык для обучения программированию. Рекомендую обратить внимание на курс, который записываю по Python.
Знание языка Си, на мой взгляд, является обязательным для любого специалиста в области защиты информации.
Без знания Си сложно изучать внутреннее устройство современных операционных систем, невозможно понять причины возникновения программных уязвимостей и т.д.
От языка Си при желании можно перейти к С++ (о том, как это сделать читайте тут).
Изучение Си занимает 1 семестр (при условии, что студенты уже обладают минимальным представлением о программировании), упор необходимо делать на наиболее сложные темы: указатели, строки, массивы и пр. (см. темы и мои материалы на github). Очевидно, что за 1 семестр нельзя стать хорошим программистом на Си, поэтому рекомендую не гнаться за большими проектами, а решать задачи, охватывающие узкие темы.
По окончании каждой лекции (!) желательно проводить небольшую проверочную на закрепление пройденной теории.
Выбор компилятора и IDE: подойдет Code::Blocks со встроенной поддержкой набора утилит, но я предпочитаю gcc (clang) и операционную систему Debian (Kali Linux для хакеров). (см. обоснование выбора Linux).
Теория алгоритмов и сами алгоритмы должны изучаться в отдельной дисциплине, например, дискретной математике, но случается так, что языки программирования изучаются раньше.
В таком случае приходится затрагивать темы, связанные с алгоритмам.
История языка Си тесно переплетена с историей операционной системы UNIX.
5.Архитектура ОС UNIX (GNU / LINUX)
Обычно операционные системы изучаются в отдельной дисциплине, но самые основы необходимо рассказать в процессе изучения языков программирования. Например, потоки ввода/вывода и пр.
Позволяет понять, как выполняются программы на машинном уровне. В качестве задания рекомендую написать программу на языке Си, затем ее дизассембировать и посмотреть на связь Си и ассемблера. Вы многое для себя откроете!