5 заповедей правильного обучения программированию


Содержание

Обучение программированию с нуля: с чего начать изучение в домашних условиях

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

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

Что нужно знать «чайнику»

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

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

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

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

Особенности обучения программированию на постсоветском пространстве

После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.

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

Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:

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

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

В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.

С какого языка начать изучать программирование

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

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

Чаще всего выбор падает на язык программирования C ( си) . Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.

Рассмотрим особенности этого языка, делающего его оптимальным для изучения:

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

Проще говоря, C – это то, с чего следует начинать новичку перед тем, как научиться программированию на других языках.

Программы (компиляторы) для программирования

Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.

Вот несколько специализированных компиляторов с поддержкой языка C:

  • Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:
  • Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:
  • Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:

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

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

Тенденции на рынке программирования

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

  • Веб-программирование – здесь понадобятся знания PHP , CSS и HTML ;
  • Разработка приложений под мобильную операционную систему Andro >Java . Поэтому потребуется знание основ этого языка;
  • C# (си sharp) – дальний потомок C . На основе C# построена веб-технология ASP.net от Microsoft .

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

/dev/energy

Сайт о том, как стать программистом и как с этим жить потом

Процесс обучения программированию. Как узнавать новое и закреплять знания.

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

В этой методологии жизненный цикл программы цикличен: сначала идет анализ существующего функционала (Результаты контрольной в школе), затем создаются требования к новому функционалу(Изучение новой темы), после разрабатывается код (Решение примеров + домашняя работа), потом прогоняются автоматические тесты новой функциональности (Контрольная работа) и в конце концов обновленное ПО подвергается повторному анализу (мы вернулись к первому шагу).

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

Но вот Вы получаете заветный диплом. Кто-то уже работает, кому-то только предстоит начать поиски работы. Система обучения здесь кардинально меняется. Она становится узконаправленной. Вы больше не изучаете, скажем, ряды Фурье. Вы изучаете применение в работе используемой в компании CRM или стандарты ведения финансовой отчетности. Цель остаётся, но она перестаёт быть универсальной и может быть совершенно бесполезной в других компаниях. Мотивация также меняется. На смену сессии приходит зарплата в качестве позитивной мотивации и риск увольнения в качестве нижней границы качества работы. Помимо этого, Вы можете ставить себе долгосрочные цели в развитии своей карьеры, которые будут нивелировать риск увольнения — Ваш опыт будет на определенном уровне гарантировать Вам трудоустройство в другой компании.

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

Школьный подход к обучению
Что можно взять из школьного опыта? Конечно же, регулярность и цикличность обучения. Я постоянно говорю своим студентам о том, что простое прослушивание курса или прочтение книги не делают из Вас программиста. Вам нужна практика, которая применяется на живых примерах. Возьмите для себя за правило заниматься 2-3 раза в неделю по 2-3 часа. Это вполне приемлемый график даже для тех, кто работает и уделяет время своей семье. Но отключитесь от мира — все раздражающие факторы должны быть максимально устранены. В психологии выделяется особенное состояние Вашего сознания — состояние потока. Состояние потока — это наилучшее состояние сознания человека, в котором он сосредоточен на выбранном занятии и погружен в него.

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

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

Теперь немного о содержании занятий. Очевидно, что на первых неделях обучения Вы будете читать книги, технические руководства и реализовывать «Hello, World!» примеры. Но что делать, когда эта стадия пройдена? Здесь надо практиковаться много и также регулярно. Конечно, для новичка будет довольно сложно выдумать самому себе задачу, но в сети Интернет есть много полезных ресурсов для тренировки навыков на различных языках. Вы можете выбрать любой из понравившихся и подходящих Вам ресурсов. Вот некоторые из них:

  • Codingbat — ресурс с задачами по Java и Python
  • Topcoder — ресурс с практическими задачами на реализацию алгоритмов и решению приближенных к реальности бизнес-задач на время
  • Codewars — ресурс с практическими задачами для разных языков программирования, разбитых по уровням сложности
  • Hackerrank — ещё одна платформа с задачами на программирование
  • Сheckio — игровая платформа при поддержке JetBrains для программистов JavaScript и Python

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

Цикличность обучения также важна. Решая задачи, отмечайте технологии, которые пока Вам неизвестны, чтобы впоследствии изучить их, заполнив пробелы в знаниях. Смотрите на решения других программистов, сравнивая со своими. Будьте объективны и критичны к себе. Всегда ищите решение лучше, чем придумано Вами, но не зацикливайтесь на этом. Пользуйтесь принципом разумной достаточности. Алгоритм тут все тот же:

  1. Анализ уровня своих знаний, поиск пробелов
  2. Изучение новых областей, закрывающих пробелы в знаниях
  3. Применение знаний на практике
  4. Оптимизация решений, сравнение своих решений с чужими
  5. Переход к шагу 1

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

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

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

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

  1. Specific (Конкретной) — Вы знаете, чего хотите достичь. К примеру, «получить работу программиста».
  2. Measurable (Измеримой) — Вы знаете, как измерить результаты движения к своей цели. К примеру, «зарабатывать в месяц 100 тысяч рублей».
  3. Attainable, Achievable (Достижимой) — Вы понимаете шаги, которые нужно сделать для того, чтобы достичь цели. У Вас уже есть список навыков, материалы к обучению и практические задачи. В комплексе они дают пошаговые меры по достижению цели.
  4. Relevant (Актуальной) — Меры, применяемые для достижения целей должны быть действительно полезны. «Вам правда потребуется изучение данной технологии для того, чтобы начать зарабатывать деньги?»
  5. Time-bound (Ограниченной во времени) — Если не поставить себе сроки, то задача никогда не будет завершена. Ставьте сроки, соблюдайте их, пересматривайте их с течением времени (ведь обстоятельства могут измениться), но будьте строги и критичны сами к себе.

SMART-цели в действии

Я помогу Вам с постановкой первой цели. Согласно методологии SMART, хорошей целью будет «Изучить язык программирования N и заработать через полгода обучения 5000 рублей на первом заказе». Эта цель:

  • Конкретно описывает, к чему Вы стремитесь. После неё вполне можно поставить более сложную цель.
  • Вполне измерима, т.к. у Вас есть финансовый показатель
  • Достижима, ведь Вы четко понимаете список технологий и точки закрепления знаний по ним
  • Актуальна, ведь она позволит Вам добавить выполненную работу в своё портфолио и использовать для получения последующих заказов или прикрепления к резюме
  • Имеет deadline в полгода — это нормальный срок вхождения в среду при активном, регулярном и цикличном изучении предмета

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

Будьте в курсе новых течений. Помимо форумов старайтесь читать такие ресурсы, как habrahabr, geektimes и прочие. Но не поддавайтесь резко растущим веяниям. В мире IT существуют фундаментальные основы и столпы, которые от года к году сохраняют свои уверенные позиции.

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

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

Хорошая компания всегда заботится о развитии своих специалистов и мотивации их для работы в команде на протяжении долгих лет. Рынок IT имеет дефицит на качественные кадры, поэтому программист, который постоянно работает над уровнем и качеством своих знаний, всегда будет востребован компаниями. Также как и лояльный специалист, не меняющий место работы раз 3-6 месяцев. Компания не будет вкладывать ресурсы в человека, который уйдёт через полгода. Именно поэтому четко сформированные цели помогут и на работе. Вы должны понимать, чего хотите достичь в данной позиции. Вопрос «Кем Вы видите себя через пять лет?» должен задаваться не HR-специалистом, а программистом самому себе. SMART-цели применимы здесь как нельзя лучше.

Резюме aka TL;DR

  1. Изучайте программирование, создав для себя четкое расписание занятий: по 2-3 часа 2-3 раза в неделю
  2. Обучение должно приносить удовольствие и чувство удовлетворения
  3. Практикуйтесь в полученных знаниях много и в сложных задачах
  4. Анализируйте результаты своего обучения, всегда ищите лучшие решения и пробелы в знаниях
  5. Имейте чёткую SMART-цель и мотивацию
  6. Не стремитесь изучать всё подряд, выбирайте наиболее востребованные и необходимые технологии
  7. Постоянно совершенствуйтесь и имейте собственную стратегию развития своих профессиональных навыков

Надеюсь, моя статья поможет Вам улучшить свой процесс обучения, в котором я как всегда желаю Вам успехов!

Как правильно изучать программирование: метод Франклина

Итак, вы хотите освоить интересную профессию, погрузиться в мир цифровых технологий и получить высокооплачиваемую работу, востребованную в любой стране мира. С чего начать?

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

В XXI веке обществу нужны работники информационных технологий (IT): инженеры, дизайнеры и программисты. Кто такой программист? Это профессионал, который всегда открыт новым знаниям и готов принять быстро меняющийся мир. Сегодня это самая перспективная профессия. С такой профессией вы всегда заработаете на хлеб с маслом в любой стране мира.

Языки программирования универсальны, так что работать вы сможете где угодно: или в родной России, или в теплой Калифорнии, куда уезжают самые талантливые ребята. Если вы не попали в топ мирового рейтинга — не беда. Рядовой программист может эмигрировать в Новую Зеландию, Германию, северные штаты вроде Иллинойса или Миннесоты. Выбирайте сами, в какую страну уехать жить и работать. Или остаться на родине. Кому-то больше нравится быть первым парнем на деревне, чем последним в городе (к тому же низкий социальный статус негативно отражается на состоянии иммунной системы). Когда у вас достаточно денег, то можно и здесь прилично жить.

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

Талант программиста можно заметить в человеке, который не написал ни строчки кода. Это человек, который любит головоломки. Он любит обдумывать задачки, словно это сладкое мороженое, от которого невозможно оторваться. Каждая флуктуация нелогичности в окружающем мире — новый вызов для него. Всё нужно упростить, упорядочить и алгоритмизировать. Какими качествами должен обладать математик, описано в первых главах книги «Прелюдия к математике» У.У. Сойера. Многое из этого нужно, чтобы стать программистом.

Самообучение

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

Путь самоучки — это «метод тыка», общение на форумах, поиск единомышленников, хождение по конференциям и тусовкам-митапам. Это такой путь самурая.

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

5 заповедей интуитивного воспитания

Иногда воспитание детей похоже на соревнование: «Мой ребёнок заговорил в год и два месяца!» — «А мой в год!». Стивен Камарата, профессор психиатрии из Университета Вандербильта, в своей книге «Воспитание без шаблонов: Научитесь слышать своего ребёнка» опровергает связь между ранним развитием и умом. Опираясь на последние открытия нейробиологов, Камарата доказывает: простые и бесполезные занятия с ребёнком — самые полезные для его мозга. Это и называется интуитивным воспитанием.

Цукерберг рекомендует:  Вакансии Хpage

Ранее развитие и гениальность

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

«Многие гении не говорили до двух лет или даже дольше, начиная с того же Альберта Эйнштейна, который не говорил по крайней мере до трех лет, — пишет Камарата. — Среди других высокоинтеллектуальных и одарённых личностей, поздно начавших говорить, можно назвать лауреата Нобелевской премии по экономике Гэри Бекмана, знаменитого математика Джулию Робинсон и физика Эдварда Теллера».

Есть и обратный пример. Вундеркинд Уильям Сайдис. Он родился в Нью-Йорке в 1898 году. В два с половиной года Сайдис читал газеты, в 11 лет поступил в Гарвард, а в 12 — уже читал лекции по высшей математике. Но великим учёным он так и не стал, всю жизнь бегал от репортёров и полиции и умер в безвестности в 46 лет. Так что между ранним развитием и интеллектом во взрослом возрасте связи нет. И уж тем более её нет между ранним развитием и счастливой жизнью.

Мифы о критическом периоде в развитии ребёнка

Всем известно, что мозг ребёнка развивается только до определённого возраста. Нужно успеть до трёх (пяти, десяти) лет впихнуть в детей как можно больше навыков пока не поздно. Это полная ерунда. За десятилетия повального увлечения ранним развитием количество гениев на Земле не увеличилось. Выдающиеся люди, такие как Стив Джобс и Билл Гейтс, не раз критиковали образование, заставляющее заучивать всё больше фактов и решать всё больше однообразных задач.

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

Попытки искусственно ускорить развитие ребёнка ведут к нарушению естественного развития

Ещё 40 лет назад профессор педагогики Луи Нельсон доказала, что попытки ускорить развитие приводят к краткосрочным преимуществам, не сохраняющимся надолго. А дети, которых раньше времени пытались чему-нибудь научить, быстро теряют интерес к учёбе.

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

Интуитивное воспитание и развивающие программы

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

В 2010 году Ассоциация психологических наук (Association for Psychological Science) провела исследование, в котором обучение с помощью DVD сравнивали с естественным обучением. Результаты были опубликованы в статье «Действительно ли дети учатся с развивающими программами?» (Do Babies Learn From Baby Media?). Выяснилось, что «дети, которые в течение месяца смотрели DVD, выучили столько же новых слов, сколько дети из контрольной группы». Лучшие результаты в обучении были достигнуты без всяких развивающих видео: когда родители учили детей новым словам во время повседневной деятельности.

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

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

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

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

5 заповедей интуитивного воспитания

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

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

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

4. Родители знают: ребёнок должен ошибаться, чтобы научиться чему-либо.

5. Родители гордятся своим ребёнком и с удовольствием общаются с ним, независимо от его темперамента и стиля обучения. Девочки и мальчики понимают: их мамы и папы помогут им, если надо. Но вообще-то, от них ждут самостоятельного решения проблем.

Правильный курс по программированию. Каким он должен быть?

С 2008 года мы учим школьников программированию и web-разработке. За это время многое изменилось – некоторые языки исчезли, уступив место новым и более перспективным, резко вперед шагнули веб-технологии, профессия «программист» уверенно заняла первые строчки во всех рейтингах. Но одно осталось неизменным – за эти годы мы только укрепили понимание, какими должны быть «правильные» курсы программирования для детей.

5 критериев эффективного обучения

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

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

За годы работы мы сформировали 5 факторов, которыми определяются эффективные курсы программирования. Они перед вами:

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

Кроме собраний, мы практикуем и другие способы донесения информации – личные собеседования, консультации по телефону, e-mail и в нашей группе ВКонтакте.

Интерес. Если человеку что-то неинтересно, он никогда не изучит это до конца. Это очевидная истина. Он может ходить на занятия «за компанию» с друзьями или просто потому, что родители сказали «надо». Но вот пользы от такого обучения – ноль. Кроме того, даже сильный интерес может угаснуть, если у ребенка не будет получаться выполнять задания – сначала он начнет искать решения в интернете, списывать у соседа по парте, а затем и вовсе бросит учебу.

Наша задача – разжечь интерес к программированию. Как мы это делаем?

  • Во-первых, визуализируем информацию: графики, диаграммы, таблицы, схемы – все это позволяет значительно лучше воспринимать материал.
  • Во-вторых, практикуем «игровые» задания. Речь идет не только об обучении 6-классников, но и вполне взрослых ребят – даже на курсе «Программирование на C++» наши студенты чаще пишут игры, чем прикладные приложения.
  • И, в-третьих, мы ставим конкретные цели. Ими могут стать создание интернет-магазина при изучении web-программирования, разработка приложения «Рабочее место врача-офтальмолога» на занятиях по Python, создание анимационного ролика на курсе «Пользователь ПК». Цель должна быть четкой, достижимой и измеряемой – это значительно подстегивает интерес.

Схемы, таблицы и графики помогают лучше воспринимать информацию

Практика. Наши занятия на 80% состоят из реальных заданий. Мы не зубрим главы из методичек, не читаем полуторачасовых лекций, не заставляем учить названия всех библиотек, подключаемых к среде разработки. Все, что студент забудет в теории, он легко найдет в Гугле, прочитает в документации или просто спросит у преподавателя. Но мы даем «боевые» задачи, решение которых приближает к главной цели – освоить программирование на практике, понять, как эти навыки можно применить в профессиональной деятельности.

Мотивация. Со временем интерес может угаснуть, и наша обязанность – постоянно поддерживать мотивацию. Здесь работают разные методы: простая похвала после удачного решения задачи и ободрение при неудачах, знакомство ребят с реальными историями успеха их старших «коллег». Иногда к нам приходят руководители и сотрудники IT-компаний Новосибирска и Омска и рассказывают школьникам о том, как круто и престижно работать в этой сфере.

Конечно, замотивировать 100% студентов нелегко. Но мы к этому стремимся.

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

Разумеется, мы практикуем не только итоговый, но и промежуточный контроль знаний, однако и здесь делается упор на практику – в течение учебного года ребята выполняют реальные задачи, изучают чужой код (мы называем это Code review), проходят тесты.

Скриншот главной страницы сайта, выполненного нашим выпускником в качестве итогового проекта

Не менее важна и обратная связь – наши преподаватели организуют чаты в slack’e, где студент в любое время может задать вопрос и получить ответ. Кроме того, мы всегда в диалоге и по другим каналам связи – ВКонтакте, по email и по телефону.

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

Методы обучения программированию Текст научной статьи по специальности « Народное образование. Педагогика»

Аннотация научной статьи по народному образованию и педагогике, автор научной работы — Гладков Владимир Павлович

Рассматривается методика выработки качеств , необходимых программисту

Похожие темы научных работ по народному образованию и педагогике , автор научной работы — Гладков Владимир Павлович,

Текст научной работы на тему «Методы обучения программированию»

Пермский государственный технический университет

МЕТОДЫ ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

Рассматривается методика выработки качеств, необходимых программисту.

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

По-прежнему распространены характерные ошибки в обучении:

1) обучение конкретному языку, а не собственно программированию;

2) малое количество решенных задач;

3) отказ от знакомства с работами профессионалов и слабое их изучение.

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

Накопленный опыт позволяет сформулировать некоторые приемы и методы, которые приводят к хорошим результатам обучения.

В основе навыков программиста лежат алгоритмический стиль общения и понятие алгоритма.

Алгоритм — последовательность действий, ведущая от исходных данных к нужному результату и удовлетворяющая основным свойствам, к которым относятся: 1) определенность, 2) массовость, 3) конечность. В этом определении подчеркивается дискретный характер алгоритма (последовательность отдельных действий).

Определенность означает понятность каждого действия алгоритма его исполнителю.

Массовость алгоритма — это его способность решать класс подобных задач. Подобные задачи отличаются друг от друга конкретными значениями исходных данных.

Свойство конечности гарантирует получение результата за конечное время (конечное число исполнений действий алгоритма).

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

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

Объяснить или записать алгоритм труднее, чем выполнить работу самому, потому что здесь осуществляется опосредованное управление. Алгоритм легче выполнить, чем разработать и записать.

Почему алгоритм трудно придумать?

1) Алгоритм придется сразу продумать во всех деталях, ничего нельзя отложить на потом, т.к. управлять исполнителем будет компьютер, а не человек;

2) алгоритм нужно не только продумать, но и записать без двусмысленностей и выражений типа « и т.д. »;

3) компьютер не может догадаться за нас. Все нужно описать точно, ясно, формально, на понятном ему языке.

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

Исходя из поставленной задачи, получаем набор качеств, которыми должен обладать программист:

— терпение и трудолюбие, чтобы «обработать» программным образом все возможные ситуации;

— умение работать в коллективе;

— способность разобраться в сложной ситуации;

Программисту необходимо выработать приемы умственных действий:

— мышление по аналогии;

— поиск иерархической зависимости между объектами и понятиями (классификация);

— нахождение общего и выделение частного;

— построение логических умозаключений.

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

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

Программисту необходим опыт в разработке программ. Только в случае, когда он встретится с самыми разными «типовыми» ситуациями, у него будет отработан алгоритм их разработки. При непрерывной работе над разработкой программ этот опыт накапливается приблизительно за 5-6 лет работы программиста. (Говоря другими словами, настоящими программистами становятся лет под тридцать).

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

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

Выработке перечисленных выше умений и навыков способствуют описанные ниже методические приемы.

Преподаватель обязан проверять работу программы студента не на одном тесте, а на целом наборе тестов, подготовленных заранее.

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

