понедельник, 23 февраля 2009 г.

О РАЗВИТИИ КРИТИЧЕСКОГО МЫШЛЕНИЯ В КУРСЕ ПРОГРАММИРОВАНИЯ

Предметом программирования как образовательной дисциплины является программирование как теоретическая и практическая деятельность по обеспечению программного управления обработкой данных, включающая создание программ, а также выбор структуры и кодирования данных [1 : 97]. При этом для реализации такого вида деятельности необходимо уметь:
- определить возможность решения поставленной задачи,
- выделить исходные данные задачи,
- проанализировать возможные методы получения правильного конечного результата и выбрать из них оптимальный метод,
- исходя из выбранного метода решения, продумать структуры данных, оптимальные для решения конкретной задачи, составить алгоритм решения задачи и записать его на языке программирования,
- проверить правильность и оптимальность полученного решения.
К сожалению, практика подготовки студентов на факультете информатики Вятского государственного гуманитарного университета показывает, что не все студенты уже обладают выше перечисленными умениями и хорошо справляются с решением поставленных перед ними задач. Отсюда, целесообразно скорректировать методику преподавания курса программирования с учетом использования на занятиях приемов, направленных на совершенствование мыслительных процессов студентов.
Для решения этой проблемы обратимся к когнитивной психологии, ведь именно эта наука изучает природу мышления и механизмы его работы. При этом необходимо учесть, что в курсе программирования важно развивать такое мышление, к которому прибегают при решении задач, формулировании выводов и принятии решений. Такой вид мышления в когнитивной психологии определяется как критическое мышление. Вот одно из самых простых определений критического мышления, передающее суть идеи: «критическое мышление – это использование когнитивных техник или стратегий, которые увеличивают вероятность получения желаемого конечного результата» [2 : 22]. В этом определении важно подчеркнуть направленность критического мышления на получение желаемого результата, другими словами, направленность мышления на решение конкретной когнитивной задачи. Таким образом, когда студент продумывает и реализует процесс решения некоторой задачи, он мыслит критически. Формулу критического мышления можно записать следующим образом:
Установка + Знания + Навыки мышления = Критическое мышление
Действительно, невозможно стать критически мыслящим человеком, не выработав у себя установку на критическое мышление, подразумевающую развитие таких качеств, как: умение планировать свои действия, гибкость мышления, настойчивость, готовность исправлять свои ошибки, осознание, наблюдение за мыслительным процессом и поиск компромиссных решений. Если провести параллель с программированием, то несложно заметить, что большинство из перечисленных выше качеств будут планомерно развиваться
Таблица 1
Качества, свойственные человеку, мыслящему
критически
Этап решения задачи в курсе программирования, требующий развития соответствующих качеств
Деятельность студента на соответствующем этапе решения задачи
Готовность к планированию

Построение алгоритма решения задачи


Необходимо определить точный порядок действий для достижения результата:
вначале составляется последовательность из небольшого числа достаточно крупных шагов, затем выполняется более подробное описание каждого шага – детализация алгоритма.
Гибкость (готовность рассматривать новые варианты), поиск компромиссных решений
Постановка задачи, построение информационной модели
Формализация задачи
Получение и анализ результатов
Необходимо определить, что известно и что является результатом решения, а также как связаны исходные данные и результаты. При этом важно уметь выбрать форму представления данных оптимальную для компьютерной обработки.
Необходимо уметь оценивать правильность и рациональность полученного решения и при необходимости изменить саму информационную модель, либо алгоритм с целью оптимизации решения.
Настойчивость, готовность исправлять свои ошибки
Отладка и тестирование программы
Необходимо устранить ошибки программирования. При этом важно уметь разработать систему тестов, предусмотрев разнообразные варианты хода вычислительного процесса, а также действия пользователя и, таким образом, защитить работу программы от ввода некорректных данных, неверных значений и т.д.
Осознание
Все этапы решения задачи
Важно оценивать, как протекают мыслительные операции и их конечный результат – полученное решение. Необходимо уметь оценить время и усилия, требуемые для решения задачи и подзадач, а также осуществлять постоянный контроль за процессом продвижения к поставленной цели.
в процессе решения задач (Табл. 1).
Еще одной составляющей критического мышления являются навыки мышления, т.е. набор приемов или операций, позволяющих найти путь к поставленной цели. Так, Д. Халперн, опираясь на богатейший теоретический и фактический материал, накопленный когнитивной психологией при изучении познавательных процессов, выделила ряд определенных навыков и приемов мышления, овладев которыми студенты начинают мыслить критически [2]. Отсюда, целесообразно предположить, что изучение опыта когнитивных психологов по развитию критического мышления и осуществление переноса соответствующих когнитивных стратегий по совершенствованию мыслительных операций на процесс обучения программированию, позволит добиться повышения успеваемости студентов в ходе решения задач.
Ниже приводится примерное занятие по теме «конструкция ветвления» в рамках курса программирования, учитывающего методы формирования критического мышления, предложенные когнитивными психологами.
1 этап – введение новой алгоритмической конструкции
На первом этапе занятия, при объяснении нового материала, целесообразно использовать средства повышения степени понимания материала студентами. В этом случае, когнитивная психология предлагает целый ряд различных стратегий понимания, нацеленных на то, чтобы помочь сделать более понятной информацию, переданную вербально (обычным языком).
Рис. 1. Блок схема полной формы конструкции ветвленияПрежде всего, в качестве огромного подспорья вербальному изложению информации выступают графические систематизаторы. С их помощью можно изобразить структуру знаний изучающего и показать, каким образом новая информация встраивается в то, что уже известно. В информатике таким графическим систематизатором может служить блок-схема. Отсюда при введении новой алгоритмической конструкции целесообразно ввести запись конструкции ветвления не только на языке программирования, но и в виде блок-схемы (Рис.1).
Следующий когнитивный метод, облегчающий понимание материала, это метод взаимных вопросов и ответов. В связи с тем, что изучение нового материала проходит наиболее эффективно тогда, когда по нему задают правильно поставленные вопросы, а затем при ответах выявляется степень понимания материала, после введения конструкции ветвления и объяснения принципа ее использования, рекомендуется обсудить новую конструкцию со студентами в форме беседы. При этом следует учитывать, что умение задавать вопросы – это тот навык, которому следует учить, поскольку большинство людей привыкло задавать примитивные вопросы, требующие при ответе на них лишь небольшого напряжения памяти. Психолог А. Кинг разработала серию вопросов, при ответе на которые студенты запоминали и понимали материал гораздо лучше, чем студенты из контрольной группы, которых приучали либо знакомиться с материалом самостоятельно, либо задавать вопросы, но не показывали им при этом, как следует правильно задавать вопросы (Табл. 2) [2 : 140].
Таблица 2. Вопросы, направляюще ход мышления
Вопросы
Мыслительные операции
Приведите пример …?
Каким образом можно … использовать для …?
Что случится, если …?
Что подразумевается под …?
В чем сильные и слабые стороны …?
Что мы уже знаем о …?
Каким образом … влияет на …?

Каким образом … связано с тем, что мы изучили ранее?
Объясните, почему …?
Объясните, как …?
Почему важно …?
В чем разница между … и …?
Как можно применить … в повседневной жизни?
Какой аргумент можно привести против …?
Какими могут быть возможные решения задачи?
Сравните … и … на основании …
Что, на ваш взгляд, является причиной … и почему?
Согласны ли вы с утверждением, что …
Чем вы можете аргументировать свой ответ?
Приложение
Приложение
Предположение/Выдвижение гипотезы
Анализ/Заключение
Анализ/Заключение
Активизация ранее приобретенных знаний
Активизация причинно-следственных отношений
Активизация ранее приобретенных знаний

Анализ
Анализ
Анализ значимости
Сравнение–противопоставление
Применение в реальном мире
Контраргументация
Синтез идей
Сравнение–противопоставление
Анализ причинно-следственных связей
Оценка и ее обоснование
Оценка и ее обоснование
В рамках темы конструкция ветвления в ходе беседы рекомендуется предложить студентам следующие вопросы:
- В чем разница между полной и неполной формами записи конструкции ветвления?
- Приведите примеры использования полной формы конструкции ветвления в повседневной жизни?
- Приведите примеры использования неполной формы конструкции ветвления в повседневной жизни?
- Можно ли при решении задач использовать только неполную форму конструкции ветвления?
- В чем преимущество использования полной формы конструкции ветвления?
- В чем отличие конструкции ветвления от конструкции следования?
- Что вы уже знаете об условиях, что может выступать в качестве условия?
- Каким образом можно использовать конструкцию ветвления для определения возрастной группы человека?
- Какие операторы можно использовать в конструкции ветвления?
- Что может привести к возникновению неоднозначности в способе записи конструкции ветвления?
2 этап – отработка использования новой алгоритмической конструкции на примере решения задач
Когнитивные психологи разработали универсальный алгоритм, или руководство, помогающее направить процесс мышления на определенную задачу. Следующие вопросы служат для упорядочения процесса мышления:
1. Какова цель?
2. Что известно?
3. Какие навыки мышления позволяют вам достичь поставленной цели?
4. Достигнута ли поставленная цель?
Отсюда при разборе решения задач важно вместе со студентами продумать ответы на поставленные вопросы. Так, разбор конструкции ветвления можно выполнить на следующем простом примере:
Даны два конверта прямоугольной формы с длинами сторон (a,b) и (c,d). Определить, можно ли первый конверт вложить во второй?
Рис. 2После определения цели задачи и исходных данных целесообразно использовать различного рода графические изображения, являющиеся отличной когнитивной стратегией решения задач. Для нашего примера удобно использовать блок-схему или древовидную диаграмму. Первоначальный алгоритм решения задачи, предлагаемый студентами, отображен на блок-схеме (Рис. 2). Ниже приведено решение, записанное на языке Паскаль.
Program Task1;
Var a, b, c, d: Integer;
Begin
WriteLn(‘Введите размеры первого конверта’);
ReadLn(a, b);
WriteLn(‘Введите размеры второго конверта’);
ReadLn(c, d);
If (ac)AND(b>d)OR(a>d)AND(b>c) Then
WriteLn(‘Второй конверт входит в первый’)
Else WriteLn(‘Один конверт вложить в другой нельзя’);
ReadLn;
End.
Еще одной модификацией данной задачи может служить следующий пример:
Определить, войдет ли прямоугольный шкаф размером a*b*h в дверной проем размером n*m.
Рис. 5Для решения этой задачи опять же полезно применить метод анализа целей и средств и, в зависимости от способа занесения шкафа в дверной проем, разбить задачу на три подзадачи (Рис. 5).
Рис. 6 Кроме того, с целью приведения каждой из подзадач к уже решенной задаче, при построении иерархического дерева уместно прибегнуть к такой когнитивной стратегии решения задач, как переформулировка (Рис. 6).
Ниже приведено решение задачи.
Program Task3;
Var a, b, h, n, m: Word;
Begin
WriteLn(‘Введите размеры первого конверта’);
ReadLn(a, b);
WriteLn(‘Введите размеры второго конверта’);
ReadLn(c, d);
If (a<=0)or(b<=0)or(h<=0)or(n<=0)OR(m<=0) Then WriteLn(‘Некорректный ввод данных’) Else if (bn)AND(b>m)OR(a>m)AND(b>n) Then
WriteLn(‘входит’)
Else
If (a>n)AND(h>m)OR(a>m)AND(h>n) Then
WriteLn(‘входит’)
Else WriteLn(‘не входит’);
ReadLn;
End.
Итак, в приведенной выше схеме занятия по теме «Конструкция ветвления» использованы метод графических систематизаторов и метод взаимных вопросов и ответов для облегчения усвоения студентами нового материала. Кроме того, разобраны три задачи, на примере которых студенты учатся, во-первых, использовать графические изображения (блок-схема и иерархическое дерево) для облегчения поиска решения, и, во-вторых, знакомятся с когнитивными стратегиями решения задач – анализом целей и средств и переформулировкой задачи. Такая методика преподавания курса программирования, ориентированного на использование когнитивных методик и стратегий развития критического мышления на каждом занятии, позволит повысить способность студентов решать возникающие задачи.

Читаю Блог для успешных людей и почерпнул много нового. Если вы хотите жить лучше - загляните и вы туда!