Концепция программно-методического продукта «Лабораторный практикум по вычислительной математике»

Вид материалаПрактикум

Содержание


1.2Достоинства старого практикума, которые желательно сохранить
Возможность пошагового выполнения расчета
1.3Новые цели разработки практикума
2Общие концепции нового практикума 2.1Использование различных трактовок понятия лабы
Одна программа за семестр должна писаться студентом «с нуля»
Большинство лаб будет оформлено в виде готовой программы
3 методических подхода
Подобный материал:
1   2   3   4   5   6

1.2Достоинства старого практикума, которые желательно сохранить

  1. Отлично организованная справка, причем из любого места интерфейса (справку следует сделать еще лучше за счет гиперссылок).
  2. Возможность пошагового выполнения расчета (есть не во всех лабах).
  3. «Демо-версии» с показом последовательности действий пользователя (сделать это снова будет сложно, так что пока эту возможность следует лишь «иметь ввиду»).
  4. Достаточно продуманная структура меню (она превратится в структуру «закладок», «панелей с разделителями» и т.п. частей современного интерфейса)
  5. Показ настроек текущего варианта задачи в любой момент времени.
  6. Заставки, иллюстрирующие смысл лабы (может быть, другие, но заставки должны быть – это важно для демонстрации проекта).

1.3Новые цели разработки практикума

  1. Хотя бы часть лаб должна быть уникальной с какой-либо точки зрения (неординарной, не имеющей аналогов, содержащей новую идею) – этого хочет ректорат и это позволит впоследствии лучше «продвигать продукт в другие вузы».
  2. Хотя бы часть лаб должна быть доступна из Интернет (реклама продукта на словах гораздо менее эффективна, чем реклама продукта в действии)
  3. Необходим компромисс между двумя трактовками лаб – между
    а) точкой зрения В.В.Демченко, который заставляет студентов «с нуля» писать 3 программы в каждом семестре, и
    б) точкой зрения половины сотрудников кафедры, которые считают, что программы студентам писать вообще не нужно, достаточно проиллюстрировать теорию в готовых программах.
  4. Более того, практикум должен быть разнообразным. Это намного увеличивает интерес студентов, ведь для многих интерес делать лабы заключается не в изучении вычислительной математики, а в том, что им интересно копаться в различных программах, изучать новые технологии (если эти технологии современные и востребованные, например, – математические пакеты). Кроме того, различный взгляд на близкий материал (из мат. пакета, из готовой программы, из исходного кода собственной программы) позволяет глубже и быстрее понять этот материал. С точки зрения преподавателя, разнообразие лаб позволяет выбрать из них наиболее близкие к его личному подходу. Однако слишком большое разнообразие тоже мешает, так как теряется много учебного времени на освоение новых лаб студентами.
  5. Необходимо разработать программный комплекс так, чтобы потом не приходилось уже его обновлять таким же кардинальным образом. Другими, словами, практикум должен содержать в себе механизм собственного постепенного обновления. Это можно рассматривать как проявление первой цели разработки (обеспечение уникальности). Обновления программ, конечно, будут происходить силами студентов базовой специализации (для которых это есть учебная задача по базовому курсу), а также студентов, проходящих вычислительную математику. Опыт показал, что без наличия внутреннего механизма обновления результаты работы студентов над новыми лабами невозможно использовать. Следует заметить, что эти соображения неприменимы к лабам, выполненным в математическом пакете (в частности, пакеты устаревают или теряют популярность намного быстрее, чем языки программирования, так что нет смысла делать «расширяемыми» лабы, реализуемые в мат. пакете).
  6. Кроме обновления программного кода, нужна возможность преподавателю многое обновлять в лабе (без обращения к программистам). Это предполагается за счет хранения в XML структуры интерфейса и данных задачи (по умолчанию).

2Общие концепции нового практикума

2.1Использование различных трактовок понятия лабы


Практикум должен содержать лабораторные работы, которые в различной степени содержат две крайности, указанные в разделе 1.3: 1) написание программ «с нуля» и 2) использование полностью готовой программы (без возможности отклониться от «учебного маршрута»). Сами по себе, эти крайности будут использоваться следующим образом:
  1. Одна программа за семестр должна писаться студентом «с нуля» (какая именно программа – может варьироваться в зависимости как от преподавателя, так и от студента – это уменьшит списывание). При этом соответствующая тема будет оформлена также и в виде готовой программы – хотя бы для того, чтобы можно было сравнить результаты студентов с правильными результатами. Другими словами, освоение какой-то темы студентами путем программирования не отменяет потребность в наличии по этой теме лабораторной работы в ее классическом понимании.
    Для написания программ студентами «с нуля» часть документации проекта и часть кода на C++ и/или Java будет оформлена, соответственно, в виде рекомендаций по написанию программы и в виде шаблонов и кусков наименее интеллектуального кода, которые рекомендуется использовать. Подобный подход уже 2 года апробируется в рамках базового курса «Технологии компьютерного моделирования».
    Кроме того, для того, чтобы можно было адекватно оценивать написанные студентами программы, разработанные лабораторные работы могут быть использованы в качестве «эталонных» проверочных программ (для этого будет реализован показ таблиц чисел, а также будут созданы файлы к лабам по всем вариантам заданий).
  2. Большинство лаб будет оформлено в виде готовой программы на языке Java или C++, что позволит студентам освоить максимальное количество тем за год. При этом будут реализованы стандартные возможности типа сравнения результатов и производительности расчетов при разных численных методах и при разных шагах/параметрах. Однако в этом подходе никаких возможностей отклонения от «учебного маршрута» не предусматривается.

