Программа обучения по компьютерным наукам в РУДН

Предложения по программе обучения по компьютерным наукам в РУДН.

Содержание

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)

  • В данную область входят:
    • администрирование локальных компьютеров [3];
    • администрирование компьютерных сетей [4];
    • параллельные и распределённые вычисления;
    • документирование разработки.

10.3 Моделирование (Математические основы)

10.4 Информатика (Компьютерные науки)

  • Для определения необходимых областей информатики рекомендуется использовать следующие источники [58].
  • Основные направления:
    • Вычислительная сложность.
    • Структуры данных.
    • Алгоритмы.
      • Графы и графовые алгоритмы.
      • Неграфовые алгоритмы.
    • Базы данных.
    • Архитектура компьютеров и аппаратное обеспечение.
    • Операционные системы [9].
    • Информационная безопасность и криптография [4].
    • Компьютерные сети [10; 11].

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 сс.
10. Олифер, В.Г. Компьютерные сети. Принципы, технологии, протоколы : Учебник для вузов / В.Г. Олифер, Н.А. Олифер. – 5 изд. – Питер : Питер, 2017. – 992 сс.
11. Таненбаум, Э. Компьютерные сети : Классика Computer Science / Э. Таненбаум, Н. Фимстер, Д. Уэзеролл. – 6-е. – Санкт-Петербург : Питер, 2022. – 992 сс.

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие