Программа обучения по компьютерным наукам в РУДН
Предложения по программе обучения по компьютерным наукам в РУДН.
Содержание
1 TL;DR
1.1 Специальности
- Основные специальности: 02 и 09.
- Дополнительные специальности: 38.
- Специальности 02 и 09 направлены на обучение заготовки специалиста по компьютерным наукам.
- Возможные направления:
- разработчик;
- системный инженер;
- научный сотрудник в области теоретических компьютерных наук;
- научный сотрудник в области моделирования.
- Специальность 38 направлена на подготовку заготовок управленцев для информационных отраслей.
1.2 Что мы можем
- Полный цикл обучения требует наличия аспирантуры и Диссертационного совета.
- Исходя из этого, мы можем готовить только специалистов по моделированию.
- Исходя их фактических научных школ:
- моделирование сетей (компьютерных, телекоммуникационных);
- моделирование физических систем.
1.3 Излишние предметы в настоящее время
- В рамках Института остались осколки других научных школ с разрозненным профессорско-преподавательским составом.
- Необходимо интегрировать сотрудников в основные направления.
- Либо переориентировать их на другие подразделения Университета.
1.4 Что убрать
- Разрозненные подходы к программированию и сейчас не выстроены в единую систему.
- Необходимо перепрофилировать их на преподавание научного программирования (узкий набор языков и методик).
- Экзотические языки программирования и индустриальные языки программирования надо убрать.
- Базы данных сократить до одного семестра (с упором на практическую работу).
- Специалистов по искусственному интеллекту попробовать использовать для преподавания на факультете Искусственного интеллекта.
1.5 Практический подход
- Излишний упор на теоретический подход не даёт студентам овладеть практическими умениями.
- По крайней мере первые 4 курса должны быть направлены на овладение практическими навыками.
- Шире внедрять сержантский метод обучения (monkey see, monkey do).
- Применять проектный подход (индивидуальные и групповые проекты по каждому предмету).
2 Общие положения
- Направление компьютерных наук содержит в себе спектр траекторий и результатов обучения.
- При составлении образовательной программы следует выделить только одну траекторию (даже не несколько).
- Выбор траектории задаёт набор дисциплин, предлагаемых студентам.
- Определяющими при выборе конкретной программы являются:
- описание программы обучения (результаты, возможные профессии);
- траектория обучения определяется специальностью диссовета;
- финальная точка обучения — защита кандидатской диссертации (рассматриваем научные направления, не инженерные);
- необходимо учитывать научную школу (формальную и фактическую) кафедры;
- необходимо учитывать наличествующий персонал, который может осуществлять преподавание.
3 Выбор траектории обучения
- Преподавание ведётся в рамках Института.
- Присутствует две фактические научные школы.
- Обе занимаются математическим моделированием.
- Школа Самуйлова:
- дискретное моделирование;
- основной инструментарий — разностные уравнения;
- моделируюся телекомуникационные процессы;
- жёсткая фиксация на методах и объектах моделирования.
- Школа Севастьянова:
- непрерывное математическое моделирование;
- основной инструментарий — дифференциальные уравнения;
- моделируются физические процессы, чаще всего из области электродинамики;
- нет жёсткой фиксации на методах и объектах моделирования.
- Фрагментарные научные школы не могут поддерживать отдельное направление обучения.
- Они будут вынуждены вливаться в текущие направления.
- Естественным представляется выбрать направление математического моделирования.
4 Организационная структура
- Компьютерные науки преподаются в рамках Института (см. Институт компьютерных наук и телекоммуникаций).
- В институте две кафедры
- Кафедра теории вероятностей и кибербезопасности
- Кафедра математического моделирования и искусственного интеллекта
5 Специальности обучения
- 02.03.01
- Специальность: Математика и компьютерные науки
- Профессия: Математик, программист
- 02.03.02
- Специальность: Фундаментальная информатика и информационные технологии
- Профессия: Программист, аналитик
- 09.03.03
- Специальность: Прикладная информатика
- Профессия: Программист, аналитик (в прикладной области, например в экономике)
- 38.03.05
- Специальность: Бизнес-информатика
- Профессия: Аналитик, ИТ-менеджер
6 Направления обучения
- Компьютерные науки могут дать следующие траектории обучения:
- разработка (Development);
- администрирование (Operations);
- теоретические компьютерные науки;
- математическое моделирование.
7 Диссертационные советы
- 1.2.2. Математическое моделирование, численные методы и комплексы программ
- 1.2.3. Теоретическая информатика, кибернетика
8 Научные школы
8.1 Научные школы (формальные)
- Школа Математическая теория телетрафика (Башарин Г. П., Самуйлов К. Е.)
- Школа Математическое моделирование и вычислительная физика (Жидков, Севастьянов Л. А.)
8.2 Фрагменты научных школ
- Школа Башарина–Печинкина–Бочарова по теории вероятностей.
- Школа Толмачёва И. Л. по компьютерным наукам (базы данных) (см. Игорь Леонидович Толмачёв).
- Школа Осипова по искусственному интеллекту.
8.3 Научные школы (фактические)
- Математическое моделирование и вычислительная физика (Севастьянов Л. А.)
- Математическая теория телетрафика (Самуйлов К. Е.)
9 Структура образовательных треков
9.1 Триада Самарского
- Математическое моделирование рассматривается как порождение нескольких областей науки:
- прикладной теоретическая физика;
- математическая физика;
- вычислительная физика.
- Структура области математического моделирования задаётся как триада Модель–Алгоритм–Программа [1; 2].
9.2 Специфика научного программного обеспечения
- Научное ПО имеет ряд особенностей, которые не встречаются в коммерческом ПО.
9.2.1 Используемые алгоритмы крайне сложны
- Зачастую в них разбирается очень узкая группа людей.
9.2.2 Низкая универсальность
- Всё, что можно было сделать стандартными методами, уже давно сделано.
9.2.3 Уникальная модель распространения
- Основной источник информации о научном ПО — реферируемые научные журналы.
- Информация о самих программах становится доступным уже после того, как с помощью этих программ были получены и опубликованы научные результаты.
- Наличие результата оправдывает существование описываемого программного обеспечения.
9.2.4 Остаточное финансирование
- Кроме редких специфических случаев на научное ПО не выдаётся целенаправленное финансирование.
- Написание программного обеспечения рассматривается как производная от конкретной научной задачи.
- Иногда крупные популярные программы удостаиваются отдельных грантов.
9.2.5 Учёный — не программист
- Программы пишутся самими учёными, не являющимися специалистами в индустриальной разработке программного обеспечения.
- Важен научный результат.
- Культуре разработки уделяется мало внимания.
9.2.6 Унаследованный код (legacy)
- Наследуется код и средства разработки.
- Большой процент технического долга.
- Возникают требования к средствам разработки: большое время жизни и поддержка давно разработанного ПО.
- Поэтому стараются избегать средств программирования, нарушающих совместимость (как пример, python).
9.2.7 Фрагментация разработки
- Разные модули программ пишутся разными людьми (студентами, аспирантами, сотрудниками).
- Они работают над кодом в течение 2–3 лет, пока это нужно для подготовки диплома или диссертации, или пока есть финансирование.
- Код бросается в полусыром виде.
- Из-за отсутствия культуры программирования через несколько лет возникает спагетти-код.
9.2.8 Сложность отладки и тестирования
- Сравнить результаты работы программ зачастую просто не с чем (т.к. это и есть передний край науки).
- Для отладки программы, её приходится сравнивать с верификацией модели.
9.2.9 Требования к пользователям
- Трудно отделить ошибки программы от специфики исследуемого объекта.
- Для интерпретации полученного результата нужна высокая научная квалификация пользователя.
9.2.10 Идеология DevOps
- Приходится не только разрабатывать программное обеспечение, но и поддерживать инфраструктуру.
9.3 Предлагаемые треки
- Модель:
- Разные типы моделирования:
- аналитическое;
- имитационное;
- натурное;
- статистическое.
- Разные типы моделирования:
- Алгоритм:
- Для усвоения алгоритмической части необходимо изучение информатики (компьютерных наук).
- Программа:
- Программирование рассматривается в разрезе научного программирования.
- Научное программирование достаточно существенно отличается от индустриального программирования.
- Кроме собственно программирования (разработки) оно включает в себя и существенный сегмент общей поддержки работы на компьютере.
10 Образовательные треки
10.1 Научное программирование (Development)
- Языки научного программирования:
- Julia.
- Fortran.
- Python (язык является клеем для разных библиотек).
- Matlab.
10.2 Научное программирование (Operations)
- В данную область входят:
10.3 Моделирование (Математические основы)
10.4 Информатика (Компьютерные науки)
- Для определения необходимых областей информатики рекомендуется использовать следующие источники [5–8].
- Основные направления:
10.5 Моделирование (Общее)
10.6 Моделирование (ТМО)
10.7 Моделирование (Сети)
10.8 Моделирование (Физические модели)
11 Библиография
Литература
1. Самарский, А.А. Математическое моделирование: Идеи. Методы. Примеры. Математическое моделирование / А.А. Самарский, А.П. Михайлов. – 2. – Москва : Физматлит, 2001. – 320 сс.
2. Четверушкин, Б.Н. Триада Самарского. К 100-летию со дня рождения академика А.А. Самарского / Б.Н. Четверушкин, А.П. Михайлов // Вестник Российской академии наук. – 2019. – Т. 89. – № 2. – Сс. 187–193. DOI: 10.31857/s0869-5873892187-193.
3. Лимончелли, Т.А. Практика системного и сетевого администрирования. Т. 1 / Т.А. Лимончелли, К.Д. Хоган, С.Р. Чейлап. – Санкт-Петербург : Вильямс, 2018. – 1104 сс. – Режим доступа: https://libgen.st/book/index.php?md5=EAB7431021E05591ECF22205B7FA2D28 (дата обращения: 28.01.2024). – [Электронный ресурс].
4. Фило, В.Ф. Теоретический минимум по Computer Science: Сети, криптография и data science : Библиотека программиста. Теоретический минимум по Computer Science / В.Ф. Фило, М. Пиктет. – Санкт-Петербург : Питер, 2022. – 288 сс.
5. Фило, В.Ф. Теоретический минимум по Computer Science: Всё, что нужно программисту и разработчику : Библиотека программиста. Теоретический минимум по Computer Science / В.Ф. Фило. – Санкт-Петербург : Питер, 2018. – 224 сс.
6. Спрингер, В. Гид по Computer Science: Расширенное издание : Библиотека программиста. Гид по Computer Science / В. Спрингер; А. Павлов пер. . – Санкт-Петербург : Питер, 2022. – 304 сс.
7. Альтхофф, К. Computer Science для программиста-самоучки: Всё, что нужно знать о структурах данных и алгоритмах. Computer Science для программиста-самоучки / К. Альтхофф. – Санкт-Петербург : Питер, 2023. – 240 сс.
8. Брукшир, Д.Г. Компьютерные науки: Базовый курс. Компьютерные науки / Д.Г. Брукшир, Д. Брилов. – 13. – Москва : Вильямс, 2019. – 992 сс.
9. Таненбаум, Э. Современные операционные системы : Классика Computer Science / Э. Таненбаум, Х. Бос. – 4. – Санкт-Петербург : Питер, 2015. – 1120 сс.