Желтый велосипед с красными колесами или еще один курс алгоритмов от фирмы «1С»

    Создание велосипеда – дело неблагодарное… Однако у фирмы «1С» в этом плане есть огромный успешный опыт. Еще одна программа финансового учета, ставшая фактически стандартным ПО российской бухгалтерии, еще один язык программирования, который сейчас используют сорок процентов российских программистов…
    Вот и еще один учебный курс.

    Зачем?


    В ИТ-отрасли — бурный рост. А на фоне демографической ямы это значит — приближается страшный кадровый голод.
    Студентов не хватает, становится популярным брать на работу ребят сразу после школы. Вот только знаний у школьников по программированию маловато.
    Фирма «1С» поставила перед собой задачу — в каждый двор по парашютной вышке программерскому клубу для школьников. Судя по информации на club.1c.ru, в 133 городах такие клубы уже есть. Для этих клубов 1С и разрабатывает линейку IT-шных курсов. Среди них есть не только специфические, корпоративные, по обучению школьников языку 1С, но и курсы по «обычному» прикладному программированию, и даже по системному администрированию. В этом деле 1С является фактически первопроходцем.
    Но зачем еще один курс по обучению школьников алгоритмическому программированию, когда существует великое множество пособий, и хорошо разработаны подходы, то есть собственно системы обучения?
    Прежде всего, видимо, это старая программистская традиция: зачем использовать готовое, когда можно написать самому. Тем более, что все системы имеют свои недостатки и в своем «продукте» их можно преодолеть.
    Сразу скажем, что, несмотря на многочисленные отличия от «классики», этот курс остается «классическим»: изучаемые темы, техническая организация проверки решений при помощи автоматической системы, деление занятий на теорию и практику, все это очень похоже на другие курсы по алгоритмам. И, несмотря на то, что говорить мы будем преимущественно об отличиях курса 1С от других, у них есть много общего.
    Что, прежде всего, хочется от нового курса, чего особенно не хватает в уже существующих разработкам?


    Быстрый самостоятельный старт


    Прежде всего, это, пожалуй, возможность автономной работы с самого начала. Курс не задумывался как самоучитель, но на практике необходимо, чтобы ребенок и при обучении алгоритмическому программированию, мог двигаться в некоторых случаях самостоятельно. В этом плане возникают серьезные проблемы у начинающих. Даже взрослому трудно осознать и привыкнуть к тому, что надо писать программы, полностью лишенные пользовательского интерфейса, точно соблюдать формат входных и выходных данных и тому подобное.
    На первом занятии идет подробный рассказ о том, чем отличается алгоритмическое (олимпиадное) программирование от проектного. Подробно описывается взаимодействие с проверяющей системой и приводится пример работающей программы. Сейчас, после двукратного тестирования стало ясно, что даже такая степень подробности недостаточна для большинства детей. Мы постараемся дополнить курс очень простой, наглядной вводной частью, с которой начнем преподавание курса в Летней школе в этом году.

    Наглядность


    Другая существенная проблема – отсутствие наглядности. После знакомства с программированием графического интерфейса достаточно сложно убедить школьников в необходимости использования бумаги и карандаша для разработки алгоритмов. В любом случае при изучении алгоритмического программирования основная работа происходит «в уме».
    Некоторые приемы повышения наглядности все же есть. (Не будем здесь говорить о визуализаторах алгоритмов – это замечательное подспорье для достаточно долго изучающих алгоритмы, но не для новичков, которые испытывают серьезные трудности именно с кодированием.)
    Очень желательно познакомить изучающих алгоритмы с отладчиком. Отладчик, встроенный в Eclipse, прост и нагляден. Второе занятие первого модуля курса предлагается посвятить именно работе с отладчиком и на следующих занятиях постоянно его использовать, перекладывая большую часть работы на компьютер. На этом занятии предлагается решать особенные «наоборот-задачи», где текст программы-решения уже дан. Правда, решение содержит ошибки и предлагается подобрать входные данные, так чтобы решение «завалилось» — сработало неверно. Школьникам обычно подобные задачи очень нравятся.
    Другая идея, пользу которой мы «открыли» уже в процессе преподавания звучит достаточно странно. Это решение задач преподавателем на проекторе. Обычная схема преподавания других курсов 1С, когда дети ориентируются на действия преподавателя и фактически повторяют за ним, а преподаватель рассказывает и одновременно пишет программу-проект, кажется абсолютно неприменимой в обучении алгоритмическому программированию. Это действительно так. Основная задача преподавания алгоритмического программирования – научить школьника самостоятельно мыслить. И тут трудно представить себе другую схему преподавания кроме обычной: теоретическая лекция, затем самостоятельное решение задач. И именно таким образом преподается этот курс. Однако, особенно на начальном этапе обучения, интереснее решать с детьми задачи как бы «параллельно». Более быстрые в обучении дети при этом фактически решают «свои задачи по-своему», однако при этом с интересом наблюдают за происходящим на проекторе, исправляют возникающие ошибки и предлагают свои подходы к решению. Более медлительным ученикам такой подход помогает не застрять надолго на технических мелочах, и благодаря этому у них обязательно что-нибудь получается. А ситуация успеха очень важна для поддержания интереса. И здесь встает третья, пожалуй, основная проблема преподавания алгоритмов – сложность.

    Понятность


    Алгоритмическое программирование действительно очень сложно. Этот факт вполне объясняет то, что при приеме в вузы и на работу в ведущие IT-компании предпочитают именно олимпиадников. Логика проста. Если человек освоил построение сложных алгоритмов, изучить возможности конкретной библиотеки ему не составит труда.
    Высокая сложность в принципе предполагает, что олимпиадное программирование не для всех. Но в 1С рассматривают его именно как знакомство, элемент общей программистской культуры, а не как «спорт».
    Прежде всего, трудности в понимании возникают из-за недоговоренности.
    Очень часто бывает, что единственной возможностью разобраться в решении задачи является анализ исходного кода авторской програмы-решения. Во-первых, это весьма сложно. Конечно, обладающий хорошим опытом олимпиадник без труда увидит, скажем, фрагмент программы, который сортирует массив.
    Но новичку это сделать трудно. Значительно проще воспринимается фраза на естественном языке «далее сортируем массив».
    Очень важной особенностью этого курса является то, что приведены достаточно подробные разборы всех задач. А для первых задач каждого занятия разбор на естественном языке сопровождается фрагментами кода. То есть представляет собой фактически последовательность решения. «Быстрые» школьники обычно не читают его до решения, но и им настоятельно рекомендуется прочитать разборы ко всем задачам, потому что для многих задач предлагается несколько способов решения, некоторые из которых просты в реализации, но нетривиальны.
    Другой вид недоговоренности — фразы типа «доказательство предоставляем читателю». Часто у «читателя» сделать это не получается. В лучшем случае при этом информация игнорируется, в худшем возникает сильное раздражение, он не может успокоится, пока проблема не будет решена, а возможности решить нет.
    С другой стороны при обучении необходимо предоставить школьнику возможность мыслить самостоятельно.
    Курс алгоритмического программирования 1С решает эту проблему следующим образом. Учебное пособие фактически представляет собой рабочую тетрадь. В теоретическом разделе постоянно задаются вопросы, предлагаются задания по добавлению пропущенных команд в исходные тексты, заполнению таблиц, рисованию графов определенных типов и тому подобное. Предполагается, что на занятии в процессе объяснения теории школьник активно использует печатное пособия, делая в нем пометки карандашом. Однако ко всем заданиям и вопросам есть ответы в специальном разделе подсказок или в Справочнике.
    Для удобства и для повышения скорости разработки алгоритмов не только в печатной версии, но и в электронном виде прилагается Справочник – работающие фрагменты программ, реализующие стандартные алгоритмы. Из Справочника можно копировать. Это тоже не оставляет учеников «в одиночестве» в неразрешимых ситуациях. Может показаться, что это подход предполагает бездумное копирование решений, однако это не так. Алгоритмы в Справочнике приводятся только в стандартном виде и их в любом случае надо адаптировать к конкретному условию.

    Как устроено?


    Технически курс представляет собой методический комплекс: печатное пособие и Web-часть.
    Тематически курс достаточно стандартен.
    Сначала в первом модуле изучаются простые базовые алгоритмы типа определения простоты числа, сортировки массива.
    Далее во втором и третьем модулях следует знакомство с более сложными алгоритмами: рекурсией, алгоритмах на графах, задачами динамического программирования.
    Завершает курс четвертый модуль, в котором преимущественно рассматриваются структуры данных и алгоритмы на них, позволяющие решать задачи быстрее.
    На протяжении всего курса, а особенно в четвертом модуле, рассматриваются встроенные в язык программирования возможности, позволяющие реализовывать алгоритмы понятно и лаконично.
    Особо следует сказать о языке, который используется в курсе. Существует мнение, что преподавание алгоритмов можно вести на любом языке программирования. Это верно, но с небольшой оговоркой. Некоторые языки более пригодны для реализации алгоритмов, другие менее. Ведь в задачах по программированию важно не только придумать, но и безошибочно закодировать решение.
    Сейчас в этом плане безусловно лидирует Python – в нем много встроенных в синтаксис интересных механизмов для разработки алгоритмов и большая функциональная библиотека.
    О целесообразности использования языка Java для решения олимпиадных задач можно спорить, но в любом случае Java имеет также как и Python большую библиотеку классов, которые можно использовать для кодирования алгоритмов. Это и библиотека коллекций – встроенных структур данных — и богатые функциональные возможности, например, по работе со строками.
    До прихода Python-а в олимпиадное программирование, несмотря на то, что даже минимальная программа на Java содержит около десяти строк кода и предполагает знакомство с объектно-ориентированным подходом, многие серьезные олимпиадники предпочитали именно язык Java.
    Практически все курсы 1С для школьников построены на базе этого языка. Изучая его применение в курсах и алгоритмического и прикладного программирования, они получают универсальный инструмент для решения любых програмистстких задач.

    В целом


    Фирма «1С» предлагает еще один курс алгоритмического программирования.
    Он наверняка имеет свои недостатки, но также видны и достоинства: это попытка познакомить школьников любого уровня с алгоритмами. Об успехах говорить рано. Они есть, но времени прошло очень мало (по сути, один год), и нельзя точно сказать, что места на олимпиадах являются следствием изучения этого курса. Но тот факт, что практически никто не бросил обучение после первого или второго модуля говорит о том, что он интересен и понятен.
    Онлайн-часть курса представлена открыто на сайте informatic.mccme.ru в разделе авторских курсов под названием Фирма «1С». «Алгоритмы. Олимпиадное программирование на языке Java для школьников». Там же выложены все материалы по первому модулю в формате pdf.

    Автор статьи: Ильин Владимир Владимирович (oivt@ya.ru), учитель, Школа 179 МИОО г. Москвы
    1С: Клуб программистов
    18.37
    Company
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 2

      +1
      Владимир Владимирович, здравствуйте.

      А с какого возраста Вы преподаёте программирование и с какого возраста, по вашему мнению, стоит начинать осваивать программирование ребёнку?

        +1
        Сергей,
        Сложность олимпиад по программированию растет год от года, поэтому уже очень сложно добиться серьезных успехов, начиная «олимпиадную карьеру» в 9-10 классе. Мы дополнили курс Стартовым модулем, занятия по которому можно проводить с детьми 7-8 класса, не имеющими предварительной подготовки.
        6-й класс у нас на начинающих курсах достаточно редок (1-2 ребенка в группе).

        Only users with full accounts can post comments. Log in, please.