Как я учу детей Питону

image

Моя основная работа связана с данными и программированием на R, но в этой статье я хочу рассказать про своё увлечение, которое даже приносит некий доход. Мне всегда было интересно рассказывать и объяснять что-то друзьям, одноклассникам и однокурсникам. Ещё мне всегда просто было находить общий язык с детьми, не знаю, почему. Вообще, я считаю, что воспитание и обучение детей это одно из важнейших занятий из всех, да и жена у меня педагог. В общем, примерно год назад я дал объявление в местной группе на фейсбуке, набрал группу и стал преподавать скратч и питон раз в неделю. Сейчас у меня пять групп, свой класс в доме и индивидуальные занятия. Как я дошёл до жизни такой и как именно я учу детей, я раскажу в этой статье.

Я живу в Канаде, городе Калгари, провинция Альберта, так что некоторые моменты будут связаны с местной спецификой.

Помещение


Наличие места для занятий было с самого начала основной проблемой. Я пытался искать офисы и классы в аренду по часам, но не очень успешно. Наш университет и SAIT — местный аналог MIT — сдают классы с компьютерами и без. Цены оказались там не очень гуманные, а в итоге выяснилось, что универ не пускает несовершеннолетних, а SAIT вообще сдаёт только своим студентам. Так что, этот вариант отпал. Есть много офисных центров, которые сдают комнаты для совещаний и офисы по часам, есть целые компании, которые предлагают кучу вариантов от полноценного класса до комнатки на четыре человека. У меня были надежды, так как Альберта нефтяная провинция, у нас с 2014 года вялотекущий кризис, и многие бизнес-площади пустуют. Зря я надеялся, цены оказались настолько конскими, что я даже поначалу не поверил. Владельцам проще сидеть на пустых офисах и платить издержки, чем демпинговать.

В этот момент я вспомнил, что исправно плачу налоги, и нет ли чего там у нашего дорогого государства, точнее — у города Калгари. Оказалось, что очень даже есть. У города есть арены для игры в хоккей и прочих фигурных катаний, а в этих аренах есть комнаты, где суровые ледовые воины обсуждают стратегии будущих сражений. Короче, при каждой арене есть пара комнат со столами, стульями, белой доской и даже мойкой с чайником. Цена вполне божеская — 25 канадских тугриков за час. Я изначально решил делать занятия по полтора часа, поэтому назначил цену за занятие $35 с носа в группе на пять человек, чтобы компенсировать аренду, ну и себе что-то в карман положить. В целом, мне нравилось заниматься в аренах, это решало одну из проблем — большинство русскоязычных живут на юге, а я живу на севере города, поэтому я выбрал арену примерно посередине. Но были и неудобства. Канадская бюрократия хорошая и дружелюбная, но, как бы помягче сказать, бывает несколько неповоротливой. Нет проблем, когда привыкаешь к ритму и планируешь заранее, но иногда возникают неприятные моменты. Например, на сайте города можно удобно выбрать время и место, зарезервировать комнату, но заплатить нельзя, никак. Они сами звонят по телефону и принимают оплату картой. Можно поехать в офис и заплатить наличными. Был забавный но не очень приятный момент, когда я ждал их звонка, чтобы заплатить за второе занятие, не дождался, а в офис в последний день опоздал на пятнадцать минут. Пришлось с наглой мордой подходить к охране и врать, что комната забронирована. Мы, канадцы, верим на слово, меня спокойно пустили и не стали ничего проверять, но я бы не стал так делать, если бы люди уже не ехали на занятие.

Так я занимался зиму и весну, а потом произошли изменения, которые стали последней каплей. Во-первых, офис закрыли для посетителей и предложили принимать оплату по телефону за углом. Я просидел не менее получаса на проходе, прежде чем дозвонился. Во-вторых, если раньше милая тётенька брала у меня оплату за полтора часа, то теперь трубку взяла какая-то девка и заявила, что оплата только по часу. У меня на тот момент группа была то три, то два человека, и лишние $12.5 были вовсе не лишними. Я, конечно, идейный, но если жена меня выгонит на улицу, то преподавать будет некому. Я тогда ещё был без работы.

И я решил пойти в библиотеку. Библиотеки сдают прекрасные комнаты совершенно бесплатно, но там есть одно но — нельзя вести коммерческую деятельность. Даже благотворительные организации не имеют права собирать там деньги. Мне говорили, что это особо не контролируется, главное прямо там не брать деньги на входе, но я очень не люблю нарушать правила. Ещё одна проблема — комнаты часто заняты и сложно проводить занятия по расписанию в одно время в одном месте. Я преподавал в библиотеках лето и начало зимы, приходилось выбирать те, где есть место, в итоге я сменил пять-шесть библиотек. Потом стал бронировать место за два месяца, и то, получилось так сделать только в одной маленькой библиотечке, в остальных регулярно не было мест на нужное время. И тогда я решил сделать компьютерный класс дома. Повесил доску, купил по объявлению второй стол и пару старых мониторов. По работе мне фирма купила новый мощный ноутбук, потому что на моём компьютере анализ занимал почти 24 часа. Итого, у меня был новый старый компьютер, старый старый компьютер, лаптоп, у которого мой мелкий раздавил экран и древний нетбук, на котором экран раздавил я сам. Я их все подключил к мониторам и поставил везде линукс минт, кроме нетбука, на который поставил совсем лёгкий дистрибутив, кажется, паппи. У меня ещё есть старый новый лаптоп, купленный за $200, я его подключил к телевизору. Ещё, что немаловажно, наш хозяин недавно поменял нам окошки, и в комнате теперь вместо ужасного развалившегося убожества новые белые рамы. Гостиную, кухню и вторую спальню жена держит под детский сад, поэтому весь этаж получился чисто педагогический. Итак, теперь с помещением всё хорошо, перейдём непосредственно к преподаванию.

