Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (Александр Смирновский, OSEDUCONF-2024) — различия между версиями

Материал из 0x1.tv

(Новая страница: «;{{SpeakerInfo}}: {{Speaker|Александр Смирновский}} <blockquote> </blockquote> {{VideoSection}} {{vimeoembed||800|450}} {{youtubelink|}} {{…»)
 
 
(не показаны 3 промежуточные версии этого же участника)
;{{SpeakerInfo}}: {{Speaker|Александр Смирновский}}
<blockquote>
В докладе представляется опыт преподавания программирования на ЯП Python студентам первого 
курса бакалавриата Физико-механического института политехнического университета по 
направлению «Прикладные математика и физика». 

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

Размышлениям на эту тему и посвящён данный доклад.
</blockquote>

{{VideoSection}}

{{vimeoembed|990136041|800|450}}
{{youtubelink|}}
|aRWusUHFNyE}}
{{SlidesSection}}
[[File:Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (Александр Смирновский, OSEDUCONF-2024).pdf|left|page=-|300px]]

{{----}}

== Thesis ==
На протяжении уже трёх лет студентам первого курса бакалавриата Физико-механического института 
Политехнического университета по направлению «Прикладные математика и физика» читается курс, 
который в рамках учебной программы гордо именуется «Цифровой практикум» (первый семестр), а во 
втором семестре имеет более осмысленно название «Практикум по языкам программирования». Данные 
курсы возникли в результате «трансформации» учебного плана всего университета с целью увеличения 
числа и некоторой унификации «цифровых» курсов, под которыми понимается не только  не столько) 
программирование, но и такие малопонятные абитуриенту (да и преподавателям, впрочем, тоже) 
словосочетания, как: «цифровая культура», «цифровая грамотность», «системы искусственного 
интеллекта» и пр. Учебные планы некоторых курсов унифицированы и преподаются студентам в большей 
или меньшей степени централизовано, тогда как наполнение других курсов полностью определяет то 
подразделение Политехнического университета, преподаватели которого и ведут занятия.

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

