Готовых курсов вычислительного мышления пока нет

Вот этот акцент на моделирование и является важным. Текст «Алгоритмика, информатика, моделирование, далее везде»[1] — про обучение информатике детишек на примере четырёх роботов (платоновский робот, робот-из-программы, физический робот-на-коврике, робот-из-возможного мира где-то в космосе). Главное в вычислительном мышлении — это не терять понимания, что моделируют те модели, с которыми ведутся вычисления, с которыми ведутся трансформации. Это нужно научиться отслеживать ещё со времён школьного курса информатики, а уж в нашей программе второго бакалавриата и подавно.

Увы, в вузовские курсы информатики эта постановка задачи не попала. Вместо универсального мышления про информационную работу на курсах учат разным родам «программирования». Доходит до курьёзов, когда один из лучших в мире курсов по развитию вычислительного мышления SIPC[2] приходится убрать из вузовской программы, ибо в его основе функциональная парадигма, а самая популярная сегодня парадигма — объект-ориентированное программирование. Поэтому этот курс нельзя положить в основу курсов программирования, он совсем не экономит время в обучении программированию! Зато он отлично справляется с развитием мозга изучающих его людей, оставаясь удивительно непрактичным в части обучения текущей версии программирования-как-ремесла[3]. Эта критика 2005 года, но в последние несколько лет жизнь ещё раз поменялась, и нужно учитывать вот эти новые программирования — вероятностное, дифференцируемое и всё прочее, что приходит с коннекционистской парадигмой. Базовый курс вычислительного мышления опять должен поменяться.

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

Предмет «вычислительное мышление» будет создан в форме учебника и задач, то есть в форме учебного курса — но поначалу с акцентом не на лёгкость обучения (instructional design), а с акцентом на «все нужные понятия под одной обложкой». Примерно так делался и учебник системного мышления: там нами были вытащены из десятка инженерных стандартов кусочки, относящиеся к системному подходу, и далее они просто были переведены на русский и объединены в связное изложение книги «Системное мышление 2019». Какой язык может лечь в основу такого курса? Есть много разных соображений на этот счёт. Рабочая гипотеза в том, что это может быть Julia[4], язык вычислительной математики. Классический курс программистского мышления на базе Julia уже есть — Think Julia: How to Think Like a Computer Scientists, от Ben Lauwens и Allen Downey.


[1] https://ailev.livejournal.com/1265432.html, Этот подход продолжает реализовываться, см. доклад Кушниренко и Райко «Дошкольная информатика без компьютера» (видео второго доклада https://vimeo.com/337031069, слайды http://g-l-memorial.ice.ru/files/941738/Kushnirenko_Raiko_2019.pptm).

[2] SICP (Structure and Interpretation of Computer Programs вышел в 1979 году, 41 год назад), он был «фундаментальным курсом» для computer science (https://mitpress.mit.edu/sites/default/files/sicp/index.html).

[3] In short, SICP, Scheme, and functional programming don’t prepare students properly for other programming courses and thus fail to meet a basic need — https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf. Название этой критики SICP ровно то, что нам нужно — The Structure and Interpretation of the Computer Science Curriculum (Matthias Felleisen, Northeastern University, Boston, MA, USA, Robert Bruce Findler, University of Chicago, Chicago, IL, USA, Matthew Flatt, University of Utah, Salt Lake City, UT, USA, Shriram Krishnamurthi, Brown University, Providence, RI, USA).

[4] сообщество людей, знакомых с классикой computer science и новыми подходами к моделям вычислений собралась вокруг языка Julia, русскоязычный телеграм-чат https://t.me/JuliaLanguage. Почему Julia? Язык ориентирован на численные методы, это хорошо отвечает stage-of-the-art трендам в вычислительном мышлении. Вот подход к инженерному модулированию на Julia -- https://ailev.livejournal.com/1366789.html. Вот подход к differentiable programming, это по сути стало дизайн-целью Julia: https://julialang.org/blog/2018/12/ml-language-compiler.

И тут два пути: ждать каких-то Великих Гениев, или самим объявлять себя такими и делать. С системным мышлением ровно так и было сделано: просто я (А.Левенчук) взял, и сделал — хотя до сих пор не закончил, работа-то началась по факту осенью 2007 года, когда я столкнулся с системной инженерией и тамошним вариантом системного мышления. С онтологикой и коммуникацией — это делает сейчас Прапион Медведева и Александр Али. Кто сделает это с вычислительным мышлением? Может быть, это будете вы, читатель этого текста?

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

Новости по поводу книги/текста появляются в блоге автора, https://t.me/ailev_blog, предложения и замечания присылать автору по адресу ailev@asmp.msk.su

Источник: книга А.Левенчука «Образование для образованных 2020».