Привет, Codeforces.
На прошлой неделе я стартовал эксперимент.
Я верю в полу-автоматизированное обучение программирования через задачки. Есть понятные плюсы такого подхода: независимость практики от преподавателя, хорошее тестирование решений, понятные майлстоуны у ученика, способность системы к масштабированию.
Основы программирования в этом смысле совсем хороши: несложно подготавливать задачи, есть понятный план обучения, хорошо понятен прогресс ученика.
Наверняка какие-то структурированные курсы для обучения языку с нуля уже есть. Но почему бы не сделать именно так, как нравится именно мне? ИМХО, здесь принципиально важен набор задач — рост уровня их сложности, разнообразие, отсутствие требований в математической подготовке. У меня есть опыт преподавания (ОМГ, почти 20 лет!), некоторые наработки от моей работы со студентами Саратовского университета и желание попробовать!
Итак, эксперимент. Начиная с 20-го февраля замечательная девушка le.mur занимается изучением основ C++ с нуля под моим присмотром и руководством. Мы договорились, что свои впечатления она фиксирует в специальном Instagram-аккаунте (подписывайтесь, это мотивирует!) Лена не училась математике каким-либо углубленным образом, начальных навыков в программировании и информатике – нет. Каждый день она занимается 2-4 часа. Одно домашнее задание должно выполняться за 1-4 дня. Мой план состоит в том, что можно минимизировать индивидуальные объяснения, пока так и получается.

Нагло украл фотографию из Instagram
Примерный план обучения на ближайшее время (то есть самое начало) выглядит примерно так:
- Понятие переменной, простейшие функции (min, max, abs), задачи без ветвлений и циклов.
- Оператор ветвления, обе формы (if, if-else). Понимание областей видимости переменных, вложенные ветвления. Задачи на ветвления.
- Операторы циклов: while и for. Задачи на применение циклов без дополнительных конструкций (то есть решаются в один цикл без ветвлений и вложенных циклов).
- Задачи на применение циклов и ветвлений.
- Задачи на применение вложенных циклов.
Каждый пункт соответствует одному домашнему заданию и будет содержать 10-20 задач по этой теме. Дальше по плану ожидаются массивы и строки, но до них еще только предстоит дойти.
Один из первых выводов, который я успел для себя сделать: на начальном этапе не стоит погружать в излишние детали, упрощенное или неполное понимание помогает понять основы. Например, пока Лена оперирует только целочисленными переменными (тип int), всегда ставит фигурные скобки после управляющих операторов, использует только логические && и ||, лишь примерно понимает смысл заклинания «using namespace std». Мне кажется, что после получения первоначальных навыков расширить понимание типами, дополнительными операторами и прочими подробностями будет проще.
Я надеюсь, что у Лены будет получаться и она не потеряет мотивацию к занятиям.
А как вы изучали самые основы программирования? Что хорошо сработало именно для вас?










Смена хэндла




