<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Интегративные возможности курса параллельного программирования</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>759</fpage>
      <lpage>763</lpage>
      <abstract>
        <p>В статье рассмотрены особенности содержания курса параллельного программирования, ориентированного на студентов направлений «Математическое обеспечение и администрирование информационных систем» и «Информационная безопасность». Обобщен опыт преподавания алгоритмов и технологий параллельного программирования в рамках общих курсов и в качестве самостоятельной дисциплины. Показаны интегративные возможности отдельного курса для обобщения, осмысления и применения знаний программирования, компьютерной графики и прикладной математики в практикоориентированных проектах.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>ки), «Операционные системы» (4 семестр, вопросы синхронизации, мьютексы и семафоры), а
также дисциплину специализации «Сетевые технологии» (5-6 семестры, сетевые топологии,
модели и протоколы передачи сообщений). В определенной мере все это позволило если не
организовать непрерывную подготовку по PDC, то, по крайней мере, органично включить
ознакомительные модули в базовые дисциплины. Этот подход имеет свои преимущества, поскольку
не требует от преподавателя принципиальной перестройки уже отработанного курса и
позволяет студентам познакомиться с различными аспектами PDC и освоить базовые понятия.</p>
      <p>Аналогичная структура подготовки по параллельному программированию сложилась на
направлении бакалавриата «Информационная безопасность» и специальности «Компьютерная
безопасность», относящихся к одной укрупненной группе. Однако для этих образовательных
программ изначально в учебном плане не предусматривалось самостоятельного курса
параллельного программирования. Изучение элементов параллельного программирования служило
цели сравнительного анализа различных моделей программирования. Для иллюстрации
остановимся на кратком обзоре содержания включенного раздела «Технологии параллельного
программирования» дисциплины «Языки программирования», которая читается во 2-4 семестрах.
В качестве основы для изложения идей параллельного программирования используются
модели реализации подпрограмм, а также управления памятью. Именно для их программной
реализации в данном разделе (4 семестр) рассматриваются технологии OpenMP и MPI с акцентом на
особенности реализации соответствующих управляющих конструкций и функций. Включение
такого раздела не только не разрушает общей концепции курса – изучение семантики языков
программирования, но и позволяет органично рассмотреть и сопоставить сущность нескольких
моделей и технологий параллельного программирования.</p>
      <p>В то же время, необходимость освоения алгоритмов и технологий параллельного
программирования определяется тем, что к содержанию компетенций для образовательных программ
направления «Информационная безопасность» стандартами (ФГОС ВПО, ФГОС ВО)
предъявляются требования, соответствующие области CS. Принципиально важно и то, что выпускники,
в основном, ориентируются на работу программистов. Поэтому особых отличий в сквозной
подготовке в области PDC от направления «Математическое обеспечение и администрирование
информационных систем» в настоящее время уже нет. Исключение составляет углубленное
содержание дополнительных разделов по архитектуре распределенных вычислительных систем
и сетевым технологиям, определяемое спецификой образовательных программ направления
«Информационная безопасность».</p>
      <p>Необходимо отметить, что для всех упомянутых образовательных программ наибольший