Часто используется и такой метод, когда преподаватель набирает вместо входных данных произвольные строки. Это заставляет студента тщательно проверять входные данные.

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

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

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

Упражнение рекомендуется повторять до тех пор, пока не будет достигнут автоматизм.

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

Характер опроса можно продемонстрировать следующим примером. Пусть на лекции построен алгоритм решения линейного уравнения вида: ах = Ь. Для опроса можно предложить восстановить в нем пропущенные условия и/или операторы.

then write(‘х — любое’) else write(‘нет решений’) else write(‘один корень’,b/a)

6 способов научиться программировать

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

  • запуск стартапа;
  • разработка игр;
  • машинное обучение;
  • наука о данных;
  • программирование микропроцессоров;
  • мобильные приложения;
  • разработка IoT-устройств;
  • … и многое другое. – пишут Codementor.

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

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

Вариант 1. Университетское образование в сфере Computer Science

Стоимость: По-разному в зависимости от университета: от $10,000 до $100,000 в США.

Длительность обучения: 3-4 года в зависимости от страны.

Перспективы трудоустройства: Некоторые компании не принимают на работу без профильного технического образования (В США – STEM-образования). Другие вообще не принимают в штат тех, кто не является выпускником одного из ведущих университетов мира. Однако есть немало компаний, для которых диплом не имеет решающего значения.

Как происходит обучение

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

Однако получение степени специалиста по computer science не позволяет быстро приобрести практические навыки разработки современных веб-приложений. Даже если программа обучения прогрессивна и затрагивает веб-разработки, вряд ли получится познакомиться с самыми последними тенденциями веб-технологий. Эта сфера настолько быстро развивается, что университеты не успевают обновлять учебные планы. Получение IT-образования – это самый медленный и наименее практичный способ научиться программированию специализированного продукта.

В целом, образование в сфере computer science может быть подходящим вариантом, если:

  • Получение навыка программирования не к спеху, и если стоит задача построить карьеру в индустрии разработки ПО;
  • Есть цель получить работу в одной из ведущих IT-компаний, таких как Google, Facebook или Uber (обычно они требуют наличие диплома);
  • Учеба в университете дается легче, чем самостоятельное обучение;
  • Стоит задача научиться решать проблемы, которые требуют глубоких знаний в таких областях, как искусственный интеллект и машинное обучение;
  • Достаточно времени, денег, сил и возможностей, и учеба в университете кажется привлекательной.

Вариант 2. Курсы программирования

Стоимость: По-разному в зависимости от курса: от $3,000 до $20,000 в США.

Длительность обучения: В среднем 3 месяца.

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

Как происходит обучение

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

На курсах программирования можно получить максимально большое количество знаний и умений в максимально сжатые сроки. После прохождения курсов студент, как правило, способен самостоятельно создать простейшее веб-приложение, используя HTML & CSS, Ruby on Rails или JavaScript.

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

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

Курсы программирования – отличный способ приобрести навыки программиста, если:

  • Необходимо обучиться в максимально сжатые сроки;
  • Получение работы в гигантских корпорациях (Google, Microsoft, Amazon, Facebook) не является желаемой целью (хотя возможность такая все же есть);
  • Навык программирования нужен для создания конкретного продукта (идея для стартапа, разработка конкретного программного средства);
  • Предпочтительнее посещать занятия в аудиториях, но при этом нет времени и денег на получение университетского образования.

Вариант 3. Самостоятельное обучение (онлайн-курсы, обучающие материалы, книги)

Стоимость: любая, в пределах $5,000 или полностью бесплатно.

Длительность обучения: от 3 месяцев до нескольких лет.

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

Цукерберг рекомендует:  Python в три ручья (часть 2). Блокировки

Как происходит обучение

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

Для самостоятельного обучения нужна высокая дисциплина. Без выстроенного учебного плана можно запросто погрязнуть в трудностях. Еще одна загвоздка заключается, в том, что бывает трудно определить, какие темы изучать не нужно. Это один из наиболее непростых аспектов при обучении программированию. Материала так много, что непонятно, на что стоит тратить время, а на что не стоит.

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

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

На этом пути периодически будут возникать трудности, которые будут тормозить процесс обучения. Поэтому стоит время от времени наведываться в онлайн-сообщества, такие как Code Newbie. Также помогут статьи на Stack Overflow. Не помешает и помощь знакомых с опытом программирования.

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

Вариант 4. Наставничество

Стоимость: Бесплатно, но иногда можно покупать наставнику обед.

Длительность обучения: от 3 месяцев до нескольких лет.

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


Как происходит обучение

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

Заполучить наставника – это огромная удача. Если выпал такой случай, то нужно воспользоваться им на все 100%.

Однако стоит иметь в виду несколько важных моментов.

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

Во-вторых, ментор – это лишь один человек со своим видением профессии. Даже самый адекватный наставник может повлиять на подопечного своими взглядами и убеждениями. Необходимо прислушиваться к мнению других программистов, быть открытым к большему разнообразию мнений. Можно участвовать в онлайн-сообществах по программированию, посещать семинары по программированию. Более того, никто не мешает дополнительно заниматься с другим наставником для широты кругозора. Сайты наподобие Codementor служат площадками для желающих обучиться навыкам программиста. На них можно быстро получить консультацию или найти среди специалистов со всего мира ментора на длительный срок.

Вариант 5. Создавать программный продукт и учиться в процессе

Стоимость: Бесплатно за исключением трат на разные программные инструменты, подписки и сервисы.

Длительность обучения: Любая: от пары дней на досуге до нескольких лет.

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

Как происходит обучение

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

Суть такого обучения заключается в освоении темы по мере поступления проблем. Во время разработки часто бывают ситуации, когда неясно, что нужно делать дальше. Поиск информации помогает получить представление о том, как делается тот или иной шаг. Остается только применить найденные знания. Много времени уйдет на поиск в интернете по запросам типа «как делается то-то и то-то». Потребуются часы на поиск ответов на сайтах наподобие Stack Overflow. Этот способ может показаться поверхностным, несерьезным. Но, возможно, это один из самых действенных методов, так как обучение происходит на практике. Получив знания, можно тут же их применять в своем проекте. Информация лучше оседает в уме и, как следствие, прогресс налицо.

Самое опасное в этом методе – стать программистом, который может только «копировать и вставлять». Например, нужно создать кликабельную кнопку с закругленными углами. Ответ есть на Stack Overflow – кто-то выложил фрагмент кода, который как раз поможет это сделать. Здорово! Но если просто скопировать и вставить фрагмент, то невозможно чему-то научиться. Здесь важно определиться с целями. Создается ли продукт с целью приобрести навык? Если да, то нужно потратить силы на то, чтобы разобраться, что значит этот код.

Стремление реализовать какой-либо проект – это великолепный источник мотивации для обучения программированию. Мало того, замечено, что те, кто применяют полученные знания в собственных разработках, прогрессируют гораздо быстрее.