Кроме этих крайностей самих по себе, будут использоваться следующие приемы:
  1. Надо, чтобы студенты почаще сами писали вычислительные алгоритмы, но при этом не тратили время на визуализацию, ввод/вывод, создание общей структуры программы и т.п. При этом они должны иметь возможность видеть понятный написанный за них код, который реализует другие куски программы (и при необходимости его поменять). Для этой цели идеально подходит использование математического пакета (по причине компактности и наглядности кода). Другими словами, несколько лабораторных надо сделать так, чтобы студенты программировали алгоритмы и получали результаты в математическом пакете (подробнее в разделе 2.2).
  2. Как альтернативный вариант, можно также предложить давать студентам недоделанные программы на каком-либо языке программирования (не в пакете). Но в текущей ситуации этот подход нецелесообразен: лабораторные такого типа имеются лишь на Fortrane и на Java (используются в базовом курсе, а также отчасти в курсе «Нелинейные вычислительные процессы» – в его рамках этот подход и будет развиваться). Однако студентам, проходящим вычислительную математику, однозначно нужен язык С/С++, а по этому языку у нас нет подходящих специалистов, готовых заняться разработкой подобных «недоделанных программ» (здесь требуется очень высокое качество кода и очень подробные комментарии к нему).
  3. Также стоит решать задачу разработки интересных лаб и с другого конца – со стороны готовых программ (не требующих компиляции). Готовые программы, как было сказано выше, должны использоваться в большом количестве лаб, чтобы сэкономить учебное время. Однако некоторые из программ не должны быть «слишком учебными», не должны слишком сильно облегчать задачу студентам, они должны быть максимально похожими на профессиональные программы, которые можно использовать для решения того или иного вида прикладных вычислительных задач. Во-первых, это покажет студентам, что далеко не достижения вычислительной математики по данной теме заложены в их курс (и что в жизни применяются далеко не учебные подходы к решению вычислительных задач). Во-вторых, это будет стимулировать самостоятельное исследование студентов: им будет дано описание относительно сложного инструмента, указано, что требуется в итоге, однако «учебного маршрута» дано не будет (тогда работа студента будет ближе к работе профессионального вычислителя).
    Например, имеет смысл сделать «профессиональной» программу для решения задач Коши для ОДУ (по ней есть несколько хороших заделов). Не-чисто-учебный характер этой лабы будет проявляться в следующем: а) наличие очень большого количества иерархически упорядоченных методов (перебрать которые полностью невозможно), а также возможность вводить метод со своими коэффициентами; б) большое количество редактируемых опций метода (которые не используются в простых лабах и требуют глубокого понимания работы алгоритмов): методы изменения шага, методы решения алгебраических уравнений на шаге и их многочисленные опции.
    Вторым примером «профессиональной» расчетной программы может служить уравнение теплопроводности или какая-то смешанная задача, ранее отсутствовавшая в курсе, например, конвективно-диффузионное уравнение как иллюстрация метода расщепления по физическим процессам.
  4. Желательно предусмотреть в практикуме возможность выделиться для студентов, наиболее толковых в плане вычислительного программирования. Таких студентов обычно бывает от 0 до 3 в каждой группе, и персональный подход к ним позволяет: а) дать им гораздо больше полезных знаний/навыков, чем среднестатистическому студенту; б) избежать ситуаций, когда эти лучшие студенты делают задания за всю группу (при этом группа совершенно расслабляется и не осваивает программу даже по минимуму). Здесь есть две основные возможности:
    а) Для студентов, имеющие большое желание именно программировать, можно иногда давать задание по разработке/улучшению того или иного численного метода к лабе (это один из механизмов постепенного обновления практикума, см. раздел 1.3).
    б) Для студентов, знакомых с выбранным для практикума математическим пакетом (MATLAB или MathCAD), можно предусмотреть задания по решению задачи «с нуля» в этом пакете, причем без использования подробных указаний (которые сделать затруднительно). При условии знания студентом пакета трудозатраты на решение задачи «с нуля» почти такие же, как при решении задачи в готовой программе. Требование использовать именно «выбранный для практикума пакет» обусловлено тем, что результат должен быть по возможности применен для создания в пакете новой лабораторной работы по соответствующей теме.

Таким образом, как при использовании языка программирования, так и при использовании математического пакета можно выделить 3 методических подхода:
    • расчеты на полностью законченной программе;
    • редактирование студентом имеющейся программы (выше обосновано, что для языка программирования, в отличие от пакета, это нецелесообразно, – за исключением персональных заданий особо толковым студентам);
    • требование к студенту написать свою программу и уже затем проводить расчеты.