Rambler's Top100
 / Форум
 / О сайте
 / О школе
 / Поступление
 / Методика
 / Основной курс
 / Спецкурсы
 / Расписание
 / Работы учащихся
 / Достижения
 / Преподаватели
 / Турниры МШП
 / Профориентация
 / Набор в Мытищинскую Школу программистов 2010/11

Вход в систему "Электронный журнал" для учащихся Школы программистов и их родителей находится здесь.

Открыт сайт Первого Сетевого Конкурса Информационных Технологий ОСКИТ-2010.

Скоро будет проходить Московская областная командная олимпиада школьников по информатике

Мытищинская Школа программистов объявляет набор учащихся 4-11 классов на 2010/11 учебный год.
Вступительный экзамен состоится 11 и 18 сентября в 14 часов.
Подробная информация...



    www.informatics.ru /  МШП /  Основной курс
Алгоритмический язык Pascal преподается в Школе программистов по авторской методике д.п.н., профессора С. М. Окулова. Основная идея автора заключается в том, что «занятия по информатике должны в корне отличаться от традиционных занятий по любому другому предмету: здесь должна поощряться ошибка, ибо только через ошибку можно прийти к результату; стиль мышления программиста свой, отличающийся от стиля мышления как математика, так и любого другого специалиста, - он настроен на борьбу с хаосом. Основной методический принцип обучения – все познается через труд, через процесс решения задач, через преодоление собственных ошибок. Этот принцип определяет структуру занятий по Pascal: вводная часть → обсуждение нового материала → эксперименты с заготовками решения задач → самостоятельное решение задач».

Основным учебником для первого, второго и третьего года обучения является книги С. М. Окулова «Основы программирования» и «Задачи по программированию», для второго и третьего года используется также книга того же автора «Программирование в алгоритмах». Первая из этих книг входит в состав обязательной литературы, которую должен иметь каждый ученик Школы программистов.

Главная цель данного курса – развитие мышления ученика. На первом году обучения речь идет об алгоритмическом мышлении, на втором – о структурном, на третьем – об эвристическом. Причем элементы обучения синтезированы в одно целое, часто многие аспекты рассматриваются одновременно. Алгоритмическим мышлением мы называем умением разработать алгоритм решения задачи. Структурный стиль мышления подразумевает умение «расчленить» задачу; программы становятся простыми и ясными, в них используются только основополагающие конструкции, каждый блок в идеале имеет только одну точку входа и выхода. Умение находить истину, доказывать факт правильности решения задачи назовем эвристическим стилем мышления. Схематично можно выделить три следующих этапа данного трехгодичного курса:

1 год обученияРазвитие алгоритмического мышления ученика
2 год обученияРазвитие структурного мышления ученика
3 год обученияРазвитие эвристического мышления ученика

Может возникнуть вопрос, почему именно при занятиях программированием происходит развитие этих видов мышления, почему традиционные предметы, на которых тоже решаются задачи (физика, математика) не всегда способны справиться с этой задачей? По нашему мнению – из-за наличия жесткой обратной связи с компьютером, связи объективной и лишенной эмоций, которая представляет собой мощный инструментарий индивидуального и развивающего обучения.

Главным для учителя в триаде «ученик - учитель - компьютер» становится не изложение очередных новых истин, не вещание с высо­кой трибуны, а поддержание у ученика состояния «направленной на­пряженности», состояния поиска. Техническую работу выполняет ком­пьютер. Он же создает совершенно новые возможности для деятельности.

Развитый интеллект ребенка - это умение (способ­ность) действовать, в частности мыслить. Из специфики действий, осо­бенностей познавательного процесса в связке «человек - компьютер» вытекают отличия предмета «программирование» по своим ди­дактическим возможностям для развития интеллекта ребенка, от всех остальных предметов, включая математику. Скажем, что очень часто, к сожалению, в современной школе задача развития мышления решается как бы попутно с усвоением (линейным усвоением!) факто­графического материала и не выделяется как самостоятельная. Эта си­туация понятна - нет явного инструментария для ее решения, и всё раз­витие педагогической мысли шло в направления повышения творческой продуктивности процесса обучения. Ибо, действительно, образование должно быть развивающим, а не отупляющим. Распро­страненные в школьной практике установки на механические упражне­ния, на заучивание, оперирование элементами и частями, не видя цело­го, и связанные с этим требования давать немедленные ответы, М. Вертхаймер считал следствием того, что в основе педагогики, мето­дик обучения и дидактики лежат ассоциативная психология и фор­мальная логика.

С появлением компьютера ситуация меняется. Программирова­ние компьютера используется как инструмент. Разумеется, при этом изучается и сам инструмент, точнее ключевые моменты структурного программирова­ния и нисходящей технологии написания программ. Курс по­строен на деятельности, связанной с решением задач. «Перегибая чуть-чуть палку», можно утверждать, что только через задачи, только через процесс преодоления связанных с этим трудностей, развивается интел­лект, способность думания, а не просто накопление фактографического материала.