Вариант 6. Совместить все вышеперечисленные способы

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

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

Многие не знают, что лучше: курсы по программированию или самообразование. Кто-то выбирает между курсами или поступлением в вуз на специальность computer science. Если хочется как можно скорее стать программистом или создать продукт, курсы по программированию – лучший вариант. Если получение официального образования дается с трудом, если есть опыт исключения из вуза, курсы по программированию – это то, что нужно. Если же времени достаточно и есть желание учиться в академической среде – правильным выбором будет университетское образование. Оно откроет дорогу к трудоустройству в лучших компаниях и обогатит разносторонними знаниями в сфере IT. Конечно, на выбор влияют и другие персональные факторы, но, в общем и целом, логика должна строиться примерно так.

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

Обучение программированию с нуля: с чего начать изучение в домашних условиях

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

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

Что нужно знать «чайнику»

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

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

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

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

Особенности обучения программированию на постсоветском пространстве

После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.

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

Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:

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

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

В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.

С какого языка начать изучать программирование

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

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

Чаще всего выбор падает на язык программирования C ( си) . Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.

Рассмотрим особенности этого языка, делающего его оптимальным для изучения:

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

Проще говоря, C – это то, с чего следует начинать новичку перед тем, как научиться программированию на других языках.

Программы (компиляторы) для программирования

Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.

Вот несколько специализированных компиляторов с поддержкой языка C:

  • Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:
  • Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:
  • Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:

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

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

Тенденции на рынке программирования

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

  • Веб-программирование – здесь понадобятся знания PHP , CSS и HTML ;
  • Разработка приложений под мобильную операционную систему Andro >Java . Поэтому потребуется знание основ этого языка;
  • C# (си sharp) – дальний потомок C . На основе C# построена веб-технология ASP.net от Microsoft .

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

Фрагмент 2. Семь заповедей педагога

Читайте также:

  1. Для третьей стадии апоптоза (удаление фрагментов погибшей клетки) характерно (1)
  2. Заключительное слово педагога
  3. ЗАПОВЕДЕЙ НЕТ, ЕСТЬ ЛИШЬ НЕСКОЛЬКО ПРОСЬБ
  4. Исполнение даже малейших заповедей
  5. К. Королларий о фрагментации
  6. Конец ознакомительного фрагмента.
  7. Конец ознакомительного фрагмента.
  8. Конец ознакомительного фрагмента.
  9. Конец ознакомительного фрагмента.
  10. Конец ознакомительного фрагмента.
  11. Конец ознакомительного фрагмента. 1 страница
  12. Конец ознакомительного фрагмента. 1 страница

Фрагмент 1. Способы описания алгоритмов

Алгоритмы описываются разными способами, среди которых довольно 7 распространенными являются словесно-формульный и структурный или в виде блок-схемы. Словесно-формульный алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий.

Пример словесно-формульной записи алгоритма вычисления значения математического выражения: y = 40∙а/(a — b) – (2∙x 2 +8).

1. Ввести значения а, b, х

2. Вычислить значения а – b

3. Вычислить значение 40∙а

4. Разделить результат шага 3 на результат шага 2 алгоритма.

5. Возвести х в квадрат.

6. Умножить результат шага 5 на 2.

7. Сложить результат шага 6 с числом 8.

8. Из результата шага 4 вычесть результат шага 7

9. Вывести результат вычисления выражения.

Бернард Шоу как-то сказал: «Кто умеет – делает, кто не умеет – учит». Фраза стала крылатой – а ведь Шоу ошибся. В современном мире становится очень важным уметь учиться, а кто-то должен этому учить. Как заставить аудиторию действовать в одном направлении, как убедиться, что все тебя поняли правильно и однозначно? Очень просто: нужно быть хорошим педагогом и помнить основные принципы преподавания.

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

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

Заповедь III.Заражайте учеников энтузиазмом и целеустремленностью. Разница между хорошим и великим педагогом не в мастерстве, а в степени увлеченности. Увлеченности материалом, процессом преподавания.

Заповедь IV.Имейте право на незнание. Слушатели доверяют и охотно работают с теми, кто делится с ними своими сомнениями. Признавшись, что вы чего-то не знаете, вы даете понять, что сами еще учитесь.

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

Заповедь VI.Научитесь слушать. Эффективное преподавание – это улица с двусторонним движением: диалог, а не монолог.

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

Фрагмент 3. Алгоритм Евклида (нахождение наибольшего общего делителя)

Алгоритм Евклида – это алгоритм нахождения наибольшего общего делителя (НОД) пары целых чисел.

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

Описание алгоритма нахождения НОД делением:

Шаг 1) Сравниваем числа. Если числа равны, то любое из них и есть НОД.

Шаг 2) Если числа не равны, то большее число делим на меньшее.

Шаг 3) Если делится без остатка, то меньшее число и есть НОД.

Шаг 4) Если есть остаток, то большее число заменяем остатком от деления.

Шаг 5) Возвращаемся к пункту 2.

Фрагмент 4. Вопросы для самоконтроля по теме «Информация»:

2.1Что означает термин “информатика”, и каково его происхождение?

2.2Какие области знаний и административно-хозяйственной деятельности официально закреплены за понятием “информатика” с 1978 года?

2.3Какие сферы человеческой деятельности, и в какой степени затрагивает информатика?

2.4Назовите основные составные части информатики и основные направления её применения.

2.5Что в бытовом, естественнонаучном и техническом смысле подразумевается под понятием “информация”?

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

2.7От кого (или чего) человек принимает информацию? Кому передает информацию?

2.8Где и как человек хранит информацию?

2.9Что необходимо добавить в систему “источник информации — приёмник информации”, чтобы осуществлять передачу сообщений?

2.10Приведите примеры ситуаций, в которых над информацией производятся следующие действия:

2.11Что необходимо добавить в систему “источник информации — приёмник информации”, чтобы осуществлять передачу сообщений?

2.12Какие типы действий выполняет человек с информацией?

2.13Приведите примеры обработки информации человеком. Что является результатами этой обработки?

Фрагмент 5. Web-ресурсы по алгоритмизации и программированию:

Учебные материалы для начинающих:

1. Первые шаги: уроки программирования http://www.firststeps.ru

2. Visual Basic для детей http://www.vbkids.narod.ru

3. Школа информатики и программирования http://ips.ifmo.ru

4. Программируем на Лого http://school.ort.spb.ru/library/logo

5. Изучаем алгоритмизациию http://inform-school.narod.ru

Учебные материалы по алгоритмизации и программированию для «продвинутых»:

6. CodeNet — все для программиста http://www.codenet.ru

7. HTML-справочник http://html.manual.ru

8. Некоторые математические алгоритмы http://algorithm.narod.ru

9. Задачи по спортивному программированию http://acm.timus.ru