интерес студентов вызывало выполнение заданий практического типа, не предполагавших
самостоятельной разработки параллельных алгоритмов и программ. В первую очередь, это
вычислительные эксперименты по тестированию параллельных алгоритмов на самых доступных
вычислительных системах (от нетбука до сконфигурированной под MPI системы 4-ядерных
компьютеров в обычной учебной лаборатории) и сравнению эффективности многопоточных
приложений для различных языков программирования (Java, C/C++, C#, Python, Erlang) и
технологий (OpenMP, MPI, CUDA, OpenACC). Именно этот факт привел к выводу о возможности
разработки обобщающего курса PDC, целью которого будет не только развитие квалификации
программистов-профессионалов, но и углубление знаний фундаментального характера,
которые часто и даются, и воспринимаются на теоретическом уровне.
3. Изучение PDC для интеграции знаний</p>
      <p>Одно лишь соблюдение требований отечественных и международных стандартов и
рекомендаций при составлении учебного плана образовательной программы не может дать
гарантированного результата в плане качества подготовки выпускников. Учебные планы, как правило,
перегружены, поскольку требование следовать примерным образовательным программам (в
частности, для упомянутых специальностей и направлений) оставляет весьма ограниченные
возможности для включения курсов PDC. Кроме того, традиционно, в образовательных
программах подготовки программистов соответствующие дисциплины трудно обеспечить
квалифицированными преподавателями, и, как следствие, они воспринимаются студентами как
сугубо теоретические. Поэтому их изучение не оказывает никакого влияния на качество подготовки
в целом. При схеме изучения PDC по принципу «модули-разделы плюс итоговый курс
параллельного программирования» на уровне бакалавриата и специалитета реально можно говорить
только о возможности освоения базовых понятий, основных алгоритмов и технологий
параллельного программирования с их практическим применением для программной реализации
решения простейших задач дискретной и вычислительной математики.</p>
      <p>Очевидно, что один и тот же курс можно читать совершенно по-разному – все зависит от
поставленной цели. В этом смысле параллельное программирование не является исключением.
Более 10 лет для специальности «Математическое обеспечение и администрирование
информационных систем» он читался именно с упором на программирование. Но с переходом на
бакалавриат возникла проблема – как определить дисциплину, в ходе изучения которой будущие
программисты смогут повторить, отрефлексировать и осмыслить материал множества
дисциплин, которые они изучали за предшествующий период. Наиболее подходящее время – это 6
семестр, перед выбором темы дипломной работы, которая должна отражать реальную
квалификацию выпускника и перспективы его профессионального развития, в том числе в сфере PDC.
Это имеет существенное значение, поскольку в Тюменской области очень востребованы
специалисты в области проектирования и разработки высокопроизводительных вычислительных
систем с использованием суперкомпьютерных технологий и параллельного программирования
для решения задач разведки, добычи и транспортировки углеводородного сырья на базе
многопараметрических математических моделей нефтегазоносного пласта. Это, в частности,
разработка программных комплексов для изучения геологических объектов, проведения
вычислительных экспериментов по исследованию процессов фильтрации в скважинах и окружающих
породах, визуализации гидродинамических и геологических моделей, обработки и
интерпретации данных сейсморазведки и др.</p>
      <p>Именно поэтому представляется оптимальным чтение в 6 семестре (для бакалавриата) и 8
семестре (для специалитета) интегрированного курса, включающего, пусть и в упрощенной
постановке, решение практических задач. Лекции (18 – 36 часов, в зависимости от
образовательной программы) включают обзор основных сведений об архитектуре многопроцессорных
систем, моделях и технологиях параллельного программирования OpenMP, MPI, CUDA, а также
многопоточном программировании на базе библиотеки Microsoft TPL. В рамках лабораторных
занятий (36 часов) выполняются проекты двух типов: 1) вычислительный эксперимент для
определения времени выполнения, ускорения и эффективности для параллельных алгоритмов или
для сравнения параллельно выполняющихся различных алгоритмов решения одной и той же
задачи (численное интегрирование, поиск и сортировка, алгоритмы на графах, численное
решение алгебраических уравнений и систем); 2) реализация многопоточных приложений для
расчетов по заданным математическим моделям и визуализации решений с использованием моделей
компьютерной графики (градиентные методы для задачи поиска экстремума, численные
методы решения краевых задач для 2D уравнения теплопроводности и уравнения Лапласа).</p>
      <p>Для компактного интегрированного курса очень важна хорошая информационная
поддержка. Помимо авторских материалов (кратких конспектов, презентаций лекций и заданий для
проектов) студентами использовались лекции и тесты Интернет-университета
информационных технологий (www.intuit.ru), лабораторные работы Сибирского суперкомпьютерного центра
для студентов НГУ, методические материалы и лабораторные работы для студентов МГУ,
ННГУ, СПбГУ, а также аутентичные технические руководства и описания стандартов
технологий PDC от фирм-вендоров и консорциумов (CISCO Systems, Intel, Microsoft, NVIDIA, MPI,
OpenMP Architecture Review Board и др.)</p>
      <p>Опыт чтения такого курса показал многоплановость его интегративных возможностей. С
одной стороны, он позволяет оценить качество содержания и преподавания многих дисциплин.
В процессе обучения с очевидностью выясняется, на каком уровне изучались и как были
усвоены студентами базовые понятия архитектуры компьютеров, операционных систем, сетевых
технологий, семантика языков и моделей программирования, теория компиляции, алгоритмы
компьютерной обработки данных, модели и методы дискретной и вычислительной математики.
С другой стороны, нацеленность на получение конкретных результатов при реализации
проектов, проведение вычислительных экспериментов, работа над пользовательским интерфейсом
помогает студентам восстановить и по-новому осмыслить материал фундаментальных
математических дисциплин, теоретических основ информатики и информационных технологий в
целом. Не менее важен и следующий момент: многие студенты к этому времени уже
профессионально работают, как правило, в области Web-программирования, 1С–программирования,
сетевого администрирования. Поскольку изучение PDC не является для них принципиально важной
задачей, именно по результатам изучения данного курса очень четко проявляются стремление и
способности студентов к саморазвитию.
Литература
Integrative possibilities of the course “Parallel Programming”
Irina Zakharova and Alexander Zakharov
This paper describes the features of the parallel programming course content for the programs
"Software and Administration of Information Systems" and "Information Security". We
present the experience of teaching algorithms and parallel programming techniques in the
general courses and as an independent discipline. We draw the possibilities of integrative
separate course for generalization, understanding and applying knowledge of programming,
computer graphics and applied mathematics in practice projects.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. NSF/
          <article-title>IEEE-TCPP Curriculum Initiative on Parallel and Distributed Computing</article-title>
          . URL: http://www.cs.gsu.edu/~tcpp/curriculum/index.php (дата обращения:
          <volume>14</volume>
          .
          <fpage>06</fpage>
          .
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>John</surname>
            <given-names>D. J.</given-names>
          </string-name>
          ,
          <source>Thomas S. J. Parallel and Distributed Computing across the Computer Science Curriculum //Parallel &amp; Distributed Processing Symposium Workshops (IPDPSW)</source>
          ,
          <source>2014 IEEE International. - IEEE</source>
          ,
          <year>2014</year>
          . P.
          <volume>1085</volume>
          -
          <fpage>1090</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>