Компьютер - активизатор обратной связи, инструмент построения моделей, но не только... Деятельность при программировании интегрирует в себе большинство достижений, которые человек «наработал» при разрешении возникаю­щих перед ним проблем. Пейперт считал, что, программируя компьютер, «ребенок не только овладевает частичкой самой современной техники, но и приобщается к некоторым из самых глубоких идей естествознания, математики, а также к искусству интел­лектуального моделирования». Как, по С. Пейперту, реализуется на практике это положение? Через использование специализированных сред программирования, при разработке которых учитывался ряд фундаментальных положений в области психологии. Работая в них, ребенок является зодчим, возводящим структуры собственного интеллекта.

Процессы, которые протекают в мозге ребенка, характери­зуются определенными периодами развития - лавинообразным нели­нейным самостимулирующим ростом при состоянии крайней неста­бильности, когда процесс набирает силу в предельно короткий проме­жуток времени. Эти периоды развития получили название «режимов с обострением», в ходе которых работает закон неограниченного возрас­тания за конечное время». Когда наступает состояние «обвала», точнее обвалов, ибо их бывает несколько? Падение одного камня в горах не оказывает никакого действия, падение другого - вызывает лавину. У каждого индивидуума свой камень, может быть заложенный в раннем детстве, но так или иначе, он есть. В процессе обучения на каждом витке достига­ется некая критическая масса (зависит от количества проделанной ра­боты, от количества прорешанных задач), достижение которой обеспе­чивает нелинейный скачок в развитии, лавину. Причина - многогран­ность (образно выражаясь - 1000 «щупальцев осьминога воздействуют на ученика») положительных обратных связей в системе «компьютер-ученик» в процессе написания программ. Именно поэтому только при обучении информатике с профессиональным использовани­ем компьютера, в частности программированию, это возможно. В обычной ситуации одному учителю, даже учителю от бога, с этим не справиться, он только человек. В данном случае в среде у каждого уче­ника дополнительный учитель – компьютер.

Теперь покажем, какими методами достигаются поставленные цели.

На первом году обучения изучаются основные алгоритмы и реализующие их операторы языка программирования Turbo Pascal (ввод и вывод данных; ветвление в неполной и полной формах, а также вложенное; неопределенные и определенный циклы), но не только. Задачи с первых же занятий предлагаются нетривиальные, с серьезным математическим наполнением Учащиеся Школы программистов учатся составлять программы, используя минимальное число конструкций. Школьники вырабатывают умение видеть динамику работы программы. С этой целью в начале применяется ручная трассировка работы программы, а затем – средства отладчика среды программирования Borland Pascal 7.0.

I семестр посвящен линейным алгоритмам и различным формам ветвления, определенным и неопределенным циклам; учащиеся знакомятся со всеми подтипами целого типа данных и с логическим типом. Задачи, решаемые в этот период, в основном посвящены целочисленной арифметике:
  • выделение и обработка цифр числа,
  • побитовые операции с целыми числами, операции сдвига,
  • поиск наибольшего и наименьшего из нескольких целых чисел,
  • подсчет сумм и количеств,
  • поиск чисел по условию (пифагоровы числа: a2+b2=c2, числа Армстронга: xyz = xn+yn+zn, числа Мерсена: 2p-1, где p – простое, автоморфные числа – равные последним цифрам своего квадрата, совершенные числа и др.),
  • делители, кратные, простые числа.
Другой тип задач – на формирование сложных условий, знание законов алгебры логики, упрощение логических выражений.

II семестр в основном посвящен вложенным циклам и работе с одномерными массивами. Задачи целочисленной арифметики, решаемые с использованием циклов, усложняются. Многие задачи на обработку чисел предполагают несколько вариантов решения – простые, с быстродействием O(N) и более сложные, которые работают уже за O(logN) операций. Завершает год задачи на обработку элементов массива, вывод и выборку элементов по условию, суммирование элементов, поиск и анализ max и min.

Таким образом, первый год обучения посвящен развитию алгоритмического мышления ученика.

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

В этот же период учащиеся знакомятся с вещественным, символьным и строковым, а также множественным типами данных. В ходе изучения вещественного типа школьники впервые сталкиваются с задачами численной математики – методами приближенного решения уравнений, нахождения приближенного значения интеграла как площади криволинейной трапеции, вычислением значений элементарных функций путем разложения в ряд. Тогда же изучается и рекурсия как метод программирования, рассматриваются такие изумительные объекты как фракталы.

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

