Как развить алгоритмическое мышление

от admin

Где и как развить алгоритмическое мышление?

Привет ребят, я по образованию не технарь, но сейчас учу веб разработку. Как дошел до js и немножко изучил синтаксис заметил, что во многих задачках мне не хватает определенного уровня абстрактного мышления и алгоритмического подхода. Можете посоветовать годный ресурс/книгу/туториал где дают дельные советы по развитию алгоритмического мышления с уклоном в программирование? Речи не идет о сортировке пузырьком или алгоритмах поиска, а скорее о костяке.

Касаемо популярного совета: решай задачки, то могу ответить, что как раз это и спровоцировало написать данный вопрос.

  • Вопрос задан более трёх лет назад
  • 10540 просмотров

Простой 3 комментария

  • Facebook
  • Вконтакте
  • Twitter

sim3x

amorpho_jack,
Я намекнул, что для определения чего именно вам нехватает, вам требуется взгляд другого человека

Ваши собственные измышления, в ситуации, когда вы не можете определиться с чего начать, вам только навредят

rockon404

1. Берете задачу
2. разбиваете на последовательные операции
3. пишите код
4. PROFIT

Гуглите типовые решения задач, которые решаете. Учитесь делать запросы на английском языке. На stackoverflow есть решения как подавляющего большинства таких задач.
Книжку по веб разработке хорошую почитаете.
Еще про алгоритмы и структуры данных хорошо почитать и написать по учебной реализации каждого алгоритма/структуры.

  • Facebook
  • Вконтакте
  • Twitter

Maksclub

Советую курс по алгоритмам от МФТИ (прямо с пар запись, но хорошая):
https://www.youtube.com/playlist?list=PLRDzFCPr95f.

Крайне интересная подача и хороший уровень, на языке Python, но пусть это не пугает, я вот PHP-программист и мне все понятно

Алгоритмическое мышление

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

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

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

Что такое алгоритмическое мышление?

Алгоритмическое мышление можно понимать, как систему мыслительных приёмов направленных на решение задач. Тут скрыты две стороны понимания. Первая, определить чужой алгоритм. Вторая, построить свой. Если при решении задачи необходимо взаимодействовать с чем-либо, придётся понимать, как оно устроено. Только потом можно встраивать свой алгоритм. Трудно представить задачу, решая которую, не нужно ни с чем взаимодействовать.

Даже если вы просто пытаетесь пройти в дверь, нужно знать «алгоритм двери». Сколько людей ломилось в открытую дверь, а она открывалась в другую сторону. Просто они не задали вопрос: «А почему она не открывается?»

Для чего нужно его развивать алгоритмическое мышление?

После того, как стало ясно, что такое алгоритмическое мышление, легко ответить и на этот вопрос. Чем легче мы умеем понимать чужие алгоритмы и строить свои, тем лучше. Другими словами, полезно знать и понимать, как и что устроено.

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

Вот некоторые умения, которые требуется во многих сферах:

  • Разбиение общей задачи на подзадачи.
  • Умение планировать этапы и время своей деятельности.
  • Оценивать эффективность деятельности.
  • Искать информацию.
  • Перерабатывать и усваивать информацию.
  • Понимать последовательные, параллельные, недетерминированные действия.

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

Как развить алгоритмическое мышление?

Как и всё, что требует развития, алгоритмическое мышление нужно тренировать. Можно тренировать бессистемно, например, играя в стратегические игры. Но так развитие получается однобокое. Хуже всего будет развито понимание свойств и ограничений.

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

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

Выводы

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

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

Для достижения этой цели через обучение программированию и создан курс «Развитие алгоритмического мышления».

Проверь своё мышление

Здесь приведён хороший современный тест развитости алгоритмического мышления.

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

Люди, успешно прошедшие этот тест вряд ли остановятся на начальном развитии алгоритмического мышления. Для них разработан следующий этап – курс « Базовое программирование ».

Методика развития алгоритмического мышления младших школьников

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

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

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

Что же такое «алгоритмический стиль мышления»?

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

Нажимаем на кнопку «» — Робот перемещается на клетку вправо, нажимаем на кнопку «» — смещается влево, на «» — вверх, на «» — вниз.

Простейшую задачу управления без каких-либо затруднений решает каждый школьник.

Если такую машинку – радиоуправляемого Робота – перенести в класс, прикрепить к клетчатой доске и дать ученику пульт управления, то любой ученик в состоянии, глядя на Робота, понажимать на кнопки так, чтобы Робот спустился вниз под препятствие, объехав его. Даже ребенок, начиная с 5-7 лет, в состоянии это проделать.

Читать:
Какие утверждения относительно понятия прерывания являются правильными

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

Схема непосредственного управления

На уроке пока у нас нет Робота в «металле», учитель может играть его роль, — рисуя Робота и клетчатое поле на доске. Удобно также использовать магнитные доски — на них легко перемещать Робота и не надо постоянно стирать и рисовать его положение.

Теперь немного усложним задачу. Будем считать, что Робот — в соседней комнате или вообще далеко от нас (т. е. мы его не видим), а у нас на пульте есть специальные кнопки: «?», «?», «?», «?» и лампочка. Нажимаем на кнопку «?» — Робот анализирует, можно ли сделать шаг вниз, и, если вниз шаг сделать можно, то лампочка на пульте загорается зеленым цветом (если нельзя, — то красным). Итак, нажали на кнопку «?», если зажегся зеленый свет, значит снизу свободно, а если красный, значит снизу — препятствие.

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

