Содержание к диссертации
Введение
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ МЕТОДИКИ ОБУЧЕНИЯ МНОГОПОТОЧНОМУ ПРОГРАММИРОВАНИЮ 15
1.1. Философская методология исследования 15
1.2. Способы представления модели знаний 29
1.3. Классификация парадигм программирования 33
1.4. Технологии отбора элементов методической системы обучения многопоточному программированию 43
1.4.1. Концепция профессионально-педагогической направленности обучения информатике 43
1.4.2. Метод межпарадигмальной рефлексии как принцип отбора содержания обучения многопоточному программированию 45
1.4.3. Логико-семиотический анализ как принцип отбора и коррекции содержания обучения многопоточному программированию 54
1.4.4. Технология отбора содержания обучения многопоточному программированию 60
1.4.5. Технология отбора методов, форм и средств обучения многопоточному программированию 65
1.5. Модель парадигмы многопоточного программирования . 68
1.5.1. Концептуальные основания парадигмы 73
1. 5. 2. Математические основания парадигмы 78.
1. 5. 3. Метаязыки для описания вычислений 80
1.5.4. Технологические основания парадигмы 81
1.5.5. Прагматические расширения парадигмы 84
Выводы по главе 1 87
ГЛАВА 2. ПОСТРОЕНИЕ МЕТОДИЧЕСКОЙ СИСТЕМЫ ОБУЧЕНИЯ МНОГОПОТОЧНОМУ ПРОГРАММИРОВАНИЮ 89
2.1. Цели обучения 89
2.2. Содержание обучения 99
2.2.1. Концептуальные содержательные линии 100
2.2.2. Отбор языков программирования 105
2.2.3. Логическая структура содержания обучения 110
2.2.4. Содержание обучения математическим основаниям многопоточного программирования 114
2.2.4.1. Логико-семиотический анализ содержания темы "Автомат Неймана" в контексте парадигмы многопоточного программирования 116
2.2.4.2. Курс по программированию на языке LISP 139
2.2.5. Содержание обучения технологическим основаниям многопоточного программирования 141
2.2. 5.1. Курс по программированию на языке С 141
2.2.5.2. Курс по программированию на языке Modula-2 ;. 142
2.2.5.3. Курс по программированию на языке Pascal . 142
2.2.5.4. Курс по программированию на языке Assembler . 143 2.2. 5.5. Курс по программированию на языке Java 144
2.3. Методы обучения 145
2.4. Формы обучения 149
2.5. Средства обучения 153
Выводы по главе 2 157
ГЛАВА 3. ОРГАНИЗАЦИЯ И ПРОВЕДЕНИЕ ПЕДАГОГИЧЕСКОГО ЭКСПЕРИМЕНТА 159
3.1. Основные этапы педагогического эксперимента 159
3.2. Оптимизация учебной программы методами теории графов 165
-3.3. Использование анализа контрольных работ для корректировки содержания обучения 170
3.4. Проверка эффективности предложенной методической системы обучения многопоточному программированию 174
Выводы по главе 3 177
ЗАКЛЮЧЕНИЕ 179
БИБЛИОГРАФИЯ 182
ПРИЛОЖЕНИЯ 192
- Классификация парадигм программирования
- Содержание обучения математическим основаниям многопоточного программирования
- Оптимизация учебной программы методами теории графов
Введение к работе
Актуальность исследования. В окружающем мире, осознавая или не осознавая это, мы часто сталкиваемся с параллельными процессами, т.е. процессами, протекающими в один и тот же промежуток времени. В частности, работая на современной однопроцессорной ЭВМ, мы видим параллельные вычисления почти на каждом шагу:
- так, на компьютере можно запустить несколько приложений, которые будут "параллельно" выполнять каждое свою работу;
- можно видеть параллельные вычисления и в работе одного приложения, например: текстовый процессор выполняет проверку орфографии во время набора пользователем текста;
- также при работе в сети осуществляется взаимодействие распределенных в пространстве программ, работающих на разных компьютерах в одно и то же время.
Однако, при обучении студентов информатике в педагогическом вузе, в частности, при обучении программированию уделяется очень мало внимания (если уделяется вообще!) параллельным вычислениям.
Необходимость обеспечения фундаментальности подготовки в области информатики бакалавров физико-математического образования предполагает включение в содержание обучения теоретических знаний о парадигмах программирования, в частности, о парадигмах параллельного (распределенного, синхронного параллельного, многопоточного) программирования.
Изучение многопоточного программирования будет способствовать формированию у бакалавров физико-математического образования разносторонних знаний о способах обработки различных типов данных, а также позволит им совершенствовать свои представления о синтаксисе и семантике конкретного языка программирования.
В дальнейшем под парадигмой многопоточного программирования мы будем понимать область в информатике: 1) объектом которой являются параллельные процессы, протекающие в окружающем мире; 2) предметом, которой являются: а) математические модели, описывающие параллельные процессы; б) компьютерные информационные модели (структуры данных и алгоритмы), отображающие математические модели на архитектуру однопроцессорных вычислительных систем; 3) методологией которой является вычислительный эксперимент.
Включение в содержание обучения бакалавров физико-математического образования парадигмы многопоточного программирования позволит реализовать следующие функции:
- философская и мировоззренческая функция состоит в изучении многопоточного программирования как инструмента моделирования понятия "параллельность" ("одновременность");
- пропедевтическая функция состоит в изучении многопоточного программирования как пропедевтики синхронного параллельного и распределенного программирования;
- прагматическая функция состоит в изучении многопоточного программирования как более эффективного или простого способа решения некоторых классов задач.
Необходимость наличия знаний у школьного учителя информатики по различным парадигмам программирования отмечается многими авторами, среди которых: Я.Н.Зайдельман, Л.Е.Самовольнова, Г.В.Лебедев [60].
Дисциплины профильной подготовки в области информатики Государственного образовательного стандарта по направлению "540200. Физико-математическое образование" [50] включают разделы ("Парадигмы программирования", "Технологии программирования", "Разделение ресурсов компьютера", "Формальные языки и автоматы"), которые предполагают присутствие элементов парадигмы многопоточного программирования.
Таким образом, актуальность исследования также подтверждают:
1) несоответствие уровня подготовки будущих учителей информатики в области многопоточного программирования современным требованиям, предъявляемым учителю информатики;
2) отсутствие методики обучения многопоточному программированию бакалавров физико-математического образования;
3) нехватка учебно-методических пособий для обучения многопоточному программированию в педагогическом вузе.
Сказанное выше определяет актуальность исследования и позволяет сформулировать научную проблему исследования: построение методики обучения многопоточному программированию бакалавров физико-математического образования, соответствующей, с одной стороны, современному уровню развития науки, с другой стороны, государственной концепции сферы образования (фундаментальность образования, опережающее образование, открытость образования, непрерывность образования). Анализ возникшей проблемной ситуации и поиски ее разрешения составляют содержание настоящего исследования. С учетом этого можно сформулировать те/щ исследования-. "Методика обучения многопоточному программированию бакалавров физико-математического образования".
В дальнейшем будем понимать методику обучения конкретному учебному предмету согласно Т. А. Бороненко [25], как раздел педагогической науки, объектом которого является процесс обучения учебному предмету, предметом - проектирование, конструирование, реализация (внедрение в педагогическую практику), анализ (педагогический эксперимент) и развитие (оптимизация) методической системы обучения рассматриваемому учебному предмету.
Целью исследования является разработка методической системы обучения-многопоточному программированию бакалавров физико-мате -матического образования как составляющей методической системы их фундаментальной подготовки в предметной области.
Объектом исследования выступает процесс обучения многопоточному программированию бакалавров физико-математического образования в педагогическом университете.
Предметом исследования является методическая система обучения многопоточному программированию бакалавров физико-математического образования.
Гипотеза исследования заключается в том, что методическая система обучения многопоточному программированию бакалавров физико-математического образования, в основу которой положен фундаментальный подход к обучению, может быть построена, если воспользоваться:
1. Философскими концепциями развития научного знания (по Т. Куну и И.Лакатосу) для уточнения понятия "парадигма программирования" и конкретизации ее структуры;
2. Моделью парадигмы многопоточного программирования, имеющей выделенную структуру;
3. Классификацией парадигм программирования и классификацией специфических технологий многопоточного программирования;
4. Технологиями отбора элементов методической системы обучения многопоточному программированию, основанными на применении: принципа соответствия целям обучения, принципа учета соотношения науки и учебного предмета, принципа учета отечественного и международного опыта формирования учебных программ, принципов профессионально-педагогической направленности обучения информатике, дидактических принципов, принципа межпарадигмальной рефлексии, логико-семиотического анализа содержания обучения информатике.
Для решения обозначенной выше проблемы и проверки достоверности гипотезы исследования были поставлены следующие задачи.
Первая группа задач (методологического характера) - определение исходных методологических принципов и концепций построения методической системы обучения многопоточному программированию бакалавров физико-математического образования:
1. Выбрать философскую и специально-научную методологию исследования в области методики обучения многопоточному программированию;
2. Выделить концептуальные шаги метода межпарадигмальной рефлексии при отборе содержания обучения многопоточному программированию;
3. На основе понятия "логико-семиотический анализ содержания обучения информатике" выделить основные этапы проведения логико-семиотического анализа содержания обучения многопоточному программированию;
4. Выбрать технологии отбора элементов методической системы обучения многопоточному программированию.
Вторая группа задач (теоретического характера) - построение методической системы обучения многопоточному программированию бакалавров физико-математического образования:
1. Уточнить определение понятия "парадигма программирования" и конкретизировать общую структуру парадигмы программирования;
2. На основе анализа научной и учебно-методической литературы, а также выделенной структуры парадигмы программирования, построить модель парадигмы многопоточного программирования;
3. Сформулировать цели обучения многопоточному программированию;
4. Осуществить отбор (оптимизацию и достраивание) содержания обучения многопоточному программированию;
5. Выбрать методы и формы обучения многопоточному программированию:
6. Выбрать (или создать) средства обучения многопоточному программированию.
Третья группа задач (практического характера) - частичная реализация построенной методической системы обучения многопоточному программированию бакалавров физико-математического образования:
1. Проиллюстрировать возможность практической реализации построенной методической системы обучения многопоточному программированию;
2. Провести экспериментальную проверку разработанных теоретических положений.
Для решения сформулированных задач использовались следующие методы исследования:
- анализ философской, научно-методической, психолого-педагогической литературы по проблемам информатизации системы образования, в том числе, по проблемам подготовки учителя информатики, по проблемам построения содержания обучения;
- анализ научной литературы по математике, информатике, вычислительной технике, методике преподавания математики и информатики;
- анализ вузовских стандартов, зарубежных и отечественных программ подготовки бакалавров физико-математического образования (профиль информатика), учебников и учебных пособий по информатике и вычислительной технике, включающих элементы параллельного программирования;
- метод экспертных оценок, методы теории графов, методы статистической обработки результатов эксперимента.
Последовательность решения основных задач исследования определила структуру построения диссертации. Диссертация состоит из введения, трех глав, заключения, библиографии и приложений. Основной текст занимает 181 с. (в том числе 15 рисунков, 11 таблиц), библиография (190 наименований) - 10 с., приложения - 31 с. Научная новизна исследования заключается в разработке нового подхода к отбору содержания обучения многопоточному программированию, при котором:
1) применяется логико-семиотический анализ содержания обучения многопоточному программированию, позволяющий: а) выделять структуру теоретических знаний; б) содержательно раскрывать методологию информатики с позиций семиотики; в) выделять в каждой теме содержания образы (модели) основных понятий и специфических технологий многопоточного программирования;
2) в содержании обучения выделяются взаимосвязанные разделы, ориентированные на элементы структуры парадигмы многопоточного программирования (математические основания, связи математических оснований и многопоточного программирования на конкретном языке, реализация специфических технологий на конкретном языке программирования) .
Теоретическая значимость исследования состоит в том, что обоснованы теоретические положения отбора содержания методической системы обучения многопоточному программированию бакалавров физико-математического образования:
1) предложено уточнение определения понятия "парадигма программирования" и конкретизирована структура парадигмы программирования;
2) построена модель парадигмы многопоточного программирования, Имеющая выделенную структуру;
3) построена методическая система обучения многопоточному программированию бакалавров физико-математического образования как составляющая методической системы их фундаментальной подготовки в предметной области.
Практическая значимость исследования заключается в том, что на основе построенной методической системы обучения многопоточному программированию бакалавров физико-математического образования могут быть созданы различные варианты учебных курсов, включающих элементы парадигмы многопоточного программирования.
Достоверность и обоснованность полученных результатов обеспечена: методологией исследования; теоретическим обоснованием положений исследования и практической реализацией отдельных элементов построенной методической системы обучения; количественным и качественным анализом результатов исследования, полученным на основе использования методов исследования, адекватных предметным задачам и этапам исследования.
Апробация результатов исследования осуществлялась через публикации (2002-2005 гг.), участие во Всероссийской научно-практической конференции "Математическое моделирование, информационные технологии и образование (ММИТ0-2004)" (21-23 апреля 2004 г., ЛГУ им. А.С.Пушкина, РГПУ им. А.И.Герцена), а также через выступления на научно-методическом семинаре "Вопросы теории и методики обучения информатике" для аспирантов кафедры информатики факультета математики РГПУ им. А.И.Герцена (ноябрь 2004 г. - май 2005 г.).
Внедрение результатов исследования проводилось в 2002-2005 гг. на факультете математики РГПУ им. А.И.Герцена:
1) в форме спецкурса "Введение в программирование на языке Java" для студентов V курса 3-5 группы специальности "Математика" (2002 г.);
2) в курсе "Практикум по решению задач" для студентов II курса 1 и 3 группы по направлению "Физико-математическое образование" (2003 г.);
3) в курсе "Дисциплины специализации" для студентов IV курса 3-4 группы специальности "Математика" (2003-2004 гг.);
4) в курсе "Практикум по решению задач" для студентов I курса магистратуры по направлению "Физико-математическое образование" (2004 г.);
5) в курсе "Практикум по решению задач" для студентов II курса 1-3 группы по направлению "Физико-математическое образование" (2004 г.);
6) в курсе "Теоретические основы и реализация языков программирования" для студентов I курса магистратуры по направлению "Физико-математическое образование" (2004 г.);
7) в курсе "Теория алгоритмов" для студентов V курса 1 группы специальности "Информатика" (2004 г.);
8) в курсе "Практикум по решению предметно-ориентированных задач" для студентов IV курса 1-2 группы по направлению "Физико-математическое образование" (2004 г.) ;
9) в курсе "Практикум по решению задач" для студентов V курса 1 группы специальности "Информатика" (2004-2005 гг.):
10) в форме спецкурса "Реализация абстрактных типов данных на языке С" для студентов II курса 3 группы специальности "Информационные системы" (2005 г.);
11) в форме спецкурса "Элементы теории алгоритмов" для студентов II курса 1-2 группы по направлению "Физико-математическое образование" (2005 г.);
12) в курсе "Практикум по решению задач" для студентов II курса 2 группы по направлению "Физико-математическое образование" (2005 г.).
На защщ выносятся:
1. Структура парадигмы программирования, включающая следующие элементы: концептуальные основания, семантические основания (математические основания, метаязыки для описания вычислений), технологические основания, прагматические расширения:
2. Модель парадигмы многопоточного программирования, построенная в соответствии с предложенной структурой парадигмы;
3. Применение логико-семиотического анализа как принципа отбора содержания обучения многопоточному программированию, включающего выделение в каждой теме содержания образов (моделей) основных понятий и специфических технологий многопоточного программирования;
4. Структура содержания обучения многопоточному программированию бакалавров физико-математического образования, полученная в результате анализа и отбора содержания следующих элементов парадигмы многопоточного программирования: математических оснований ("Теория сетей Петри", "Теория взаимодействующих последовательных процессов Ч.Хоара", "Представительные вычислительные модели"); метаязыков для описания вычислений ("Метаязык параллельных вычислений"); технологических оснований парадигмы и их применения для программирования на конкретных языках программирования ("Передача управления между процессами на низком уровне", "Передача управления между процессами на высоком уровне");
5. Компьютерные средства обучения многопоточному программированию, позволяющие имитировать работу параллельных представительных вычислительных моделей, которыми являются: автомат Неймана (итеративный автомат), параллельная машина с неограниченными регистрами (ПМНР);
6. Применение для обучения многопоточному программированию учебно-ориентированных библиотек на языках: С, Pascal, Assembler, Java.
Классификация парадигм программирования
В данном параграфе будет определено понятие "парадигма программирования" и приведена классификация парадигм программирования. Понятие "парадигма программирования" и классификация парадигм программирования будут применяться нами при формулировании принципов отбора содержания обучения (см. 1.4), построении модели парадигмы многопоточного программирования (см. 1.5) и отборе содержания обучения многопоточному программированию (см. 2.2).
Когда речь идёт о парадигмах программирования, то имеется в виду либо совокупность методов, либо некоторый класс языков программирования (имеющих общую черту, определённое назначение). В литературе встречаются синонимичные данному понятию термины - 34 -"стиль программирования", "методология программирования". Существующие определения понятия "парадигма программирования", на наш взгляд, не дают полного представления о структуре парадигмы. Приведём несколько определений этого понятия.
Парадигма пуогуагшиуования (по [128, с. 65-66]) - это совокупность методов, применяемых во время программирования (реализации) и объединенных общим философским подходом. Парадигма программирования является способом мышления и программирования, не связанным с конкретным языком программирования.
Язык пуогуажиуования (по [182, с. 38]) поддеуживает определённою пауадигму (стиль) пуогуаштуования, если он содержит средства (как синтаксические, так и семантические), которые делают использование данной парадигмы удобным (т.е. простым, безопасным и эффективным) .
Язык пуогуаштуования (по [182, с. 38]) допускает опуеделённую пауадигму (стиль), если (в принципе) можно писать программы в этом стиле; но для поддержки стиля требуется ещё наличие удобных механизмов контроля (как времени компиляции, так и времени выполнения), заставляющих использовать языковые конструкты строго определённым образом.
Обратимся к трактовке понятий "парадигма" и "программирование".
Термин "парадигма" впервые был введён в философии науки позитивистом Г.Бергманом для характеристики нормативности методологии. Широкое распространение данное понятие приобрело после работ американца Томаса Куна, который использовал его для обозначения ведущих представителей и методов получения новых данных в периоды экстенсивного развития знания (см. 1.1).
Пауадигж [151, с. 967] - это (1) строго научная теория, воплощенная в системе понятий, выражающих существенные черты действи - 35 -тельности; (2) исходная концептуальная схема, модель постановки проблем и их решения, методов исследования, господствующих в течение определенного исторического периода в научном сообществе.
Согласно работе [105, с. 86], парадигма - это система устойчивых, стабильных, понятных всем специалистам данной области науки и принятых знаний, тех знаний, которые "имеют право" быть зафиксированными в учебниках.
Возможно моделирование понятия "парадигма" с помощью понятий "картина мира" и "знаковая система" ("язык"). С этой точки зрения, парадигма [103] - это некоторая языковая картина изучаемого фрагмента мира.
Программирование [112,с.836] - это: (1) этап решения задачи на ЭВМ, состоящий в разработке программы в соответствии с алгоритмом решения задачи, её отладке и дальнейшем развитии программы в ходе ее применения; (2) раздел информатики, изучающий методы и приемы построения, отладки и развития программ для ЭВМ.
На основе рассмотренных определений понятий "парадигма программирования", "парадигма", "программирование", а также учитывая философские концепции Т.Куна и И. Лакатоса о развитии научного знания (см. 1.1), мы предлагаем следующее определение понятия "парадигма программирования", в котором явно выделяем ее структуру.
Парадигма программирования - это система знаний (структура которой представлена на Рис.2), объединённая концептуальными основаниями, принятая в некотором научном сообществе и зафиксированная в литературе.
Содержание обучения математическим основаниям многопоточного программирования
В данном пункте будут даны рекомендации по включению математических оснований многопоточного программирования в учебные курсы "Дискретная математика" и "Теория алгоритмов".
I. Курс "Дискретная математика" должен включать элементы теории взаимодействующих последовательных процессов Ч. Хоара (модуль 1.3; см. п. 2.2.3) и элементы теории сетей Петри (модули: 1.1, 1.2; см. п. 2.2.3). Кратко приведем содержание курса.
Предварительные математические сведения (модуль 0.2). Слова в алфавите (модуль 0.2). Язык в алфавите. Регулярные языки в алфавите. Регулярные выражения в алфавите. Формальные грамматики. Иерархия грамматик Хомского. Языки Хомского. Конечные автоматы. Автоматы с магазинной памятью как распознаватели. Рекуррентные соотношения. Элементы комбинаторики. Элементы теории графов (модуль 0.1). Введение в теорию сетей Петри (модуль 1.1). Языки сетей Петри (модуль 1.2). Введение в теорию взаимодействующих последовательных процессов Ч. Хоара (модуль 1.3).
II. Курс "Теория алгоритмов" должен включать содержание обучения универсальным алгоритмическим языкам, которые являются математическими основаниями многопоточного программирования: системы машин Тьюринга, автомат Неймана, параллельная машина с неограниченными регистрами (п.2.2.3). Кратко приведем содержание курса.
Понятия: "алгоритм", "конструктивный объект". Алгоритмы и исчисления. Теория рекурсивных функций. Нормальные алгорифмы Маркова. Машина Тьюринга (модуль 0.3). Понятие о многоленточных машинах Тьюринга. Системы машин Тьюринга (модуль 1.4). Автомат Неймана (модуль 1.5). Машина Поста-Успенского. Машина с неограниченными регистрами (МНР). Параллельная машина с неограниченными регистрами (ПМНР; модуль 1.6). Машина с конечным числом переменных. Машина с произвольным доступом к памяти (РАМ). Машина с произвольным доступом к памяти и хранимой программой (РАСП). Идеализированная вычислительная машина. Машина Минского. Эквивалентность математических моделей понятия "алгоритм". Тезисы теории алгоритмов (тезис Черча-Клини, тезис Тьюринга, принцип нормализации Маркова) .
В заключение отметим, что в данном пункте, исходя из концептуальных содержательных линий (п.2.2.1) и логической структуры содержания обучения многопоточному программированию (п.2.2.3), кратко рассмотрен вопрос интеграции содержания обучения математическим основаниям многопоточного программирования в учебные курсы
"Дискретная математика" и "Теория алгоритмов". Продолжая рассматривать вопросы содержания обучения математическим основаниям многопоточного программирования, далее будет: (1) проведен логико-семиотический анализ содержания темы "Автомат Неймана" в контексте парадигмы многопоточного программирования (п.2.2.4.1); (2) кратко рассмотрено содержание обучения многопоточному программированию на языке LISP, основанное на реализации элементов теории взаимодействующих последовательных процессов Ч. Хоара (п. 2.2.4.2).
Оптимизация учебной программы методами теории графов
В данном параграфе будет проведена оптимизация модульной программы обучения многопоточному программированию (представленной в п.2.2.3) по содержанию и по времени методами теории графов. 1. Оптимизация учебной программы по содержанию Для оптимизации учебной программы по содержанию воспользуемся методом топологической сортировки, который позволяет частично упорядоченное множество перевести в линейное упорядоченное множество. Опишем основную идею метода [75,с.324]; (1) в множестве М выбирается какой-либо элемент, которому не предшествует никакой другой; (2) выбранный элемент выписывается и исключается из множества М; (3) применяется тот же алгоритм, пока множество М не станет пустым.
Тот факт, что содержание модуля t опирается на материал модуля s (модуль s предшествует модулю О, обозначим s t, тогда после топологической сортировки будет получен порядок изучения модулей, такой, что ни один модуль не будет излагаться раньше того, на материале которого он основан.
Представим упорядоченность модулей в виде следующей таблицы (см. Табл.11). Данная упорядоченность основана: (1) на непосредственном предшествовании модулей в результате требований к уровню начальных знаний студентов (номера таких модулей подчеркнуты); (2) на методической целесообразности (например: соответствие с концептуальными содержательными линиями (см. п.2.2.1), соответствие с реально существующей последовательностью изучения курсов в педагогическом вузе).
Будем считать (опираясь на предположение следования "Модуля 0.1" за "Модулем 0.2"), что "Модуль 0.1" содержит только элементы теории графов, а элементы теории множеств содержит только "Модуль 0.2".
Информацию из представленной таблицы поместим в текстовый файл, содержащий следующие отношения (каждое отношение, задающее порядок, будем располагать в начале отдельной строки):-Применив к данному текстовому файлу программу топологической сортировки (см. [105,с.469-472]), получим последовательность целых чисел: 2 1 И 12 3 14 15 16 4 5 21 22 23 24 31 6 13 32
Заметим, что подпоследовательность (6 13 32) можно "передвигать" влево до числа 2, так как модуль 6 опирается на материал модуля 2, а знания материала модулей последовательности (6 13 32) не используются в явном виде в других модулях. "Передвиним" данную последовательность влево так, чтобы она расположилась между числами 16 и 4, получим последовательность модулей: 2 1 11 12 3 14 15 16 6 13 32 4 5 21 22 23 24 31
Таким образом, мы добились, что теория взаимодействующих последовательных процессов Ч. Хоара располагается раньше чем многопоточное программирование на конкретном языке и все математические основания многопоточного программирования предшествуют реализации специфических технологий многопоточного программирования на языке программирования. Это позволяет использовать элементы взаимодействующих последовательных процессов Ч. Хоара в программировании на конкретном языке (модули: 21, 22, 23, 24) и решать задачи, которые связаны с программным моделированием элементов данной теории.
Дальнейшая интерпретация полученного результата очевидна. Последовательность модулей, определенная топологической сортировкой, подразумевает следующий порядок изложения материала:
-2. Оптимизация учебной программы по времени
Для топологической сортировки содержания обучения многопоточному программированию в программе учебной дисциплины "Многопоточное программирование" по времени применим к исходному файлу модифицированный алгоритм топологической сортировки (см. [105, с.473-475]).
Результат работы программы имеет следующий вид:
В круглых скобках приведены номера, соответствующие модулям, которые могут изучаться одновременно. Так, например, могут изучаться одновременно модули: 1, 3, 4, 6, 13.
Продолжая далее интерпретировать результат работы программы, получим перечень учебных модулей, которые могут изучаться студентами параллельно в нескольких учебных курсах. Выделим четыре таких блока, которые не имеют между собой явной перекрестной зависимости и могут изучаться в параллельных курсах асинхронно: