Психология. Журнал Высшей школы экономики, 2012. Т. 9, №2. С. 141-148.
Обзоры и рецензии
РАЗВИВАЮЩИЙ ЭФФЕКТ ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ: ПСИХОЛОГО-ПЕДАГОГИЧЕСКИЕ АСПЕКТЫ
И.Б. РОГОЖКИНА
Резюме
Вопрос о влиянии обучения программированию на умственное и интеллектуальное развитие учащихся является одной из актуальных проблем современной психологии и педагогики. В статье проведен анализ когнитивных навыков и способностей, развиваемых в процессе обучения программированию. Обсуждаются психолого-педагогические факторы, влияющие на результат
обучения.
Ключевые слова: обучение программированию, умственное и социо-эмоциональное развитие, методика обучения.
Введение
Программирование — сложная интеллектуальная деятельность, предоставляющая широкие возможности для развития мышления (Бабаева, Войскунский, 2003). Возраст знакомства детей с информационными технологиями и элементами программирования стабильно снижается из года в год. Так, новые федеральные государственные образовательные стандарты предусматривают обязательное введение информатики уже в начальной школе. В ближай-
шие несколько лет будет реализована программа информатизации дошкольного образования. В этой связи важно понять, какой эффект на умственное и эмоциональное развитие учащихся оказывает обучение информатике и программированию.
Вопрос о развивающем эффекте программирования был поднят еще в 1970-е гг., когда появилась среда Лого, с помощью которой даже младшие школьники получили возможность создавать несложные программы (Рарег!, 1972). В то время была популярна идея о том, что обучение
программированию влечет за собой развитие важнейших когнитивных навыков, таких как умение планировать и организовывать свою деятельность, а также развитие математических способностей и абстрактного мышления (Feurzeig е! а1., 1981). Сторонники бихевиористского подхода, считавшие, что, обучаясь программированию, человек всего лишь знакомится с набором команд и научается по определенным синтаксическим правилам соединять их друг с другом, были в меньшинстве и не могли умерить царивший в то время энтузиазм.
Однако спустя несколько лет проведенные исследования продемонстрировали, что влияние обучения программированию на развитие умственных способностей и когнитивных навыков зачастую оказывается незначительным. Возник вопрос об условиях, которые способствуют или, напротив, мешают формированию и развитию тех или иных навыков. Целью настоящей работы является анализ эффекта обучения программированию на умственное и социоэмоциональное развитие учащихся и выявление психолого-педагогических факторов, оказывающих влияние на величину этого эффекта.
Влияние обучения программированию на умственное и социоэмоциональное развитие
Первым языком программирования, который можно было использовать для обучения младших школьников, стал ЛОГО, разработанный в 1967 г. Сеймуром Папертом и Идит Харель. Начиная с 1970-х гг. ЛОГО широко использовался для обучения
программированию детей в американских школах. Именно поэтому основная масса исследований, посвященных выявлению эффекта обучения программированию на умственное и социальное развитие школьников, была проведена на базе ЛОГО.
Математические способности. В ранних работах, посвященных изучению влияния обучения программированию на математические знания и способности, указывалось, что связь между развитием математических способностей и программированием либо отсутствует, либо незначительна. Так, Дж. Хоу, Т. О'Ши и Ф. Плэйн (Howe, O'Shea, Plane, 1980) пытались доказать, что программирование способствует лучшему пониманию и усвоению математики. В течение двух лет они преподавали ЛОГО 11-летним школьникам. После этого контрольная и экспериментальная группы выполнили несколько математических тестов. Результаты оказались противоречивыми: если по одному из тестов экспериментальная группа продемонстрировала более высокие показатели, то по другому — более высокие показатели были у контрольной группы. Во многих работах было показано, что, обучаясь программированию, дети начинают проявлять интерес к изучению математики. Они спонтанно исследовали и осваивали математические понятия, такие, например, как «переменная» (Lawler, 1980). Однако вопрос о том, проявлялась ли активность детей в изучении математических понятий вне компьютерного класса, не изучен. Некоторые исследования были посвящены анализу связи между обучением программированию и развитием
пространственного мышления и геометрических представлений. Так, было показано, что, работая в ЛОГО, дети получают представления о различных геометрических формах (Clements, 1999). Например, вместо восприятия геометрических фигур как целого («Это выглядит, как прямоугольник») дети начинали думать об этих фигурах в терминах их свойств («Это прямоугольник, потому что у него противоположные стороны равны и все углы прямые»). Что касается влияния обучения программированию на понимание алгебраических концепций, то результаты исследований противоречивы. С одной стороны, во многих работах (Lehrer, Smith, 1986) показывается, что перенос алгебраических понятий из соответствующей программной среды в другие предметные области маловероятен (например, дети, вполне умело работающие с переменными в ЛОГО, затруднялись использовать их в других ситуациях). Другие же авторы утверждают, что интуитивные и примитивные концепции, возникшие у детей во время обучения программированию, в будущем станут базой для серьезных занятий алгеброй (Noss, Hoyles, 1992).
Решение проблем и абстрактное мышление. Сходная ситуация наблюдается и в выяснении вопроса о влиянии обучения программированию на развитие абстрактного мышления и умения решать проблемы (problem-solving) в разных предметных областях. Если одни авторы (Choi, Repman, 1993) указывают на положительный эффект освоения программирования на способности к планированию, вычленению в проблеме подзадач, нахождению путей
решения, то другие полностью этот эффект отрицают. Так, Р. Пи и Д. Кур-ланду (Pea, Kurland, 1983) не удалось обнаружить разницу в планировании различных деятельностей (решения головоломки «Ханойская башня» и собирания пазлов) между группой, изучавшей ЛОГО, и контрольной группой.
Алгоритмическое мышление. В среде специалистов по информационным технологиям часто высказывается мнение, что занятия программированием способствуют формированию и развитию особого типа мышления, называемого алгоритмическим (Кушниренко, Лебедев, 2000; Futschek, 2006). При этом отмечается, что этот вид мышления способствует не только успешному обучению программированию, но и эффективному освоению современного информационного пространства в целом. Для А.П. Ершова (Ершов, 1972) культура алгоритмического мышления, к которой относится, например, умение вычленить подзадачи и потом соединить их решения вместе или общее умение составить и понять инструкцию, — важнейшая часть общей культуры, ее базы — грамотности. Как можно определить алгоритмическое мышление? Для А.Г. Кушниренко, одного из создателей обучающих программных систем КуМир и ПиктоМир, алгоритмическое мышление тесно связано с наличием таких навыков и умений, как
1) умение планировать структуру действий, необходимых для достижений заданной цели при помощи фиксированного набора средств;
2) умение строить информационные структуры для описания объектов и систем; 3) умение организовать
поиск информации, необходимой для решения поставленной задачи. В работах Дж. Фучика ^и18сЬек, 2006) показано, что алгоритмическое мышление содержит и творческий аспект, который проявляется в процессе создания новых алгоритмов. По его мнению, этот вид мышления служит операционной базой для всех методов и приемов обработки и использования информации, а оптимальной деятельностью для его развития являются занятия программированием. О необходимости развития алгоритмического мышления говорят создатели программ по информатике для школьников. Так, в содержание курса информатики для начальной школы Т.А. Рудченко и А.Л. Семенова (Семенов, 2004а, б) входят основы логической и алгоритмической компетентности. При этом необходимо отметить, что специфика алгоритмического мышления и связь между его развитием и обучением программированию остались вне поля внимания профессиональных психологов.
Развитие речи. Связь между обучением программированию и развитием языковых способностей многим кажется неочевидной. Вместе с тем ряд данных свидетельствует о положительном эффекте изучения программирования в раннем возрасте. Так, у младших школьников, обучающихся программированию, увеличивается словарный запас, речь становится более богатой и эмоциональной ^ешзЫ е! а1., 1985).
Творческое мышление. В работах С. Вайды и Ж. Маккиби (Vaidya, МсКееЬу, 1984) было показано, что дети способны создать с помощью ЛОГО более интересные рисунки,
чем на бумаге. Они черпали новые идеи из своего опыта программирования и переносили их на бумагу, создавая оригинальные работы. После обучения программированию дети показывали более высокие результаты по тесту креативности Торренса. Однако разница была не слишком значительной (Clements, Nastasi, 1992). Наибольшую разницу в результатах теста экспериментальная группа продемонстрировала по шкале оригинальности.
Социоэмоциональное развитие. Вопреки широко распространенному мнению о программистах как о замкнутых интровертах во многих работах было показано, что обучение программированию способствует социальному и эмоциональному развитию детей. Учителя обращали внимание на то, что дети, изучающие программирование, имели тесные контакты со сверстниками, активно участвовали в групповых мероприятиях, требующих выработки совместного плана действий и творческого подхода. Дети, занимающиеся программированием, были более склонны сотрудничать со своими сверстниками и делиться с ними полученными знаниями (Genishi et al., 1985). В то же время школьники, работающие в ЛОГО, больше конфликтовали друг с другом. Однако эти конфликты носили не социальный, а когнитивный характер и в большинстве случаев позволяли группе выбрать оптимальное решение (Nastasi, Clements, Battista, 1990). Таким образом, работа в ЛОГО стимулировала умственную и социальную активность школьников, позитивно влияла на их способность разрешать конфликты.
Факторы, влияющие на развивающий эффект
обучения программированию
Профессиональные и личностные качества преподавателя. Профессиональные и личностные качества преподавателя играют важную (иногда решающую) роль в том, какими будут результаты обучения детей программированию. В работах Т. Макгилла и С. Волет (McGill, Volet, 1997) было показано, что эффективный преподаватель: 1) отбирает или создает задания, направленные на достижение учебных целей; 2) обращает внимание учащихся на определенные аспекты их учебного опыта; 3) стремится ввести формальный язык для описания математических концепций; 4) подчеркивает важность планирования при создании алгоритмов; 5) развивает метакогни-тивные навыки учащихся; 6) переносит изучаемые концепции и идеи в другие контексты; 7) поощряет взаимодействие между учащимися и обеспечивает возможность контакта между учащимся и преподавателем.
Особенно важными нам кажутся пункты 5 и 6. Одно из основных возражений противников идеи развивающего эффекта занятий программированием состояло в том, что, даже научившись планировать, анализировать и оценивать свою деятельность на уроках программирования, учащиеся не способны применить полученные навыки в других предметных областях. Перенос изучаемых идей и концепций в другие контексты, развитие метакогнитивных навыков учащихся помогут решить эту проблему.
Программная среда. Один и тот же язык программирования может
быть реализован разными программными средами. Хорошо разработанная программная среда позволяет составлять программы более эффективно. Именно поэтому в последние десятилетия появилось множество систем, которые имеют простой интерфейс, но при этом обеспечивают возможность создания достаточно сложных и интересных проектов (Brusilovsky et al., 1997).
Выше упоминалось, что в процессе программирования в ЛОГО у детей могут спонтанно возникать и формироваться математические концепции и представления. Программные среды могут в той или иной степени содействовать развитию творческих способностей учащихся. Так, программирование с использованием систем Alice и Scratch предполагает создание собственных проектов — анимационных историй, игр или фильмов. Было показано, что работа в этих программных средах способствует возникновению ярких, творческих идей у студентов (Res-nick et al., 2009)
Обучение программированию положительно влияет на социоэмоцио-нальное развитие детей, если занятия предусматривают совместную деятельность. Некоторые программные среды особенно подходят для создания совместных проектов. Так, платформа Scratch позволяет юным программистам не только загружать собственные проекты на сайт, но и участвовать в создании и улучшении программного кода других людей (там же). Кроме того, Scratch предоставляет пользователям возможность делать краткие замечания о ходе работы над проектом, отражающие их размышления, сомнения или
новые идеи, обмениваться этими записями с другими программистами и возвращаться к ним по мере необходимости. В работах Э. Розенбаума (Rosenbaum, 2009) было показано, что составление таких комментариев положительно влияет на развитие рефлексивного мышления, способность анализировать ход своих мыслей.
Методика обучения. Методика обучения программированию влияет не только на объем и качество усвоенного материала, но и на формирование и развитие когнитивных навыков. При неправильно выстроенной методике дети могут научиться выполнять определенные упражнения, но будут неспособны ухватить суть той или иной концепции и, следовательно, воспользоваться своими знаниями в новых ситуациях. Так, в исследовании Р. Пи (Pea, 1983) было показано, что 8-12-летние дети после 30-часового курса обучения программированию в ЛОГО научились использовать команду ПОВТОРИТЬ (REPEAT) для многократного вывода на экран компьютера своего имени. А вот применить эту команду для рисования на экране квадрата они не смогли. Вместо этого дети четыре раза подряд записывали одну и ту же последовательность команд, предназначенную для изображения прямой линии. С другой стороны, с помощью продуманной методики можно обучать азам программирования и формировать алгоритмическое мышление даже у дошкольников. Так, в цикле исследований, посвященных обучению 6-летних детей программированию (Рогожкина, Бабаева, 2011; Rogozhkina, Kushnirenko,
2011), было показано, что для достижения этих целей в учебный курс необходимо включать не только упражнения на компьютере, но и другие виды деятельности: задания на бумаге, составление устных планов, реализацию придуманных алгоритмов «вживую» и групповые проекты.
Заключение
Обзор литературы продемонстрировал растущий интерес к вопросу о влиянии обучения программированию на умственное и интеллектуальное развитие учащихся. Обучение программированию может способствовать развитию математических представлений, абстрактного, творческого и алгоритмического мышления, а также умения работать в команде. Было показано, что величина развивающего эффекта зависит от нескольких факторов: личностных и профессиональных качеств преподавателя, программной среды и методики обучения. Несмотря на большой объем проведенных исследований, многие вопросы остались нерешенными. В частности, осталась без внимания связь между возрастными особенностями детей и эффектом обучения программированию. Как стоит выстраивать методику обучения для детей младшего, среднего и старшего школьного возраста, какие программные среды наиболее подходят для того или иного возраста? В связи с введением основ программирования в курс не только средней, но и начальной школы заявленная проблематика нуждается в дальнейшей разработке.
Литература
Бабаева Ю.Д., Войскунский А.Е. Одаренный ребенок за компьютером. М., 2003.
Кушниренко А.Г., Лебедев Г.В. Информатика: 12 лекций о том, для чего нужен школьный курс информатики и как его преподавать. Лаборатория Базовых Знаний, 2000.
Рогожкина И.Б., Бабаева ЮД. Одаренный ребенок в мире современных информационных технологий: выявление и развитие способностей к программированию // Психолого-педагогические проблемы одаренности: теория и практика. Иркутск, 2011.
Семенов А.Л. Современный курс математики и информатики в школе. Часть 1 // Вопросы образования. 2004а. № 1. С. 79-94.
Семенов А.Л. Современный курс математики и информатики в школе. Часть 2 // Вопросы образования. 2004б. № 2. С. 110-126.
Brusilovsky P., Calabrese E, Hvorecky J., Kouchnirenko A., Miller P. Mini-languages: a way to learn programming principles // Education and Information Technologies. 1997. 2. 1. 65-83.
Choi W.S., Repman J. Effects of Pascal and FORTRAN programming on the problem-solving abilities of college students // Journal of Research on Computing Education. 1993. 25. 3. 290-302.
Clements D.H. The future of educational computing research: the case of computer programming // Information Technology in Childhood Education Annual. 1999. 1. 147-179.
Clements D.H., Nastasi B.K. Computers and early childhood education // M. Get-tinger, S.N. Elliott, T.R. Kratochwill (eds). Advances in school psychology: Preschool and early childhood treatment directions. Hillsdale, NY, 1992. Р. 187-246.
Feurzeig W, Horwitz P., Nickerson R.S. Microcomputers in education (Report No. 4798). Cambridge, MA, 1981.
Futschek G. Algorithmic thinking: the key for understanding computer science // Lecture Notes in Computer Sciences. Springer, 2006. 4226. 159-168.
Genishi C, McCollum P., Strand E.B. Research currents: The interactional richness of children's computer use // Language Arts. 1985. 62. 5. 526-532.
Howe J.A.M., O'Shea T, Plane F. Teaching mathematics through Logo programming: An evaluation study // Computer-Assisted Learning - Scope, Progress and Limits. Amsterdam; N.Y., 1980.
Lawler R.W. Extending a powerful idea. MIT Artificial Intelligence Laboratory. Cambridge, MA, 1980.
Lehrer R., Smith P. Logo learning: Is more better? // Paper presented at the meeting of the American Educational Research Association. San Francisco, 1986.
McGill TJ, Volet S.E. A conceptual framework for analyzing students' knowledge of programming // Journal of Research on Computing in Education. 1997. 29. 276-297.
Nastasi B.K., Clements D.H, Battista M.T. Social-cognitive interactions, motivation, and cognitive growth in Logo programming and CAI problem-solving environments // Journal of Educational Psychology. 1990. 82. 150-158.
Noss R, Hoyles C. Afterword: Looking back and looking forward // C. Hoyles, R. Noss (eds). Learning mathematics and Logo. Cambridge, MA: MIT, 1992. P. 227-268.
Papert S. Teaching children thinking // Programmed Learning and Educational Technology. 1972. 9. 245-255.
Pea R.D. Programming problem solving: Children's experience with Logo // Paper
presented at Annual Meetings of the American Educational Research Association. Montreal, Canada, 1983.
Pea R.D., Kurland D.M. Logo programming and the development of planning skills (Tech. Rep. No. 16). N.Y.: Center for Children and Technology, Bank Street College, 1983.
Resnick M, Maloney J., Monroy-Hernandez A., Rusk, N, Eastmond E, Brennan K, Millner A., Rosenbaum E., Silver J., Silver-man B, Kafai Y. Scratch: Programming for all // Communications of the ACM. 2009. 52. 11. 60-67.
Rogozhkina I.B., Kushnirenko A.G. PiktoMir: Teaching programming concepts to preschoolers with a new tutorial environment // Procedia — Social and Behavioral Sciences. 2011. 28. 601-605.
Rosenbaum E. Jots: Reflective learning in scratch // Proceedings of the 8th International Conference on Interaction Design and Children. N.Y.: ACM New York, 2009. 284-285.
Vaidya S, McKeeby J. Computer turtle graphics: Do they affect children's thought processes? // Educational Technology. 1984. 24. 46-47.
Рогожкина Ирина Борисовна, Научно-исследовательский институт системных исследований РАН, младший научный сотрудник
Контакты: [email protected]