Секция 2: «Содержание и методика преподавания отдельных дисциплин» 23 октября 11:05 – 11:45

 

Доклад «Как и зачем преподавать Python, если его все знают?»

Докладчик:

Иван Владимирович Бибилов
куратор академических программ Яндекса

Аннотация: 

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

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

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

Каким же образом тогда строить университетский курс по Питону и в каком варианте он может помочь дальнейшему образовательному процессу? Я постараюсь рассказать об этом.

 

Запись доклада

Презентация доклада

 

Резюме: 

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

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

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

Базовая алгоритмизация Python многократно описана в онлайн курсах и учебных тренажёрах, находящихся в открытом доступе в Интернете. Очень много образовательных материалов по работе с Python. Официальная документация по языку подготовлена на высоком уровне. Есть большое количество библиотек на Python Package Index. Для решения многих видов задач разной направленности можно найти готовую библиотеку. Вопрос в том, как заставить студентов все эти материалы изучить и использовать. В обучении нужно отталкиваться от постановки содержательно интересной задачи, разбирать разные актуальные примеры. В рамках курса можно предусмотреть, что слушатели самостоятельно осваивают базовые возможности Python, а на занятиях разбираются задачи из соответствующей предметной области. 

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

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

Мы можем поставить вопрос – какова роль Python и курса по его изучению? Возможно работу с Python имеет смысл частями включать в разные дисциплины, применять его при выполнении лабораторных и практических работ по этим дисциплинам. Скорее всего уже сейчас Python можно перенести в лингвистический стек вместе с иностранными языками. Есть британский английский, базовый английский и будет также программистский английский. Это радикальное и спорное мнение, но, тем не менее, не лишённое смысла.

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

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