Скратч


Я начинаю давать основы программирования с языка скратч. Это язык, который использует готовые блоки, придуман в своё время в MIT. Большинство детишек уже видело скратч в школе, поэтому достаточно быстро осваивается. Есть готовые программы и планы занятий, но мне они совсем не нравятся. Одни странные — создай свою историю, например. Вся программа состоит из бесчисленных блоков say '<...>' for 2 seconds. Видно, что её придумали очень творческие личности, но с таким подходом можно научить писать классический индийский спагетти-код. Я же с самого начала рассказываю про принципы типа D.R.Y. Другие сборники заданий вполне хорошие, но детки быстро вникают в суть и начинают делать их как из пулемёта. В итоге, за один урок делают то, что должны были за пять. А на поиск и отбор заданий уходит много личного времени. Вообще, скратч больше напоминает не язык, а IDE, где надо просто запомнить, куда кликнуть и где что искать. Как только ученики более-менее осваиваются, я стараюсь перевести их на питон. У меня даже семилетняя девочка на питоне простые программы пишет. В чём я вижу пользу скратча — в нём такие есть основные понятия, которые усваиваются в игровой форме. Почему-то всем без исключения очень трудно понять идею переменной. Я поначалу быстро пробегал эту тему и шёл дальше, пока не сталкивался с тем, что они вообще не знают, что с этим делать. Теперь я уделяю переменным много времени и постянно к ним возвращаюсь. Приходится заниматься тупым долбежом. Я на экране меняю разные переменные и заставляю говорить их значение. Также в скратч есть контрольные структуры и проверки значений, типа while, for или if в питоне. Они даются достаточно легко, только с вложенными циклами бывают проблемы. Я стараюсь давать несколько задач с вложенным циклом, и чтобы действие его было наглядно. После этого я перехожу к функциям. Даже для взрослых понятие функции бывает неочевидное, а для детей — тем более. Я долго распинаюсь, что такое функция вообще, рассказываю про заводик, которые получает на вход предметы, а выдаёт товары, про повара, который из сырых продуктов делает еду. Потом мы делаем программу «сделай сендвич» с продуктами, а потом делаем из неё функцию, которой продукты передаются как параметры. На изучении функций я заканчиваю со скратчем.

Питон


С питоном всё проще. Есть хорошая книжка Python for Kids, по ней я и учу. Там всё стандартно — строки, порядок операций, print(), input() и т.д. Написана легким языком, с юмором, детям нравится. У неё есть недостаток, свойственный многим книгам по программированию. Как в известной шутке — как нарисовать сову. Овал — круг — сова. От простых понятий слишком резкий переход к достаточно сложным концепциям. У меня на то, что объект скрепляется с методом точкой, уходит несколько занятий. С другой стороны, я не тороплюсь, повторяю одно и то же на разный лад пока не сложится хоть какая-то картина. Я начинаю с переменных и снова долблю их, уже на питоне. Переменные это какое-то проклятие.

Сообразительный студент, который пару месяцев назад ловко щёлкал переменные на скратче, смотрит, как баран на новые ворота и не может сложить икс с игреком, которые строчкой выше явно на доске написаны. Повторяем! Что есть у переменной? Имя и значение! Что значит знак равенства? Присвоение! А как мы проверим равенство? Двойной знак равенства! И так повторяем снова и снова, до полного просветления. Потом переходим к функциям, там дольше всего занимает объяснение про аргументы. Именованные аргументы, по позициям, по умолчанию и так далее. До классов мы ещё ни в одной группе не дошли. Кроме питона по книжке мы изучаем популярные алгоритмы, об этом дальше.

Собственно, обучение


Урок у меня устроен так — полчаса я даю теорию, проверяю знания, закрепляю пройденное. Час — лабы. Часто я увлекаюсь и вещаю до часа, тогда на практику остаётся полчаса соответственно. Когда я учил питон, я просмотрел курс Алгоритмы и Структуры Данных Хирьянова из МФТИ. Мне очень понравилось его изложение и структура лекций. Его идея такова — фреймворки, синтаксис, библиотеки — устаревают. Архитектура, командная работа, системы контроля версий — пока рано. В итоге остаются алгоритмы и структуры данных, которые давно известны и будут всегда в похожем виде. Я сам из институтского паскаля только интежеры и помню. Так как у меня ученики в основном юные, от семи до пятнадцати лет, я считаю, что для их будущего важнее заложить основы, чем поскорее написать платформер на питоне. Хотя, им больше хочется платформер, и я их понимаю. Алгоритмы я им даю простые — пузырёк, бинарный поиск в сортированном списке, обратная польская нотация с помощью стека, но мы каждый разбираем очень подробно. Выяснилось, что современные дети не знают в принципе как устроен компьютер, тоже рассказываю. Я стараюсь в каждой лекции связать несколько понятий вместе. Например, компьютер — пaмять/проц — память из ячеек (даю подержать плашку памяти, угадайте, сколько здесь ячеек) — каждая ячейка как лампочка — есть два состояния — true/false — and/or — бинарная/десятичная — 8бит = 1байт — байт = 256 вариантов — логический тип данных на одном бите — целые числа на одном байте — float на двух байтах — string на одном байте — самое большое число на 64 битах — список и кортеж из предыдущих типов. Я оговариваюсь, что в реальном компьютере всё несколько иначе и другое количество памяти для этих типов данных, но главное, что мы сами в процессе создаём более сложные типы данных из более простых. Типы данных это, пожалуй, самое сложное, что надо запомнить. Поэтому я каждое занятие начинаю с быстрой разминки — один ученик называет тип данных, следующий приводит два примера, и так по кругу. В итоге я добился того, что даже самые юные детишки бодро кричат — float! boolean! seven, five! pizza, car! Во время лекции постоянно дёргаю то одного, то другого, иначе они быстро начинают ковырять в носу и смотреть в потолок. Да и уровень знаний каждого надо проверять между делом.