Как указано на сайте Физико-механического института СПбПУ<ref name="smirnovsk-1">Официальный сайт Физико-механического института с описание направления подготовки «Прикладные математика и физика», [https://physmech.spbstu.ru/edu/03.03.01/03.03.01_01/]</ref>, 
образовательная программа по 
направлению «Прикладные математика и физика» (направленность «Математические модели и вычислительные 
технологии в гидроаэродинамике и теплофизике») нацелена на подготовку бакалавров, обладающих 
обширными знаниями в области физико-математических наук, преимущественно ориентированных на 
дальнейшее обучение в магистратуре и обладающих практическими навыками математического и 
экспериментального моделирования при решении задач гидроаэродинамики, теплофизики, механики 
деформируемого твёрдого тела и смежных научно-технических областей. Общая концепция подготовки 
основана на сочетании фундаментальных дисциплин математической и физико-механической направленности 
с курсами по современным вычислительным и информационным технологиям, применяемым для решения 
общенаучных и прикладных задач физики и механики сплошных сред. Таким образом, «цифровой» аспект 
является хоть и не основной целью обучения по указанной программе, но очень важной составляющей: 
на протяжении всего периода обучения студентам необходимо выполнять различные задания, связанными 
с программированием, в том числе самостоятельно разрабатывать программы, реализующих численные алгоритмы 
для решения задач механики сплошных сред (гидроаэродинамики). 

На протяжении многих лет основным инструментом для написания программ в процессе обучения в Политехническом 
университете был и остаётся язык <tt>Fortran</tt>, позволяющий с относительно небольшими усилиями реализовывать 
различные алгоритмы вычислительной физики, включая: методы Рунге-Кутты для решения ОДУ, численные методы 
для решения уравнения конвективного переноса скалярной величины, конечно-разностные методы аппроксимации 
уравнения теплопроводности и&nbsp;др. Более сорока лет назад преподавателями тогда ещё физико-механического 
факультета Ленинградского политехнического института балы разработана учебная программа, включающая как 
изучение ЯП <tt>Fortran</tt>, так и использование его для программирования в рамках различных курсов по 
численным методам. В 2002 году было издано учебное пособие<ref name="smirnovsk-2"><i>Шелест&nbsp;В.&nbsp;Д.,</i> Программирование: учебное пособие, 2022</ref>, 
содержащее в том числе материалы по 
ЯП <tt>Fortran</tt>, которое используется студентами и преподавателями Политехнического университета и 
по настоящее время.

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

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

Со стороны студентов есть запрос на обучение программированию, которое было бы не только современно, 
но и могло бы пригодиться в различных областях профессиональной деятельности. Не раз со стороны некоторых 
студентов возникал вопрос, почему им до сих пор приходится изучать <tt>Fortran</tt>, а не более современные 
и распространённые ЯП? Конечно, с учётом современных тенденций  мае 2024 году <tt>Fortran</tt> вошёл в ТОП-10 
популярных ЯП в рейтинге TIOBE<ref name="smirnovsk-3">Индекс TIOBE популярности языков программирования (май 2024), [https://www.tiobe.com/tiobe-index/]</ref>), совсем отказываться от <tt>Fortran</tt> было бы нецелесообразно, 
особенно если учесть, что в области HPC (High Performance Computing) и вычислительных методов он является 
довольно удобным и относительно простым, но в тоже время мощным инструментом (особенно по сравнению с <tt>C</tt> и даже <tt>C++</tt>), 
поддерживающим «из коробки»  параллелизацию OpenMP, для него доступны библиотеки MPI и многое другое из области HPC. 
Тем не менее, недовольство студентов необходимостью изучения <tt>Fortran</tt> по-прежнему остаётся.

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

И здесь возникает ещё одно важное обстоятельство: многие преподаватели и сами не видят интереса и 
целесообразности преподавать ЯП <tt>Fortran</tt>, а мотивация преподавателей, как известно, в настоящее время 
практически единственный способ хоть какого-то развития высшей школы в РФ…

И последнее обстоятельство (last but not least)  поскольку специальность «Прикладные математика и физика» 
включает не только вычислительную составляющую, но и такие важные аспекты, как экспериментальные исследования 
и обработка данных (лабораторные работы), то студентам необходимы соответствующий программный инструментарий. 
В рамках «цифровых» курсов студенты изучают различное ПО для подготовки графиков, написания текстов и пр. 
 основном свободное программное обеспечение, включая \LaTeX, <tt>SciDaVis</tt> и&nbsp;др.). Хорошим подспорьем 
для них является также и знание языков программирования, позволяющих автоматизировать процессы обработки данных и их анализ.

Таким образом, складывается ситуация, когда, с одной стороны, учебная специальность «далека» от канонического ИТ, 
а с другой  программирование является важной составляющей как в обучении, так и для дальнейшей профессиональной 
деятельности. И во весь рост встаёт вопрос, вынесенный в заголовок доклада: так какой же язык программирования 
следует учить специалистам, чья основная область деятельности  вычислительная прикладная физика? Как обычно 
бывает в подобных ситуациях, не существует «серебряной пули»  одного «универсального» ЯП, позволяющего и 
обрабатывать данные, и создавать вспомогательные инструменты для их анализа, и писать высокопроизводительные 
программы  том числе для HPC). В настоящее время такую нишу пытается занять ЯП <tt>Julia</tt><ref name="smirnovsk-4">Язык программирования Julia, [https://julialang.org/]</ref>, 
который совмещает одновременно и возможность написания высокопроизводительного кода, и простоту и наглядность 
для написания простых программ для обработки и анализа данных. К сожалению, несмотря на весьма быстрое развитие 
языка и его инфраструктуры, в настоящий момент имеется очень мало как различных учебных материалов на русском языке, 
так и опыта его использования в преподавательской среде. Весьма вероятно, что этот язык прочно займёт свою нишу 
в области научных вычислений и станет там весьма распространён, но скорее всего не в ближайшем будущем.

Таким образом, текущие реалии таковы, что наиболее «подходящим» ЯП для обучения, а также для обработки и анализа 
и данных, был и остаётся <tt>Python</tt>. Именно по этой причине этот язык был выбран в качестве ЯП для обучения 
студентов, поступающих на направление «Прикладные математика и физика». ЯП <tt>Python</tt> преподаётся в течение 
двух первых семестров первого курса бакалавриата. Для обучения созданию высокопроизводительных программ с 
возможностью параллелизации (OpenMP и MPI) по-прежнему используется <tt>Fortran</tt>, который в настоящее время 
преподаётся в рамках второго семестра первого курса.

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



{{----}}
[[File:{{#setmainimage:Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (Александр Смирновский, OSEDUCONF-2024)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSEDUCONF-2024]]
[[Категория:Draft]]
[[Категория:СПО в образовании]]

Текущая версия на 22:30, 2 августа 2024

Докладчик
Александр Смирновский

В докладе представляется опыт преподавания программирования на ЯП Python студентам первого курса бакалавриата Физико-механического института политехнического университета по направлению «Прикладные математика и физика».

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

Размышлениям на эту тему и посвящён данный доклад.

Видео

on youtube

Презентация

Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024).pdf

Thesis

На протяжении уже трёх лет студентам первого курса бакалавриата Физико-механического института Политехнического университета по направлению «Прикладные математика и физика» читается курс, который в рамках учебной программы гордо именуется «Цифровой практикум» (первый семестр), а во втором семестре имеет более осмысленно название «Практикум по языкам программирования». Данные курсы возникли в результате «трансформации» учебного плана всего университета с целью увеличения числа и некоторой унификации «цифровых» курсов, под которыми понимается не только (и не столько) программирование, но и такие малопонятные абитуриенту (да и преподавателям, впрочем, тоже) словосочетания, как: «цифровая культура», «цифровая грамотность», «системы искусственного интеллекта» и пр. Учебные планы некоторых курсов унифицированы и преподаются студентам в большей или меньшей степени централизовано, тогда как наполнение других курсов полностью определяет то подразделение Политехнического университета, преподаватели которого и ведут занятия.

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

Как указано на сайте Физико-механического института СПбПУ[1], образовательная программа по направлению «Прикладные математика и физика» (направленность «Математические модели и вычислительные технологии в гидроаэродинамике и теплофизике») нацелена на подготовку бакалавров, обладающих обширными знаниями в области физико-математических наук, преимущественно ориентированных на дальнейшее обучение в магистратуре и обладающих практическими навыками математического и экспериментального моделирования при решении задач гидроаэродинамики, теплофизики, механики деформируемого твёрдого тела и смежных научно-технических областей. Общая концепция подготовки основана на сочетании фундаментальных дисциплин математической и физико-механической направленности с курсами по современным вычислительным и информационным технологиям, применяемым для решения общенаучных и прикладных задач физики и механики сплошных сред. Таким образом, «цифровой» аспект является хоть и не основной целью обучения по указанной программе, но очень важной составляющей: на протяжении всего периода обучения студентам необходимо выполнять различные задания, связанными с программированием, в том числе самостоятельно разрабатывать программы, реализующих численные алгоритмы для решения задач механики сплошных сред (гидроаэродинамики).

На протяжении многих лет основным инструментом для написания программ в процессе обучения в Политехническом университете был и остаётся язык Fortran, позволяющий с относительно небольшими усилиями реализовывать различные алгоритмы вычислительной физики, включая: методы Рунге-Кутты для решения ОДУ, численные методы для решения уравнения конвективного переноса скалярной величины, конечно-разностные методы аппроксимации уравнения теплопроводности и др. Более сорока лет назад преподавателями тогда ещё физико-механического факультета Ленинградского политехнического института балы разработана учебная программа, включающая как изучение ЯП Fortran, так и использование его для программирования в рамках различных курсов по численным методам. В 2002 году было издано учебное пособие[2], содержащее в том числе материалы по ЯП Fortran, которое используется студентами и преподавателями Политехнического университета и по настоящее время.

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

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

Со стороны студентов есть запрос на обучение программированию, которое было бы не только современно, но и могло бы пригодиться в различных областях профессиональной деятельности. Не раз со стороны некоторых студентов возникал вопрос, почему им до сих пор приходится изучать Fortran, а не более современные и распространённые ЯП? Конечно, с учётом современных тенденций (в мае 2024 году Fortran вошёл в ТОП-10 популярных ЯП в рейтинге TIOBE[3]), совсем отказываться от Fortran было бы нецелесообразно, особенно если учесть, что в области HPC (High Performance Computing) и вычислительных методов он является довольно удобным и относительно простым, но в тоже время мощным инструментом (особенно по сравнению с C и даже C++), поддерживающим «из коробки» параллелизацию OpenMP, для него доступны библиотеки MPI и многое другое из области HPC. Тем не менее, недовольство студентов необходимостью изучения Fortran по-прежнему остаётся.

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

И здесь возникает ещё одно важное обстоятельство: многие преподаватели и сами не видят интереса и целесообразности преподавать ЯП Fortran, а мотивация преподавателей, как известно, в настоящее время практически единственный способ хоть какого-то развития высшей школы в РФ…

И последнее обстоятельство (last but not least) — поскольку специальность «Прикладные математика и физика» включает не только вычислительную составляющую, но и такие важные аспекты, как экспериментальные исследования и обработка данных (лабораторные работы), то студентам необходимы соответствующий программный инструментарий. В рамках «цифровых» курсов студенты изучают различное ПО для подготовки графиков, написания текстов и пр. (в основном свободное программное обеспечение, включая \LaTeX, SciDaVis и др.). Хорошим подспорьем для них является также и знание языков программирования, позволяющих автоматизировать процессы обработки данных и их анализ.

Таким образом, складывается ситуация, когда, с одной стороны, учебная специальность «далека» от канонического ИТ, а с другой — программирование является важной составляющей как в обучении, так и для дальнейшей профессиональной деятельности. И во весь рост встаёт вопрос, вынесенный в заголовок доклада: так какой же язык программирования следует учить специалистам, чья основная область деятельности — вычислительная прикладная физика? Как обычно бывает в подобных ситуациях, не существует «серебряной пули» — одного «универсального» ЯП, позволяющего и обрабатывать данные, и создавать вспомогательные инструменты для их анализа, и писать высокопроизводительные программы (в том числе для HPC). В настоящее время такую нишу пытается занять ЯП Julia[4], который совмещает одновременно и возможность написания высокопроизводительного кода, и простоту и наглядность для написания простых программ для обработки и анализа данных. К сожалению, несмотря на весьма быстрое развитие языка и его инфраструктуры, в настоящий момент имеется очень мало как различных учебных материалов на русском языке, так и опыта его использования в преподавательской среде. Весьма вероятно, что этот язык прочно займёт свою нишу в области научных вычислений и станет там весьма распространён, но скорее всего не в ближайшем будущем.

Таким образом, текущие реалии таковы, что наиболее «подходящим» ЯП для обучения, а также для обработки и анализа и данных, был и остаётся Python. Именно по этой причине этот язык был выбран в качестве ЯП для обучения студентов, поступающих на направление «Прикладные математика и физика». ЯП Python преподаётся в течение двух первых семестров первого курса бакалавриата. Для обучения созданию высокопроизводительных программ с возможностью параллелизации (OpenMP и MPI) по-прежнему используется Fortran, который в настоящее время преподаётся в рамках второго семестра первого курса.

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


Программирование для непрограммистов — какой язык программирования учить специалистам по численному моделированию? (2024)!.jpg

Примечания и ссылки

  1. Официальный сайт Физико-механического института с описание направления подготовки «Прикладные математика и физика», [1]
  2. Шелест В. Д., Программирование: учебное пособие, 2022
  3. Индекс TIOBE популярности языков программирования (май 2024), [2]
  4. Язык программирования Julia, [3]