10. Математика и программирование http://www.mathprog.narod.ru

Готовые алгоритмы:

11. Алгоритмы, методы, исходники http://algolist.manual.ru

12. Дискретная математика: алгоритмы http://rain.ifmo.ru/cat

13. Библиотека алгоритмов http://alglib

| следующая лекция ==>
Фрагмент 3. Несколько правил оформления текста | Введение. Фрагмент 6. Горизонтальная и вертикальная линейки окна Word

Дата добавления: 2015-06-04 ; Просмотров: 363 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Инновационные методы обучения программированию будущих учителей информатики

Материал представляет собой перевод статьи Janka Majherová, Václav Králík. Кафедра информатики, факультета образования, католического университета в Ружомбероке, Словакия. Европейский журнал современного образования, 2020, 6 (3)

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

Материал подготовил:

Родин Александр Ильич,
Старший методист РНМЦ НО
ГБПОУ “Воробьевы горы”
к.э.н.

Введение

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

Важным компонентом цифровой грамотности подрастающего поколения является способность понимать информацию и использовать ее в различных форматах из источников представленных цифровых технологий. Согласно исследованию, проведенному Институтом государственных дел (Velšic, 2013), среднее значение индекса цифровой грамотности в Словакии увеличилось с 0,33 пункта (по шкале с 0 до 1) в 2005 году до 0,47 пункта в 2013 году. Исследование показывает, что школы оказывают наибольшее влияние на повышение цифровой грамотности. В ходе этого исследования выяснилось, что молодые люди Словакии добились примерно на 60 процентов более высоких результатов, чем в среднем по населению, и за последнее десятилетие они улучшили свои навыки и способности в широко распространенной категории цифровых технологий. На 50 процентов улучшилась способность работать с такими аппаратными и периферийными устройствами, как компьютеры, планшеты, смартфоны, сканеры, принтеры и портативные носители. С другой стороны, наблюдается медленный рост способности работать с программным обеспечением (редактирование текста, таблиц и графики, мультимедиа и веб-браузеров).

Исследование электронных навыков для рынка труда в Словакии показало, что молодое поколение по-прежнему испытывает недостаток во многих навыках и способностях в цифровых технологиях (Velšic et al., 2020). Среди респондентов в возрасте от 18 до 26 лет лишь 14% утверждали, что у них ничего нет в этом отношении. Пятьдесят семь процентов молодых людей заявили, что у них нет таких навыков, как прикладное программирование, проектирование систем, разработка веб-сайтов и мультимедиа. Эта проблема тесно связана с недостаточной подготовкой к решению проблем и неадекватным развитием алгоритмического и логического мышления, о чем сообщили остальные 42 процента респондентов.

Цукерберг рекомендует:  Делаем индикатор прогресса с использованием только CSS

Поэтому мы ориентируемся на подготовку будущих учителей, а также практикующих учителей в программах непрерывного образования, для работы с новыми разработками в современных цифровых технологиях. Расширение целей обучения до цифрового измерения с соответствующим использованием ИКТ повышает эффективность обучения (Nagyová, 2015; Hubwieser et al., 2015; Jacková, 2008).

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

Обучение программированию в реальных и виртуальных средах

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

Интерактивные среды для обучения программированию усиливают роль визуализации. По словам Мусы и соавторов (2015), визуализация в образовательной среде может обеспечить простой и эффективный подход к получению результатов, решению проблем и открытию структуры модели в процессе обучения студентов новой информации. Визуализация отношений и логических связей в рамках единой модели позволяет поддерживать цифровые и базовые компетенции студентов в области науки и техники. Моделирование на уроках информатики – это не только инструмент, но и сам предмет образования, когда студенты на основе полученных знаний и с помощью цифровых инструментов, создают модель части реального мира (Majherová, 2007; Gunčaga и соавт., 2015).

Образовательные роботизированные системы предлагают несколько возможностей для обучения программированию. По словам Saleiro и др. (2013) и Benedettelli (2014), набор роботизированной системы Mindstorms LEGO оказался наиболее подходящим инструментом. В дополнение к различным аппаратным аксессуарам, он содержит базовое программное обеспечение, которое позволяет обучать программированию школьников в возрасте от 8 лет. Среда разработки и программирования NXT-G является наиболее популярным типом. Студенты непосредственно не сталкиваются с синтаксисом языка, но среда позволяет студентам создавать алгоритм для простой программы (Рис. 1).

Рис 1. Окружающая среда Lego Mindstorms NXT

Используя Lego Mindstorms на более высоком уровне среднего школьного образования, можно работать в среде программирования Bricx Command Center (Bricx, 2020), которая поддерживает несколько языков программирования. Преимущество этого метода обучения заключается в том, что студент, который смог создать программу на культовом языке и понял функцию знаковых команд, может работать с набором equal building kit на языке Cи (Рис. 2). Визуальное соединение брендов с иконками в NXT-G и команды Bricx позволяет студенту усваивать графическую информацию о связи между теоретическим оформлением решаемой задачи и значками команд.

Рис. 2. Набор equal building kit на языке Cи.

Для программирования микроконтроллеров рекомендуется сделать структуру языка программирования максимально схожей с языком программирования, используемым при разработке программных приложений на платформах ПК. Язык Си содержит библиотеки для программирования датчиков и компилятор, который преобразует программу в язык данного типа микроконтроллера. Для обучения программированию мы можем использовать язык программирования ROBOTC (ROBOTC, 2020). Этот язык предназначен для написания и отладки программ, а на уровне программного обеспечения он предлагает комплексный компилятор (отладчик в реальном времени).

Liu и соавторы (2013a), провели эксперименты с ROBOTC и среды виртуальных миров робота (RVW). Они хотели проверить, как RVW может быть использован для обучения начинающих навыкам программирования. Студенты использовали сочетание моделирования настольных ПК RVW и среды программирования Palm Island для изучения базового программирования. Один класс закончил курс программирования ROBOTC, используя физические VEX роботов (очный класс), в то время как другой класс закончил курс программирования ROBOTC, используя виртуальные VEX роботов (виртуальный класс).

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

Опыт

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

Содержание курса программирования роботов адаптировано к этой цели (табл. 1). Курс проходит в компьютерной лаборатории. Во время введения студенты познакомятся с историей разработки роботизированных наборов от Lego, а также от других производителей. Они познакомятся с программными средствами (языками), используемыми для программирования.

Таблица 1. Содержание курса Программирование робота

Тематическое направление

Количество часов Очная/ заочная форма

Цели

Роботизированные комплекты, программные средства 2/1 Введение в робота

программирование В NXT-G и окружающей среды 4/2 для решения основных задач программирования Среда программирования Bricx 6/1 для решения основных задач программирования Сборка робота 4/1 построить робота ROBOTC язык RVW виртуальная лаборатория 4/2 использование виртуальной среды для программирования роботов Учебники и инструкции 4/1 использование учебников