Как? Известно, что Робот стоит где-то выше препятствия, обстановку не видно, размеры препятствия неизвестны. Что надо делать? Надо шагать вниз, пока не дойдем до препятствия, т. е. при каждом шаге проверять (нажимая кнопку «?»), свободно ли еще снизу (зеленый свет) или уже препятствие (красный). Как только загорится красный свет (препятствие), надо начать шагать вправо, при каждом шаге проверяя (нажимая кнопку «?») не кончилось ли препятствие. Потом спускаться вниз, проверяя наличие препятствия слева (кнопка «?»). И, наконец, сделать один шаг влево, чтобы оказаться под препятствием. Такие последовательные нажатия на кнопки даже с анализом невидимой и неизвестной обстановки доступны любому школьнику.

На уроке учитель может нарисовать обстановку у себя на листке, никому не показывать и предложить ученикам командовать. В ответ на «снизу свободно» («?») лучше сразу отвечать «да» или «нет» вместо слов «зеленый» и «красный».

Другой вариант — вызвать одного ученика, поставить его спиной к доске, на доске нарисовать обстановку и Робота (чтоб видел весь класс, кроме вызванного ученика), и предложить вызванному ученику командовать, а самому, помощью мела и тряпки исполнять поступающие команды.

Если обход препятствия «втемную» кажется слишком сложным или длинным, то можно рассмотреть только первую часть задачи — «спуститься вниз до препятствия».

На этом же примере можно показать типичные ошибки. Если ученик начинает с команды «вниз», а не с вопроса «снизу свободно?», то в ответ на первую же команду учитель вместо «сделано» может ответить:

«отказ — Робот разбился» (и тем самым дать ученикам понять, что проверять обстановку надо перед перемещением, а не после).

После 2-3 попыток подавляющее большинство учеников с такой задачей справится. Это по-прежнему «непосредственное управление»: я нажимаю на кнопки, смотрю на ответ (лампочку), нажимаю на другие кнопки и т. д. Опыт преподавания показывает, что с такими задачами управления справляются практически все.

А вот если теперь школьника попросить: «Запиши как-нибудь всю последовательность нажатий на кнопки для обхода препятствия неизвестных размеров, находящегося где-то ниже Робота», то тут-то и выяснится, что значительная часть учеников:

а) прекрасно представляет себе, на какие кнопки и как надо нажимать, чтобы заставить Робота препятствие обойти, и

б) не в состоянии четко описать (записать) эту последовательность действий.

Нет ничего удивительного в том, что алгоритм легче выполнить, чем записать.

В ситуации, когда ученику приходится решать задачи «программного управления» — жизненный опыт у школьников не накоплен, потому она и оказывается трудной.

Записать или объяснить кому-нибудь алгоритм труднее, чем выполнить работу самому.

Зачем детям алгоритмы

Мышление правильными, оптимальными алгоритмами помогает делать все быстрее и, как правило, более качественно .

анекдот про алгоритмы на экзамене по программированию

Правильные привычки – ключи к успеху

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

Умение правильно выстраивать последовательности задач, действий, событий нужно развивать еще до школы.

У детей с большим опытом разных активностей, таких как частая смена обстановки, широкий круг общения, занятия различными видами спорта, интеллектуальные игры и т.д., выстраивается «богатая» система навыков. Приобретенный опыт формирует базовые психические шаблоны поведения, владение которыми очень помогает в знакомых ситуациях.

А вот хорошо развитое «мышление алгоритмами» помогает принимать лучшие для человека решения еще и о том, как поступить в новой, сложной, незнакомой ему ситуации.

Можно ли развить алгоритмическое мышление?

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

А на школу можно рассчитывать?

В сегодняшнем мире к развитию алгоритмического мышления относятся гораздо серьезнее, чем 5-10 лет назад. В Австралии преподавание основ программирования начинается уже в третьем классе. С 2014 года аналогичные дополнительные курсы для начальных классов стали вводить во Франции. Схожие тенденции в Великобритании, Финляндии, Эстонии, Польше: детей учат понимать основные логические конструкции, обучают основам программирования уже в начальной школе.

В странах СНГ ситуация обстоит иначе, и здесь родителям приходится рассчитывать в первую очередь на себя.

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

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

Примеры задач из Лаборатории логики Logiclike

Алгоритмы помогают усвоить правила безопасного поведения дома и на улице:

жизненно важный алгоритм

Учим думать, прежде чем переходить дорогу! Найди ошибку в алгоритме…

По алгоритмам удобно учиться рисованию и другому творчеству, вырабатывать внимание к деталям:

алгоритмы в творчестве

Задание на построение алгоритма по созданию аппликации.

Знаешь правильный алгоритм — не ленись и, скорее всего, сможешь самостоятельно приготовить пирожки:

задача на построение алгоритма выпечки

Мы привели примеры простейших алгоритмов. В персональном кабинете есть более сложные и интересные.

В Logiclike дети развивают логику и мышление, учатся легко и успешно решать базовые жизненные «проблемы» и задачи.

Вполне возможно, что через 10-20 лет, благодаря хорошему старту в раннем возрасте, ваши дети найдут себя в создании новых эффективных алгоритмов для программных решений и совершат нечто значимое для себя и других людей.

Похожие статьи