Главное Авторские колонки Вакансии Образование
Выбор редакции:
696 7 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Главная проблема движений по массовому обучению программированию

​Computer Science vs. Computing. Мы постарались понять что не так с движением "программировать должен каждый"?
Мнение автора может не совпадать с мнением редакции

Дело в том, что общаясь с нашими потенциальными клиентами - родителями, мы слишком часто сталкиваемся с непониманием вроде «А что если мой ребенок не захочет быть следующим Марком Цукербергом? Вообще. Никогда.» Компьютер нередко ассоциируется со Всемирным злом, ну а идея о том что код может быть таким же инструментом самовыражения для ребенка, как карандаши, пластилин или конструктор Лего, кажется многим мамам и папам уж совсем далекой от реальности.

Но мы, на своем опыте убедившись в возможности кодинга превратить идею «на салфетке» в самый настоящий продукт, убеждены, что за этой идеей — будущее. Осталось только донести её до всех остальных, правильно выстроив методологию и маркетинг.

И ведь это проблема не только для нас, но и для всех остальных компаний, продвигающих программирование в массы. Очень элегантное и логичное решение проблеме предложили Евгений Брикман в своем блоге (http://www.ybrikman.com/writing/2014/05/19/dont-learn-to-code-learn-to-think/) и Симон Пейтон Джонс в выступлении TED(https://youtu.be/Ia55clAtdMs). Оба они говорят о разнице между навыком — тем, что можно применить здесь и сейчас, и дисциплиной — тем, что дает глубокое понимание мира вокруг. Очевидно, умение пользоваться микроскопом — навык, биология — дисциплина; решение квадратных уравнений — навык, математика — дисциплина. И, да, программирование — навык, а компьютерные науки — дисциплина. Никто не сомневается, что ребенку нужно учить физику не затем, чтобы стать физиком, а затем, чтобы понимать явления природы вокруг — точно так и компьютерные науки помогут объяснить явления «цифрового мира», который нас окружает. Евгений привел замечательную аналогию. Мы все, говорит он, летаем на самолетах, но получение прав на управление им никогда не входило в школьную программу. Однако на уроках физики мы узнаем, что такое гравитация, сила притяжения и давление, биология объясняет, что происходит с нашим телом на больших высотах, а история рассказывает, как и когда были созданы самолеты. И все это позволяет по окончанию школы иметь довольно неплохое представление о том, что такое самолет, как он работает, и как пользоваться им безопасно. Школа, как собрание дисциплин, учит, в первую очередь, думать.

Так чему же на самом деле стоит учиться, чтобы стать полноправной частью мира, где так много зависит от компьютеров и программного обеспечения и начать «думать, как программист»? Евгений рассматривает несколько концепций, которые, по его мнению, должны входить в школьный курс: умение решать поставленные задачи, логика, информатика, системное мышление и мышление в целом — понимание того, как устроен наш мозг, с целью его искусственного воссоздания. Многое из этого действительно затрагивается на уроках, однако слишком часто гораздо большая часть времени уделяется, например, работе с MS Office.

Программирование, на самом деле, поможет прокачать и problem solving, и логику, и понимание того, как устроены данные. Но возможны и другие, менее очевидные способы сделать овладение этими навыками более интересным и простым для детей младшего возраста. Ведь если они начнут изучать языки программирования уже обладая неким уровнем подготовки, вероятность успеха будет в разы выше.

Возьмём, к примеру, умение решать задачи так, как это делают программисты - для них алгоритм моделирования, декомпозиции и собственно решения задачи доведён до автоматизма. Детям же можно предложить осваивать этот алгоритм постепенно, в процессе игры. Именно так и действуют обучающие игры с "обратной" механикой, которые уже используются для изучения программирования. Так, перед ребёнком ставится привычная задача, с которой он мог бы столкнуться в любой другой игре: дойти до определённой точки, нарисовать фигуру, выполнить любую другую последовательность действий. Но если обычно каждое действие последовательности происходит сразу после его выбора - нажал - шаг, нажал - прыжок, то здесь нужно выстроить алгоритм ещё до того, как что-либо придёт в движение. Такая простая механика учит находить цель задачи - ставить вопрос - и моделировать ее решение в голове.

Конечно, в подобной методике нет ничего нового, но она работает, и поэтому в своей первой игре мы решили начать с неё. Но гораздо более интересная задача и для нас, и для всех, кто связан с преподаванием компьютерных наук - это поиск новых, интересных и креативных способов обучения "програмисткому мышлению", которое способно открыть перед следующими поколениями массу дверей.

А что вы думаете по поводу текущего положения системы обучения компьютерным наукам/программированию? Чему вас учили в школе?

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Пора за дело!
Проект решающий проблемы начинающих бизнесменов
Юра Римский
Какие-то базовые понятия, как там внутри всё устроено, полезны любому пользователю.

Но массовое обучение программированию - какая-то ересь. Программирование всеми частями опирается на высшую математику: матричное исчисление, теория графов, теория принятия решений.

Одно дело автоматизировать какую-то задачу простым скриптом, а другое написать целую систему из взаимодействующих друг с другом сложных компонентов.

Я считаю, что каждый своим делом должен заниматься. Тем, к чему у него есть талант и любовь.
Ответить
Алексей Карпов
Соглашусь с тем, что учить всех и каждого программированию не нужно.

Совсем не соглашусь с тем, что "Программирование всеми частями опирается на высшую математику: матричное исчисление, теория графов, теория принятия решений."

Не опирается оно всеми частями. Из всего этого относительно часто попадается теория графов (удобно описывать сложные отношения между объектами). "Часто" - в моей практике не больше пары процентов задач. Линал знать для проги не нужно. Иногда удобно думать о чем-то как о матрице, но не более.
Если не стоит прямая задача работы с чем-то научноемким, то в подавляющем большинстве задач математика не пригодится.

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

Теория принятия решений в программировании и вовсе никаким боком.
Ответить
Пора за дело!
Проект решающий проблемы начинающих бизнесменов
Юра Римский
Не опирается, потому что программирование сейчас достигло достаточно высокого уровня абстракции и вся "вышка" хорошо упрятана от глаз. А зря.

Любая программа - это и есть граф. Если вам графы нужны только на паре процентов задач, значит ничего сложного вы никогда не проектировали. Ну попробуйте написать программку, где не две-три сущности, которые целиком умещаются в оперативу головного мозга, а 20-30 и все друг с другом связаны. Психушка вас ждёт.

Все игры основаны на теории принятия решений и аналитической геометрии. Без их знаний в игрострое делать вообще нечего. Вы же детей учите программированию. Что им захочется написать, кроме игры? Системную утилиту? Ну сайт ещё на PHP, да. Про игры. Там можно. Увы.
Ответить
Алексей Карпов
Абстракция - наше все. Если бы мне для написания программ было необходимо знать, как там в ассемблерах ячейки меняют состояние, тогда бы я сошел с ума. Сегодня программирование - это другая область знаний и умений.

Сложное проектировал. Повторюсь: математикой описать можно любую программу. Только зачем? На текущем уровне развития программирования для описания сложных вещей используют паттерны.

Аргумент про геймдев здесь не к месту. Программы не ограничиваются играми.
И все еще в играх не нужна теория принятия решений, если не требуется математический разбор игры.
Я не учу детей. К проекту этому отношения не имею.
Ответить
Сергей Порозов
Тогда подскажите,какие навыки необходимо развивать ребенку с раннего детства?
Ответить
Антон Секачёв
Любовь к Богу
Ответить
Екатерина К
Порядочность.
А еще умение достигать целей.
Сила воли.
Желание познавать новое.
Все эти навыки, как ни странно, вполне возможно прокачать с помощью программирования. Но только если ребенок сам выбирает, что за программу ему писать, зачем, кому она нужна, и доводит ее до конца. Если по дороге он узнает про графы, матрицы и так далее - прекрасно, но это не самоцель.

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

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.