Студенты постепенно обучаются в среде программирования NXT-G с последующим переходом на более высокий уровень языка программирования в среде разработки Bricx. Студенты делятся на группы и программируют робота, построенного из набора LEGO Mindstorms. В этой части курса студенты познакомятся с общими требованиями виртуальных лабораторий, а также с возможностью использования виртуальных лабораторий в преподавании языков программирования. В практической части курса они познакомятся с языком ROBOTC и виртуальной лабораторией RVW. С точки зрения учителя, очень важно мотивировать студентов к обучению программированию. Для обеспечения этой мотивации могут быть рассмотрены игры и соревнования. Таким образом, учащиеся получают информацию о масштабах и правил национальных и международных соревнований по программированию роботов, например, Первой лиги Лего (FLL, 2020) или Istrobot (2020).

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

Экспериментальная часть

Эксперимент длился один учебный год 2015/2020 и в нем приняли участие 13 участников. Студенты были разделены на две группы: группа студентов очной формы обучения (8 студентов) и группа иностранных студентов (5 студентов). Мы попытались сравнить два подхода к обучению программированию роботов. В очной форме обучения мы обучали программированию с использованием физической модели робота и языка программирования NXT-G, а также среды программирования Bricx Command Center. В дистанционном курсе мы использовали виртуальную роботизированную среду RVW, а также программу ROBOTC (Таблица 2). Мы постарались исследовать последовательность ключевых задач курса от простых до сложных: от простого иконочного языка программирования до программирования виртуального робота.

Таблица 2. Методы программирования робота

Очная форма

Заочная форма

аппаратура физическая модель робота виртуальная роботизированная среда программное обеспечение NXT-G Bricx Command Center Программа ROBOTC

Для сравнения двух подходов мы использовали робота, построенного по инструкции, обозначенной как “база”. Этот робот имеет шасси с двумя двигателями и одним опорным колесом, и поэтому мы имеем дело с дифференциальным управлением. Основные датчики из комплекта Lego Mindstorms размещены на роботе: сенсорный датчик, датчик света, ультразвуковой датчик и микрофон. Этот робот может быть построен из блока NXT или EV3 Lego kits (Рис. 3). Для экспериментов в процессе обучения программированию используются алгоритмы управления дифференциальным редуктором.

Рис. 3. Лего робот “база ” (учебник NXT-G)

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

Задача А: робот с ультразвуковым датчиком

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

Важное примечание: программа должна функционировать должным образом независимо от расстояния робота от стены. Расстояние робота от стены измеряется как переменная. Правильное решение в программа NXT-G и окружающей среды показана на рис. 4.

Рис. 4. Правильное решение задачи

Задача B: подсчет строк

Для этой задачи мы используем уже созданное шасси от робота в задаче А к шасси, которое может двинуть вперед и имеет ультразвуковой датчик, который позволяет измерять расстояние, прикрепляем датчик света. Его расположение важно. Измерительная часть датчика должна показывать вниз. Расстояние между измерительной частью и площадкой должно быть до 0,5 см выше площадки.

Создайте поверхность с линиями согласно рис. 5, в белой части измерьте значения для белого и черного цветов с помощью меню “вид” в панели программы NXT-G и запишите их.

Рис. 5. Нанесение площади

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

Рис. 6. Решение задачи B

Решение задач A и B (Рис. 4 и 6) легче найти в графической среде. Для обучения программированию важно понимать, с помощью какого алгоритма можно решить конкретную задачу и через какую последовательность команд. Среда NXT-G является графической и облегчает понимание решения. Если задание выполнено таким образом, его можно запрограммировать на языке программирования более высокого уровня в среде Bricx Command Center. Для обучения программированию мы используем сочетание среды разработки NXT-G и языка программирования более высокого уровня. Преимуществами данного подхода являются визуализация последовательности действий и графическое отображение работы с переменными в программе. В конечном счете, это может привести к эффективному пониманию работы с языком программирования более высокого уровня и более быстрому пониманию поставленной задачи.

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

Большим преимуществом программы ROBOTC является ее связь с виртуальной средой. Виртуальная модель робота идентична реальному роботу, называемому BASE. Визуализация движения и взаимодействия робота в виртуальной лаборатории осуществляется по разработанным студентами программам управления. Визуализация движения происходит в 3D-среде и взаимодействия между роботом и его окружения можно наблюдать с разных ракурсов.

Преимущество этого способа обучения заключается в том, что нам не нужна физическая модель робота, потому что проверка корректной работы программы осуществляется с помощью 3D-модели робота в виртуальной среде (Рис. 7).

Рис. 7. Виртуальная среда ROBOTC

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

Результаты

Студенты по очной форме обучения работали только с физическими наборами Lego Mindstorms в среде NXT-G или Bricx в классе 2 часа в неделю. Заочные студенты работали с физическими моделями роботов в классе от 4 до 6 часов, а также проводили самостоятельное обучение за пределами класса с использованием виртуальной среды. В эксперименте были проверены два подхода к обучению программированию моделей роботов при подготовке будущих учителей информатики. Мы рассмотрели их преимущества и недостатки. В каждой группе студентов проводили оценку результатов на основе наблюдений и использования анкет.

В курсе программирования роботов мы работали с 8 студентами очной формы обучения и 5 заочными студентами. В конце курса студенты заполнили форму со следующими вопросами:

  • В какой среде программирования вы знаете, как работать?
  • Вы уже запрограммировали робота?
  • Вы работали с реальной моделью робота во время курса?
  • Вы использовали комплект Lego Mindstorms во время прохождения курса?
  • Вы работали в виртуальной среде во время курса?
  • Как вы оцениваете свое мастерство в создании программы для робота?
  • Как вы оцениваете свое мастерство в создании модели робота?
  • Как вы оцениваете свое мастерство в работе в виртуальной среде?

(1 – нет навыка, 5 – отличное умение)

Последний вопрос был открытым: оцените преимущества работы в виртуальной среде по сравнению с реальной средой для программирования моделей роботов.

До этого курса все студенты работали на языках Pascal и Cи. Они столкнулись с программированием роботов, в основном, в колледже. Только 5 студентов сообщили об опыте работы с роботами в средней школе.

Студенты дневной формы обучения должны были разделить учебное время, предусмотренное для данного предмета, на две части. Первая часть касалась построения физической модели робота, а вторая была посвящена созданию программы. В большинстве случаев студенты сосредоточились на построении робота, чем на создании программы. Студенты очной формы обучения оценили свои навыки программирования робота со средним баллом 3,4 (График 1). Навыки создания моделей роботов оценивались со средним баллом 4.5 (График 2).