Мои ученики не перестают меня удивлять как своей тупостью, так и неожиданной сообразительностью. Сообразительностью, к счастью, чаще.

Хотел написать больше, но и так простыня получилась. Отвечу с удовольствием на все вопросы. Любую критику всячески приветствую, только просьба — быть терпимее друг к другу в комментариях. Это добрая статья.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 91

    +11
    Добрая статья, может превратиться в очень полезное дело. Вы достаточно хорошо потрудились, перетрусив много материалов и знаете, что годно, а что нет, чтобы сделать курс для детей. На вашем месте, я теперь не спеша закрепил бы эти знания, опыт и навыки в виде методички (минимум) или в виде книги (план максимум)
      +2
      Я хочу начать с простеньких презентаций, которые можно показывать на экране в классе. Потом и методички на их основе можно сделать.
      А вообще, я изначально собирался открывать нон-профит и учить детей бесплатно, узнавал, что для этого надо, но пока не до того. Но в планах есть.
      0
      В штатах, полагаю в Канаде тоже, как вариант еще можно арендовать комнату в community center. Либо может быть как бенефит для апартментов, кондо, ассоциации домовладельцев или муниципальная штука.
        0
        Узнавал, дорого!
        Ещё есть церкви. Тоже дороговато.
        0
        О каком возрасте идёт речь?
          0
          У меня сейчас пять групп — 7-8, 8-11, 11-12, 12-14 и 15+ лет.
          Была группа со взрослыми, но они очень быстро начинают различаться в уровне и одни не справляются, а другие теряют интерес. Теперь я с детьми занимаюсь в группах по выходным, а со взрослыми индивидуально на неделе.
            +1
            Тормозят на точках и переменных все группы или определенные возрасты? Я помню как нам в университете классы сломали лицо на два месяца. С точками как-то проблем не было.
              0
              Абсолютно все. А когда освоят само понятие переменной и методы работы с ней, то очередной слом мозгов это конструкции типа х=х+1. Помогает то, что до этого мы проходим логику на теории, и я говорю, что = это не ==. Но всё равно, очень неочевидная штука.
                0
                Убери знак равенства, замени функцией.
              +1

              я сам тоже веду группу детей. У них тоже быстро начали различаться уровни, хотя группа состоит из детей с большой разницей в возрасте от 10 до 14 лет.

            +3
            Я тоже с питона начала. Мне оказалось сложнее понять, как взаимодействуют приложения, чем как писать код. Куда его потом пристроить, чтобы например ваш код проверял курсы валют на сайте ЦБ. Вы учите этому?:)
              0
              Мы ни в одной группе не прошли основы, поэтому пока учу, как писать код вообще. Нас задерживает то, что я налегаю на теорию, с прицелом на далёкое будущее студентов.
              В младших группах финальным проектом предполагается игра — простой платформер, где человечек бежит. В старших я собираюсь учить тому, что сам умею — данные и искуственный интеллект. Там финальным проектом будет нейросеть на тензорфло, распознающая объекты на видео. Но до этого так далеко! :) Пока мы учимся циклы фор писать.
                +14
                Детям важна практика. Пока они не поймут зачем им это — толку не будет.
                Из практики в дальнейшем вырастет теория, как это ни странно звучит.

                Нужно что-то, что покажет, «а накой мне это цикл»?
                Вот как egor_zm ниже пишет: нужны иллюстрации, которые покажут «а что из этого можно сделать?»
                  0
                  Полностью согласен. Особенно, если на контрастах показывать. Дети очень сильно воспринимают такие вещи.

                  Создаем тупую задачу, допустим, «Кликать кнопку, когда она зеленая», по мере кликанья (ручного) выделяем и хвалим перед всеми самого упоротого внимательного и терпеливого. Можно еще подкрепить похвалы каким нить ништяком, типа шоколадки, жвачки, банки колы, етс…

                  А когда все становятся упоротыми начинают внимательно и упорно кликать, дабы заработать ништяг, начинаем рассказывать про алгоритмы и автоматизацию ) И что в пару строк можно себя избавить от надобности тупить в экран, пусть за этим следит кусок кода, зарабатывая вкуснятину своему кодеру.

                  В общем, обучение + дети, это игра, прежде всего. А если это игра с подкреплением (ага, вот он, метод обучения ИИ), то это игра^2. Да и ребенок под впечатлением запоминает сильно больше, чем если ему долго и нудно вдалбливать информацию.
                    0

                    Это так не работает. Вы пробовали, прежде чем советовать?
                    Если давать изначально тупую задачу, то ее просто не будут делать.
                    В таком формате время нерационально расходуется. Нужно сначала надрессировать на получение награды таким странным способом, а потом еще и дождаться всех остальных.
                    Кажется проще будет сразу рассказать "вот мы можем тут кликать, а можем сделать бота, который будет кликать".

                      0
                      Еще как сработает. Только надо чтоб кликал один доброволец заданное количество раз (200 раз, например). Также он не должен знать о последующей награде за это. По окончании действа выдаем ништяк (сникерс, например), чем подталкиваем детей к дальнейшей активности на занятиях (можно один сникерс в пару\через пару). Затем показываем и запускаем небольшой скрипт, делающий то же самое и показываем разницу во времени выполнения между человеком и машиной. Озвучиваем, на сколько быстрее и проще он мог получить свой приз. Дело сделано — дети знают что такое и зачем нужна автоматизация, ЯП и т.д. + мотивированы на активность.
              +6
              Вы используете метод аналогий, когда рассказываете детям про функции. Это очень хороший метод. Его, например, часто любил использовать Иисус Христос, когда учил своих апостолов. Вы можете использовать его более широко, потому что он очень подходит для обучения детей, т.к. как их картина мира ещё не развита, поэтому им легче опираться на то знание, которое они уже имеют. Переменная чем-то похожа на коробку, в которой спрятали какое-нибудь животное — какое именно никто не знает (любой вид животного по порядку из какого-нибудь справочника), а может быть там вообще никакого животного нет (0). Метод аналогии (трансдукции) в целях обучения детей активно использовал Льюис Кэррол… Он создал целый трансдукционный мир из знакомых для маленькой девочки объектов, чтобы проиллюстрировать и объяснить ребёнку законы логики… Да, иллюстрации… Это тоже очень сильное средство для развития мышления. Многие инженеры, например, часто предпочитают рассматривать картинки с данными, фотографии, характеристики объектов в графическом виде, прежде, чем создавать что-либо в коде или на бумаге. В идеале программирование как навык должен быть надёжным товарщем для творческого воображения и полёта мысли. Спасибо за статью.
                +2
                Я буквально так и говорю — коробочка с лего, на ней написано название :)
                Учту ваш комментарий, спасибо!
                +2
                Очень крутое начинание и как прекрасно виден ваш «запал». Я через похожее проходил, когда преподавал иностранные языки :) И так же анализируешь учебные материалы и так же понимаешь, что 99% учебников просто «не то», начиная делать свои собственные материалы. Кстати, место я тоже часто находил именно в библиотеке в итоге (к сожалению для народа, и к счастью для меня в тот момент, — туда уже мало кто ходит).

                Вы большой молодец, с удовольствием бы почитал продолжение. Например, кто ваши студенты и как обстоят дела с мотивацией? Я с детьми не работал (у меня было в группах пару подростков), но знаю, что все малята приходят на занятие потому, что их туда посылают родители, которые сказали «надо», — это так? Ведь, одно дело рассказать материал, а другое — как-то мотивировать учащихся, чтобы им было интересно. Какие у вас методы?
                  +1
                  Я, в свое время, так ходил на спортивные танцы, потому что родители сказали, что им сказал доктор в школе, что я гиперактивен >_<

                  А вот в кружок (ага, середина 80х — начало 90х) я с радостью ходил в кружок естествознания, а еще мне нравилось в зоологический кружок ходить, там давали потискать живых змей!, показывали, как выглядит оставшаяся шкура рептилии после линьки, в общем, много интересного было ) Нас постоянно возили по каким то тематическим музеям и выставкам. И это реально было интересно и познавательно.

                  А вот спортивные танцы так и не удались. Я, однажды, сказал преподавателю все, что я о нем думаю, а потом все то же самое повторил своим родителям ) И больше они меня в «свои» кружки не отправляли, только в мои )
                  +1
                  Очень трудно читать сплошную простыню текста. Разделите текст абзацами и отступами в начале строки.
                  По делу статья очень интересная и вы большой молодец!
                    0
                    Мне жаль. Я писал статью на одном дыхании и закончил в 2:30 утра. Еле сил хватило заголовки расставить.
                    В следующий раз обязательно учту ваши советы.
                      +2
                      Не бойтесь отложить статью в черновики и доработать в свободное время…
                        0

                        С такой стратегией, статья скорее всего не выйдет вообще. Пусть лучше выйдет с опечатками и один абзац. Слишком мало материалов на эту тему, чтобы ещё привередничать.

                          0
                          Ну писать статью целиком за один присест — как-то слишком…
                          Лучше написать, дать недельку отлежаться, перепроверить, украсить и публиковать…

                          Почему за один подход статью опубликовать можно, а за два нельзя?
                            0

                            Не разбирался почему так происходит. Просто ловлю себя на том, что стопка черновиков, которым я дал недельку отлежаться, растет, а публикую я только то, что написано спонтанно.
                            Перфекционизм иногда не отпускает.

                              +1
                              Может добавить правило «Не доработал черновик за месяц — публикуешь как есть»?
                              0
                              Как-то времени не хватает с основной работой и проектом. Мы ещё недавно были в Мексике, отдыхали от зимы. На работе меня честно не трогали, только желали хорошо отдохнуть. Да и без меня всё работало, как часики, только новые фичи не внедрялись. Но всё равно, отстал от графика и времени нет ни на что. Неожиданно на то, чтобы организовать восемь новых студентов в группы, ушла куча времени. У всех кумон и хоккей.
                              Я понял, что если не допишу сейчас, то не выложу никогда. Так что, звиняйте ;)
                            0
                            Я лучше ещё напишу :)
                        0
                        -
                          +1
                          Обучал пару ребят (взрослых), всем тяжело заходил цикл for, а именно когда нужно счетчик двигать, ох я там метафор генерировал :)

                          Самое забавное — сам я легко воспринял эту тему, когда верстал себе свой интернет-магазин и нужно было массив товаров вывести в шаблоне — это была готовая ЦМС и все было и как-то логично в шаблонизаторе и понятно это зашло (я тогда что такое переменная то и не знал толком и изучением программирования занялся несколько позже). И вот потом столкнулся с упругостью этой темы у других :) Может все дело в том, что в foreach сокрыта часть сложности…

                          А как вы объясняете абстракции? Эту тему в школе обходят стороной как правило… И понятие абстракции у всех оочень не сформировано.
                            +2
                            Поделюсь своим опытом по пути.

                            1. Когда тренировал «напарников», вопрос абстракции стоял особенно остро, так как именно эта тема связывает мышление человека с кодом и моделированием реального мира. «Напарники» воспринимали программирование, как какой-то умный код для вычисления последовательности действий. Но предложение «запрограммируй мне любовь или математику или кошку или яблоко...» просто ставило их в тупик.
                            2. Решилось довольно просто. На протяжении месяца играли в игру подобную этой. {«колеса: 2, руль: true, name:'Аист'»} — угадайте что это. Потом 2 недели заставлял составлять цепочки вверх и вниз подобные этой на любую тематику "… шалаш — здание — техническое сооружение — материальность — бытие — вселенная… "
                            3. После этого «напарники» спокойно уже на автомате могли любую вещь из мира замоделировать и превратить в код. ООП подтянулось незаметно и без боли.
                            4. Теперь они других гоняют по терминам «абстракция», «сущность», «модель», «объект» «прототип» и т.д.
                              +2

                              Хороший и дельный совет, спасибо большое — редко задаю вопросы, обычно отвечаю :)
                              Но конечно, куча нерешенных моментов есть у самого, интересный подход у вас — запомнил

                              0
                              Может, цикл for учить с while, а потом пустого for(,,,)? И потом постепенно условие и счётчик перемещать из тела на свои места.
                              +1
                              Спасибо, хорошая статья, и идея хорошая!
                              Пишите ещё! Не бойтесь писать много, мне показалось, что статья только-только началась, а уже конец))

                              Больше картинок! Показали бы фотки, какие были условия в разных местах, набор железяк — это всё, хоть и не несёт особо информации, но лучше создаёт атмосферу и эффект погружения в историю))
                                +1
                                Спасибо!
                                Так и сделаю :)
                                0
                                не пробовали делать видео лекций? или слайды? (я так понимаю — там по 2-5 минут теории есть)
                                  +1
                                  Видеолекции — конечно думал, но это в дальней перспективе. Я просто не уверен, насколько я фотогигиеничен. Во время лекций я иногда замерзаю, или мычу что-то своё. Дети воспринимают это органично, а на видео может выглядеть ужасно. Надо пробовать, но потом. Сначала, действительно, надо сделать слайды. В R даже есть пакет slidify, который делает слайды. Свой сайт vlasov.ca я в R сделал, например. Но в слайдах там единственное удобство, что легко код можно вставлять. В итоге, самым простым и доступным оказался поверпойнт, у меня подписка на офис 365. Буду делать презентации. В итоге я хотел бы выложить всё в открытый доступ. Изначально идея была дать как можно большему количеству детей компьютерное образование. С нонпрофитом не сходится пока, к сожалению.
                                  +1
                                  >>Почему-то всем без исключения очень трудно понять идею переменной.

                                  >>Приходится заниматься тупым долбежом

                                  Из моего опыта — я описываю идею переменной как яшик, куда можно положить различные предметы/числа. Потом усложняю — яшики разного размера — не все предметы/числа туда входят. Потом опять усложняем — яшики еще и разной формы, а предметы не только числа, но и строки например, так что «строка» не влезет в ящик предназначенный для числа (да, да — несмотря на то, что в моем случае это JS), потом на коробочках появляются надписи ну итд. Я не уделяю специального внимания понятию «пременная» — вместо этого, я даю объяснения и пояснения ситуативно — рано или поздно дойдет

                                  >>Даже для взрослых понятие функции бывает неочевидное, а для детей — тем более

                                  И не говорите… я использую разные аналогии — ну вроде ваших заводов. Только функция она не всегда возвращает результат, и даже если возвращает, последствия ее применения могут быть значительно больщими нежели значение этого результата (на функциональном программирования свет клином пока не сошелся). Так что я акцентирую внимание на «действиях по приказу».
                                    +2
                                    Спасибо за добрую статью! Есть вопрос. Вы обучаете русскоязычных или всех кто имеет желание учиться?
                                      0
                                      Начал вести англоязычные группы. Тут наши детки английский лучше воспринимают, чем русский, да и мне проще, не нужно дублировать понятия. Просто многие хотят ещё и родной язык подтянуть, потому предпочитают занятия на русском.
                                      +1
                                      Посмотрите вот эти два курса:
                                      ru.coursera.org/learn/interactive-python-1
                                      ru.coursera.org/learn/interactive-python-2
                                      Очень не стандартный подход, изучается Python через программирование мини-игр, думаю детям будет весьма интересно.
                                        0
                                        Спасибо!
                                        Курсеру я очень уважаю.
                                        +1
                                        По моему опыту, лучше всех суть переменных раскрывает отладчик, показывая их изменения шаг за шагом. Циклам проще учить через подобный код: for i := 1 to 10, чтобы было сразу видно начальное и конечное значение и не видно изменения переменных. Не зря в паскале есть эта конструкция. Вложенные циклы на первых порах лучше упрощать функциями, так по крайней мере можно выбросить из головы часть переменных.
                                          +1
                                          По поводу ООП. У нас в 90-х в школе был экспериментальный класс и преподавали программирование в начальной школе. Так вот во 2-3м классе изучали ООП и алгоритмы. И алгоритмы шли намного хуже, чем классы и наследование. Т.е. на самом деле как раз ООП куда более интуитивная история для детей. Хотя, с другой стороны, понимание ООП без умения написать программу достаточно бесполезно… А в питоне так и вовсе модуль, что статичный класс, если не вникать. Так что фокусироваться на ООП может сегодня и не надо, довольно переоцененная в 90х концепция программирования, как мне кажется, породившая не меньше проблем, чем пользы.
                                            –1

                                            Что я понял из этой статьи:


                                            • педагогического опыта нет, программерский?
                                            • места нет или дорого
                                            • за час $35

                                            Чему учите, где и как?

                                              0
                                              • Педагогического опыта нет, по всем вопросам консультируюсь с женой, она учитель английского по образованию. Теперь, можно сказать, что у меня педагогический опыт — один год.
                                              • Место теперь есть, на фотке в заголовке мой класс у нас в доме. Жена держит детский сад, я — кружок, у нас весь этаж нежилой. Уже недорого, даже четверть расходов на дом спишу, а это приличные деньги. Только одна аренда $1100.
                                              • За час теперь $30. Раньше я включал лишние $5 чтобы аренду перекрыть, в библиотеках это шло мне бонусом, а теперь, когда классы у меня на дому, я снизил цену. За индивидуальные занятия осталось $35, но они по будням, не всем подходит.

                                              Учу Scratch и Python.
                                              +1
                                              Хотя, им больше хочется платформер, и я их понимаю.

                                              Мне кажется, это основной момент. Для детей необходимо постоянное поддерживание интереса и постоянный цикл, в духе:
                                              Выучил -> сделал -> Мгновенно получил фидбек в виде дофаминового пряника -> поставил себе новую интересную задачу.

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

                                                +2
                                                А не было ли мысли учить детей более практическим штукам — например сразу разработке игр на несложных в освоении движках, типа "Instead" или "Godot"? В моей практике преподавания выявился такой факт, что программирование, как общая дисциплина, гораздо лучше заходит, когда получен ответ на вопрос «зачем»? И дальше уже алгоритмы усваиваются гораздо успешнее.
                                                  0
                                                  Возможно. Спасибо за ссылки!
                                                  Дело в том, что тут везде учат на этих языках, поэтому студенты, которые ко мне приходят, почти всегда знают, как ими пользоваться. Простенькую игру типа «догони меня» мы делаем на втором занятии, детям нравится.
                                                    0
                                                    Ну, Instead на Lua, Godot — на питонообразном GDScript. Всё вполне мейнстримно.
                                                  +2
                                                  Почему-то всем без исключения очень трудно понять идею переменной
                                                  Переменные это какое-то проклятие
                                                  ИМХО, всё дело в том, что вы учите языку с динамической типизацией. Сложно понять суть абстрактной переменной, но что такое «строка» и «число» вам ответит любой школьник, даже не знакомый с программированием. По моим наблюдениям, у детей изучавших Паскаль, не было никаких трудностей с пониманием переменных.
                                                    0
                                                    «Парадокс выжившего» как есть. У остальных детей были проблемы собственно с «изучением Паскаля» — но эти самолёты не дотянули до аэродрома и остались безвестными.
                                                      +1
                                                      Если у кого-то возникнут проблемы с изучением Pascal, то с Python или JS этих проблем станет только больше, во многом благодаря сложности динамической типизации.
                                                        –1
                                                        Ещё раз: «Парадокс выжившего». ( извините, мы, типа, на-хабре и вы-хабрены, так что сурцы найдёте при желании, а при нежелании — должны бы минусов отхватить, таков закон.

                                                        Мы просто не знаем (и не имеем возможности узнать) о фатальных проблемах. Есть один кекс, если хотите мозг сломать — Левенчук Анатолий. Мелкий такой миллиардер из Жмеринки.

                                                          0
                                                          Не хотел мешать вашей беседе, просто из своего опыта замечу, что я в своё время в университете учил паскаль, и по моим ощущениям питон легче заходит ученикам.
                                                            0
                                                            Совершенно с Вами согласен.

                                                            В моей личной истории причудливо закольцевались Фортран (77) и Пи(ай)тон.

                                                            За что Питон ругают (нестрогая типизация), то отчего-то ускоряет разработку в «тяжёлых к вычислениям» научных и финансовых областях. Потому что — ага, пользователи чётко знают что им надо здесь и сейчас — и не допускают элементарных ошибок вроде смешивания типов и парадигм в рамках проекта. У них невозможно спросить «проверил ли ты укладку парашюта» — зависнут, тупые. Потому что проверяют рефлекторно, в момент создания вычислительного класса.
                                                              +2
                                                              За что Питон ругают (нестрогая типизация)
                                                              У Python типизация динамическая (все типы выясняются уже во время выполнения программы), но СТРОГАЯ (язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования).
                                                              Вот хорошая статья по типам типизации
                                                        0
                                                        Динамическая типизация сама по себе не проблема, проблемой она становится когда она при этом слабая (не строгая) с неявным приведением типов, как в JS.
                                                        Мем заезжен, но актуальности не потерял
                                                        image

                                                        Такой жести в Python нет, при попытке складывать строку с числом без явного приведения типа будет показана понятная ошибка, а не «магия» как в меме выше.
                                                    0
                                                    Прекрасное начинание, а главное вы не пасуете перед неизбежными трудностями.
                                                    У меня есть несколько вопросов: Насколько различаются по наполнению курсы для самых маленьких, и условно говоря для самых старших? На каком моменте заканчивается курс? Чьё внимание легче удерживать, у малышей или в старшей группе? Не задумывались о том чтоб взять за основу заданий на занятия взять книгу Жака Арсака «Программирование игр и головоломок»?
                                                    Спасибо!
                                                      –4
                                                      Автор, за что ты так не любишь Пайтон. Какой ещё питон? Разве после этого можно называть себя программистом? Не удивлюсь если Джаву ты Явой называешь.
                                                        +3
                                                        Разве это признак хорошего программиста? Много людей так говорят, и что теперь они плохие спецы?

                                                        ps я именно так и говорю питон и ява.
                                                          0
                                                          Если человек обучает других людей и называет термины по другому, тем самым он вводит людей в заблуждение. Если автор языка называл его не в честь змеи, то надо отнестись с должным уважением к его труду, по крайней мере узнать историю возникновения, например, этого языка.

                                                          Я тоже учу детей языкам программирования и робототехнике в России, и так как обладают хорошим педагогическим опытом, то прекрасно понимаю что такое обучение и почему нужно передавать информацию так как надо, а не коверкать её. А то это дезинформация.

                                                          Но сам автор написал, что работает на английском языке и тут проблем нет, а вот для других языков нужно быть осторожным в переводе.
                                                            0
                                                            Если человек обучает других людей и называет термины по другому, тем самым он вводит людей в заблуждение.

                                                            При этом сообщество говорит иначе
                                                            И опрос от 2011 года!
                                                          0
                                                          Sorry.
                                                          I use English when I speak/write English. А по русски питон и есть питон. Впрочем, я не готов спорить о написании. Если вы считаете, что пайтон правильнее, наверное, так оно и есть. Вообще, мой основной язык R, его что по-английски, что по-русски хрен произнесёшь внятно, тем более, что я картавый :)
                                                          Кстати, джаву явой я когда-то действительно называл, когда она только появилась и в РФ джава-программистов практически не было. А теперь я на русском практически не общаюсь, только на хабре разве что.
                                                            0
                                                            Я ничего не считаю, а просто слушаю, как правильно произносят его люди, которые разрабатывают его, предварительно, прочитав историю появления названия.

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

                                                            Много есть уроков и статей, где «учителя» пытаются обучить, особенно смешно это выглядит, когда работают с математической терминологией.

                                                            Там тебе и трансформеры и склейка и разрез, джулия, Гасс и многое другое…
                                                            И всё это по нарастающей.
                                                              0
                                                              Я tuple называю картежем. Я сам учился по лекциям МФТИ и использую терминологию оттуда. Вот только Хирьянов говорит правильно — пайтон. А я привык, питон и питон… А про историю я знаю, конечно. И про Гвидо, и про Монти Пайтон. Я их ещё на кассетах смотрел. Вот недавно Терри Джонс умер, жалко.
                                                          +1
                                                          Спасибо! Прочёл с большим удовольствием.
                                                            0
                                                            Очень рад!
                                                            :)
                                                            +1

                                                            Тоже учил детей на Питоне. Только они у меня в основном Lego программировали. Хорошо показала себя связка: Lego Mindstorms NXT + OrangePi Zero через USB, на ней jupyter, авторизация с LDAP снаружи. А циклы хорошо шли как обратная задача — делал прогу с рандомными цифрами и действиями в циклах и вывод раздавал детям, а они его в виде программы мне писали, потом было хорошее понимание циклических конструкций. Но многое конечно от возраста зависит...

                                                              0
                                                              Лего это хорошо, только денег жалко :)
                                                              Мы программировали micro:bit, народу нравится. Мы к нему ещё вернёмся, только нужно подрасти слегка, освоить основы.
                                                              +1

                                                              Вопрос с другой стороны — как своё чадо заинтересовать, "подтолкнуть" к таким курсам.

                                                                0
                                                                Не знаю!
                                                                Я сам сапожник без сапог. Мой мелкий не проявляет никакого интереса, я его даже на занятия таскал к его сверстникам. Какой-то глухой блок к тому, что папа говорит. А если его отдаёшь в любой кружок, он старательно делает всё, внимательно слушает.
                                                                Я рукой махнул на это.
                                                                  +1
                                                                  Сделать самому мелкую игру, типа сокобана. Или текстовую адвентюру с картинками. Для начала озадачить чадо подбором ресурсов — иллюстраций, картинок, потом вставка их в локацию, потом связывание локаций. И всё это вместе с чадом. Или получится или не получится. Весь проект дня на три.
                                                                    0
                                                                    О, сокобан! Аж ностальгия нахлынула! Я помню, в какие-то далёкие годы мне попался журнал, где была статья как написать простой сокобан чуть ли не на ассемблере. Тогда компьютеры спектрумы вроде были. У меня не было ни компьютера, ни доступа к нему. Я просто прочитал весь код и ничего не понял :)
                                                                      0
                                                                      Ну, я таки написал свой сокобан. На весьма экзотическом языке 3DML, ныне канувшем в лету, и даже впихнул туда анимацию.
                                                                  +1

                                                                  Вариант покупки франшизы школы програмирования для детей не рассматривали?
                                                                  Рекомендую обратить внимание на школу Алгоритмика — очень продвинутые ребята в плане методологии обучения по курсам Scratch и Python, есть своя платформа (очень большой плюс для обучения детей), активная сеть партнёров не только в России.

                                                                    0
                                                                    Рассматривал. С тех пор меня преследует реклама Codeninjas и т.п. :)
                                                                    У нас цены на франшизу какие-то совершенно конские. Типа — отложите для начала 150К грина… а теперь поговорим за деньги.
                                                                    Ещё франшиза сильно ограничивает свободу, а у меня свои мысли по поводу методики обучения.
                                                                    Но в будущем — почему нет.
                                                                    Алгоритмика же на русском? Мне не подходит, к сожалению.
                                                                      +1

                                                                      Алгоритмика не только на русском — проект 100% из России, но школа уже международная (больше 15 стран)
                                                                      По поводу стоимости франшизы надо предметно обсуждать с управляющей компанией, т.к. стоимость зависит от географии, где планируете работать (страна, город, отдельный район города и т.д.)
                                                                      Касательно методологии — свои мысли и представление это очень хорошо, но рано или поздно многие останавливаются именно из-за отсутствия целей и плана обучения, а на эксперименты нет ни ресурсов, ни времени. Кроме метологии есть ещё один важный момент при обучении детей — психологический. Увлечь детей достаточно просто, а вот удержать интерес и внимание гораздо сложнее — в Алгоритмике это хорошо понимают и в методологии уделяют особое внимание активностям, не связанным непосредственно с програмированием.
                                                                      Я сам в прошлом году купил франшизу Алгоритмики на небольшой город (население 100-), рассматривал скорее как хобби и личный вызов, чем как бизнес, но по прошествии почти года работы могу с уверенностью сказать, что обучение детей это очень интересно и очень непросто).
                                                                      К нам приходят дети с разной подготовкой — большинство никогда не занимались программированием, есть самоучки, есть кто занимался с фрилансерами, с других школ тоже приходят — когда начинаешь анализировать, как учились дети, проблема везде одинаковая — отсутствие базовых знаний и это печально.

                                                                        0
                                                                        Так вы из своего опыта пишете? Очень интересно, спасибо. И что? Есть спрос в городе на 100К? Если не секрет, сколько учеников?
                                                                          +1

                                                                          Да, из личного опыта пишу)
                                                                          Спрос есть, сейчас у нас занимается больше 80 детей и есть планы удвоить этот показатель

                                                                            0
                                                                            Сколько часов в неделю на ученика выходит? Большие группы?
                                                                              0

                                                                              Группы разные — от 4 до 11 детей, занятия одни раз в неделю 1.5 часа (есть курс для самых маленьких, там занятие 45 минут)

                                                                                0
                                                                                И у меня так же :)
                                                                                Только младшие — от семи лет — у меня тоже полтора часа занимаются. Я совмещаю несколько функций — учитель русского, математики, детский сад выходного дня… Полтора часа как раз нормально куда-то съездить без детей.
                                                                                Больше четырёх детей я не могу набирать в группу, не успеваю с каждым пообщаться сколько хочется. В любом случае, комната маленькая, только четыре компьютера помещается.
                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      0
                                                                      Программирование не для всех.
                                                                      +1
                                                                      Скажите, пожалуйста, вы получали для данного преподавания Alberta teaching certificate или у вас иной формат обучения?
                                                                        0
                                                                        16 years of formal education, which includes a 4 year university degree with a pre-service teacher preparation program from an approved institution.

                                                                        Нет, не получал.
                                                                        У меня это называется Shkola Koda Computer Lab, то ест, не классы, а лаборатория. Project based activity. Это вроде кружка.
                                                                        Моя жена учитель по образованию, я с ней консультировался по поводу планов уроков, методик и проч. У меня не получится вести определённюю программу, потому что студенты приходят/уходят, имеют разный уровень.Основное внимание уделяется практической работе за компьютером.
                                                                          +1
                                                                          Спасибо. Тоже интересовался темой внеклассного преподавания в Канаде как специалистом, а не учителем по профессии.
                                                                            0
                                                                            Интересовались, и что надумали? Достаточно просто открыть кружок с лего или распбери пай. Смотря, какая компетенция. Или сайты писать на хтмл. Я проводил занятия со светодиодами, батарейками и транзисторами. Объяснял логику — делали переключатель, и-или. Для копеечных микросхем можно уже программы писать. Датчик влажности и контроль полива. Нужен ещё мостик, чтобы включать помпочку, помпочка, трубки. Датчик влажности делается из двух шурупов. С распбери пай вообще очень много чего наделать можно. Но меня пока жаба душит четыре штуки покупать, а там посмотрим.

                                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                      Самое читаемое