Хорошим примером может служить задача вычисления степени числа (как известно, Pascal не имеет операции возведения в произвольную степень). Впервые ученики Школы программистов сталкиваются с ней уже на третьем занятии, при изучении линейного алгоритма. Рассматривается частный случай – вычисление целой степени числа от нулевой до десятой. Затем предлагается модифицировать программу так, чтобы она вычисляла степень за минимальное число операций умножения. После некоторых размышлений учащиеся приходят к выводу, что для «экономного» возведения в четную и нечетную степень нужно использовать разные формулы. Затем та же задача (или ее модификации) решается уже с использованием цикла, затем рекурсии, а затем и динамического программирования.

Вообще подбор задач – одна основных из особенностей данной методики обучения, они не простые, но под силу как ученику старших классов, так и логично мыслящему 6-7 класснику.

Основной задачей второго года обучения является развитие структурного мышления ученика.

В IV учебном семестре учащиеся очень подробно знакомятся с классической задачей программирования - сортировкой массива. На этом примере показывается все многообразие способов, которыми можно решать одну и ту же задачу. Исследуется эффективность и производительность каждого алгоритма, как по быстродействию, так и по затратам памяти. Вначале учащиеся знакомятся с простейшими методами сортировки массивов: сортировка простым выбором, сортировка простым обменом («пузырек»), сортировка простыми вставками, сортировка подсчетом, шейкер-сортировка, сортировка с убывающим шагом (сортировка Шелла), сортировка Фрэнда. Причем четыре последних метода школьники осваивают самостоятельно. Затем упор делается на методы быстрой сортировки массивов: сортировка слияниями, быстрая сортировка (сортировка Хоара), пирамидальная сортировка, k-путевая сортировка.

Тема «Сортировка массивов» логично продолжается разделом «Поиск данных». Учащиеся знакомятся с алгоритмами линейного, бинарного и случайного поиска, а также с алгоритмом Бойера-Мура поиска подстроки в строке.

Семестр завершается темой «Арифметика многоразрядных («длинных») чисел». По окончании данной темы учащиеся впервые сталкиваются с новой формой контроля знаний, с которой им придется постоянно сталкиваться на третьем году обучения – контрольный тренинг. Цели контрольного тренинга – не только (и не столько!) в проверке тех или иных знаний учащихся, а в закреплении пройденного материала, выработке техники программирования, способности программировать в режиме цейтнота, тренировке психологической устойчивости к стрессовым состояниям, с которым, в связи со спецификой IT-отрасли, безусловно, придется столкнуться школьникам в своей будущей работе программиста или системного администратора. За 2-2,5 часа ученику необходимо написать «с нуля» от 10 до 14 работающих подпрограмм, реализующие следующие функции с многоразрядными числами: ввод числа, вывод числа, сравнение чисел, сложение чисел, разность чисел, умножение «длинного» на «короткое», умножение «длинного» на «длинное», деление «длинного» на «короткое», деление «длинного» на «длинное». В зависимости от подготовки группы литературой пользоваться или полностью запрещено, или же разрешено сделать несколько подходов к книге вне компьютера, при этом любые записи делать не разрешается.

В V учебном семестре (3 год обучения) изучается материал, обычно не затрагиваемый при работе с учащимися средних школ. Семестр полностью посвящен динамическим структурам данных. Учащиеся подробно рассматривают ссылочный тип данных, пишут модули для работы со списком, стеком и очередью. Большая часть времени посвящается работе с деревьями, школьники изучают двоичные деревья, АВЛ-деревья и Б-деревья. По мнению автора методики без материала этого семестра «невозможен переход на следующий «виток» обучения программированию. В объектно-ориентированных технологиях он является одним из стержневых, без которого понимания технологий остается «любительским».

Необходимо отметить, что задачи на динамический тип данных чрезвычайно трудно отлаживать. Для этих задач неэффективна встроенная система отладки среды программирования Borland Pascal 7.0, а о ручной трассировке программ и говорить не приходится. Поэтому предвидеть и рассмотреть все случаи работы программы становиться невероятно сложно. Школьники приобретают новые навыки доказательного программирования и верификации программ. Таким образом, формируется эвристический стиль мышления, он развивается на протяжении всего третьего года обучения.

Наконец, в VI, заключительном, семестре школьники глубоко знакомятся с объектно-ориентированным программированием на языке Object Pascal. В основу курса положены методические рекомендации. По окончании семестра школьники получают последнюю порцию знаний того стержня, который объединен в Школе программистов в единый трехгодичный курс под общим названием «Программирование на языке Pascal».

После прохождения этого курса изучение любых технологий программирования, любых современных языков и систем программирования становится обыденным делом, мы уверены, что у успешно справившихся с программой школьников не возникнет никаких проблем с программированием ни в ВУЗе, ни в будущей профессиональной деятельности.

< Предыдущий раздел Следующий раздел >

Rambler's Top100

© 2001-2010, Мытищинская Школа программистов
Россия, Московская область, 141021, г. Мытищи, ул. Юбилейная, д. 13/2
Тел. : (495) 796-69-15 E-mail: mshp@informatics.ru