Заочные студенты, с более коротким сроком обучения по предмету, имели меньше возможностей для работы с физическими моделями, поэтому больший акцент был сделан на работу в виртуальной среде. Они оценили свои навыки в построении модели робота со средним баллом 3.3 (График 2). Но навыки программирования робота оказались выше, со средним баллом 3,75 (График 1).

График 1. Навыки создания программы моделей роботов (1 – нет навыков, 5 – отличное умение)

График 2. Навыки создания модели робота (1-нет навыков, 5-отличное умение)

В анкете мы спросили студентов, какие они видят преимущества работы с моделью робота в виртуальной среде по сравнению с физической моделью. Вот примеры их ответов:

“…в виртуальной среде, мы можем имитировать движение робота, прежде чем ввести его в действие в реальной среде. Работа в виртуальной среде эффективна по времени и более прибыльна в финансовом отношении”

“…происходит снижение затрат, связанных с производством роботов, есть также бесплатный доступ в виртуальную лабораторию (в любое время и в любом месте), нет риска получения травм, виртуальная среда обеспечивает диагностику исходного кода, который контролирует тот или иной источник или комбинацию источников, имитирует различные альтернативы, есть совместимость с широким спектром языков программирования”

“…у нас есть возможность участвовать в робототехнических упражнениях без прямого доступа к роботу, доступна автоматическая онлайн-коррекция ошибок при работе с роботами в виртуальной среде”

“… новые навыки в области программирования”

“…виртуальная среда проще и занимает меньше времени, каждый может работать самостоятельно, может работать дома через сеть в любое выбранное время”

Обсуждение и заключение

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

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

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

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

Среда программирования виртуального мира робота поддерживает только Язык Cи. С этой точки зрения программа кажется неподходящей для использования в классах k4 – K6. Мы считаем, что это программное обеспечение подходит для более высоких классов: от K7 до K12. Виртуальная среда позволяет студентам полностью сосредоточиться на задачах, связанных с программированием. Ошибки, вызванные неисправными частями робота (датчики, батареи и др.), избегаются. Помимо прямого обучения, этот метод можно использовать для дистанционного обучения или для других форм обучения. Виртуальная среда – это программное обеспечение, которое полностью заменяет Lego kit.

В наших будущих исследованиях мы рассмотрим программирование роботизированных комплектов, связанных Lego с модулем Arduino и Raspberry. По словам Polсin и др. (2020), Snajder и Gunis (2020), при подготовке будущих учителей информатики важно внедрять новые знания, методы и формы в рамках преподавания языков программирования таким образом, чтобы обучение было привлекательным и было взаимосвязано с результатами применения.

Выражение благодарности

Работа выполнена при поддержке научного Гранта KEGA 009KU-4/2020 инновационные методы в преподавании информатики в средней школе и интерактивных электронных учебных материалов для поддержки внедрения современных технологий в преподавании математики и информатики.

Ссылки

Benedettelli, 2014 – Benedettelli, D. (2014). The Lego Mindstorms EV3 Laboratory. San Francisco: No Starch Press. Retrieved from http://robotics.benedettelli.com/publications

Bricx – Bricx Command Centre. Retrieved from http://bricxcc.sourceforge.net/ Firstlegoleague – URL: http://www.firstlegoleague.org/

Gunčaga et al., 2015 – Gunčaga, J., Janiga, R. and Žilková, K. (2015). Supporting of simulation and visualization through ICT in the educational process. Information and Communication Technology in Education 2015. pp. 25-33. Ostrava: University of Ostrava.

Hubwieser et al., 2015 – Hubwieser P., Giannakos M. N., Berges M., Brinda Torsten, Diethelm I., Magenheim J., Pal Yogendra, Jacková J. and Jasute E. (2015). A global snapshot of computer science education in K-12 schools. In: ITiCSE-WGP’ 15: proceedings of the 2015 ITiCSE on Working Group Reports, July 4–8, 2015, Vilnius, Lithuania. New York: ACM, 2015. pp. 65-83.

Jacková, 2008 – Jacková, J. (2008). Learning for Mastery in an Introductory Programming Course. In ITICSE ’08 Proceedings of the 13th annual conference on Innovation and technology in computer science education. pp. 352-352. New York: ACM.

Králík, Majherová, 2020 – Králík, V. and Majherová, J. (2020). Virtual Robotic Laboratories Robot C in the Informatics Teachers Training. In DidMatTech 2020. Budapest: Eötvös Loránd University.

Liu et al., 2013 – Liu, A., Newsom, J., Schunn, Ch. and Shoop, R. (2013). Students Learn Programming Faster Through Robotic Simulation. Techdirections. Vol. 72, n.8.

Liu et al., 2013a – Liu, A.S., Schunn, Ch., Flot, J. and Shoop, R. (2013). The role of physicality in rich programming environments. Computer Science Education. Retrieved from http://education.rec.ri.cmu.edu/educators/research/

Majherová, 2007 – Majherová, J. (2007). Virtual plants in high school informatics – L- systems. In Auer, M. (ed.): International Conference Interactive Computer Aided Learning 2007, ePortfolio and Quality in e-Learning. CD. Kassel: Kassel University Press.

Musa et al., 2015 – Musa S., Ziatdinov, R., Sozcu, O. F. and Griffiths, C. (2015). Developing Educational Computer Animation Based on Human Personality Types. European Journal of Contemporary Education, Vol. 11, Issue 1, pp. 52-71.

Nagyová, 2015 – Nagyová, I. (2015). Analysis of Students’ Behaviour in eLearning Course “Educational Technologies”. European Conference on e-Learning. pp. 428-434. Hatfield: ACPI.

Polčin et al., 2020 – Polčin, D., Petrušková, H. and Stando, J. (2020). Support and Improvement of the Educational Process in Regional Education in Slovakia Through Tablet Classrooms. In The Third International Conference on Computer Science, Computer Engineering, and Education Technologies. pp. 71-78. Łodz: Łodz University of Technology.

ROBOTC – ROBOTC a C Programming Language for Robotics. Retrieved from http://www.robotc.net/

Saleiro et al., 2013 – Saleiro, M., Carmo, B., Rodrigues, J.M.F. and Buf, J. M. H. (2013). A Low-Cost Classroom Oriented Educational Robotics System. In Social Robotics: 5th International Conference, ICSR 2013. LNAI 8329. pp. 74-83.

Šnajder, Guniš, 2020 – Šnajder, Ľ. and Guniš, J. (2020). Analysis of results in inquiry based informatics education of selected topics. Information and Communication Technology in Education 2020. pp. 169-180. Ostrava: University of Ostrava.

Velšic, 2013 – Velšic, M. (2013). Digitálna gramotnosť optikou mladej generácie. [Digital literacy view of the young generation]. Bratislava: IVO – Microsoft.

Velšic, Janotík, 2020 – Velšic, M. and Janotík, T. (2020). E-skills a trh práce na Slovensku. [E-skills and job market in Slovakia]. Bratislava: IVO.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих