avva: (Default)
Несколько месяцев назад я написал, что запретил себе писать на политические темы, пока не прочитаю один учебник по математике и один по физике. Потом я написал, что прочитал по математике. Недавно я опять стал иногда писать про политику. Напрашивается естественный вопрос, который три или четыре человека задали мне приватно: закончил ли я учебник по физике.

Отвечаю: нет, но я позволил себе перейти на новый режим, в котором я разрешаю себе в любой конкретный день писать о политике, только если в этот день я минимум час позанимался математикой или физикой. Это правило лучше стимулирует то, что я хотел стимулировать. Возможно, кому-то еще будет полезно так попробовать, поэтому решил поделиться. Спасибо за внимание
avva: (Default)
Леонид Посицельский о преподавании математической строгости:

"Сюжет: в университете Торонто первокурсникам читается курс MAT102H5 "Introduction to Mathematical Proofs". Учебник по этому курсу начинается с вывода формулы для корней квадратного уравнения. [...]

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

[...] Ну просто, математическая строгость — это мощный метод познания истины. А не бесполезное занудство. Цель любого разумного преподавания понятия о математическом доказательстве в том, чтобы это продемонстрировать. На примере формулы корней квадратного уравнения, продемонстрировать это невозможно. Другое дело, вы говорите студентам: сумма 1^3 + 2^3 + ... + n^3 равна квадрату суммы 1 + 2 + .... + n. Можно проверить это на примерах n = 2, 3, 4. Это убеждает нас в том, что формула верна для всех n, или остаются сомнения, и хотелось бы более убедительного доказательства? Если неполная индукция кажется кому-то убедительной, то можно подобрать контрпример (какой-нибудь другой пары последовательностей), когда она приводит к ошибочному выводу. Если все-таки признать, что неполной индукции недостаточно, то вот есть метод математической индукции, изготовляющий из нескольких простых выкладок строгое доказательство того, что 1^3 + 2^3 + ... + n^3 = (1 + 2 + .... + n)^2 для всех натуральных n."

Я согласен с тем, что вывод формулы корней квадратного уравнения не подходит в качестве введения в математическую строгость и/или понятия доказательства (что не совсем одно и то же, но разница для первого знакомства не так уж важна). По моему опыту, индукция тоже не очень подходит, по двум причинам. Во-первых, она заранее "выдает секрет": чтобы доказать по индукции, нужно знать формулу, а если знаешь формулу, которая работает, то зачем еще что-то доказывать? Аргумент "а вдруг она работает не всегда" тем более убедительно звучит, чем более ученику и так уже не надо ничего объяснять. Во-вторых, сам метод математической индукции по первому знакомству не убеждает: много движущихся частей и абстракции, самое простое объяснение идет от противного (что само по себе уже непросто для многих).

Что бы я предложил вместо этого для знакомства со строгостью/доказательствами? Во-первых, геометрия просто создана для этого, и исторически именно так все с доказательствами и знакомились. Необязательно расписывать подробно "из постулатов", даже почти целиком визуальные демонстрации подойдут - например, почему у треугольника сумма углов всегда 180 градусов. Давай измерим у одного, другого, третьего, а почему ВСЕГДА так? Вот картинка, после которой ясно, что по-другому быть не может (а это и есть суть математической строгости: идея, что по-другому быть не может). Потом сумма угла 4-х, 5-угольника: априори непонятно, но давай теперь разделим на треугольники, и опять ясно, что ПО-ДРУГОМУ БЫТЬ НЕ МОЖЕТ.

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

Задача про тараканов (девять тараканов на доске 3x3, одновременно каждый переползает на соседнюю по вертикали/горизонтали клетку, может ли получиться, что опять все клетки заняты?) хороший пример, вроде и не получается занять все клетки, если пытаешься, но вдруг что-то упустил? Но и здесь надо быть настороже, если хочешь достучаться до всех учеников, способных это понять. Для многих поначалу тяжело различить "я попытался и не смог и не вижу как сделать" и "это невозможно". Они не научились еще ощущать неоспоримость, финальность этого "невозможно" - и это неудивительно, ведь это и есть математическая строгость, а мы пытаемся ей научить. Другой пример - задача про семь мостов Эйлера. Третий - "пятнашки" Лойда, можно дать конкретное задание перевести 13-15-14 в правильное состояние и рассказать историю о том, как за это был объявлен приз.

Короче, разными способами стремиться вызвать отклик на эту идею "по-другому быть не может" и показывать, как она лежит в основе в самых разных местах. Это собственно строгость. А отдельно от этого - основы доказательства, как главного метода обеспечить строгость в математике. И тут есть своя важность у индукции, у разделения доказательства на разные варианты, у доказательства от противного, у кванторов "для всех" и "существует" и их обращению с логическим "нет" (силлогизмы тут хорошо подходят, как мне кажется), итд. итп.
avva: (Default)
Недавно помогал ребенку подготовиться к контрольной по программированию (школьному предмету; они учат C#). Главной темой были связные списки и работа с ними, что в данном случае было работой с классами типа Node<T>, с методами Get/SetValue(), Get/SetNext().

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

Подумав немного, я решил не разбирать пока эти старые контрольные и их решения, а подтянуть основы. Сидя рядом, просил ребенка писать код НА БУМАГЕ, решающий очень простые задачи одну за другой. Немедленно обсуждали написанное, ошибки в нем, исправляли их и шли дальше. Задачи такие (во всех случаях предполагаем переменную list типа Node<int>, указывающую на первый элемент списка, возможно равную null, если список пустой):

- проверить, пустой ли список
- проверить, есть ли в списке минимум 3 элемента
- проверить, есть ли в списке ровно 3 элемента
- проверить, верно ли, что второй элемент списока равен 4 (не забывать проверки существования элементов)
- если третий элемент списка существует, изменить его значение на 12
- если есть минимум 2 элемента, удалить второй
- распечатать все элементы списка
- проверить, есть ли в списке элемент со значением 5
- если есть хотя бы один элемент, вставить новый элемент с значением 10 на второе место в списке
- удалить все элементы, равные 5, предполагая, что первый не такой
- то же самое, но без предположения, что первый не такой
- найти все элементы в списке, равные 2, и для каждого такого, если следующий тоже 2, а предыдущий не 2, удалить этот следующий
- найти элемент со значением 13, и если после него есть следующий, поменять их местами
- найти минимальный элемент
- вставить элемент на правильное место в отсортированном списке

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

После того, как все эти задачи решаются без сложностей, без ошибок и практически без рассуждений, можно переходить к задачам типа "поменять порядок на обратный" или "найти и удалить все дубликаты в списке с помощью двух вложенных циклов". Не надо с них *начинать*, если основы не делаются быстро, правильно и без сомнений. А это произойдет, когда ментальные образы станут ясными и четкими и будут правильно отражать происходящее на удобном уровне абстракции. Начинающий программист часто не понимает, насколько важны эти ясность и четкость. В таком случае задача наставника - понять это и показать на живых примерах, как и почему они важны.
avva: (Default)
Интересная в педагогическом смысле задача по школьной математике, из журнала "Mathematics Teacher":

"Найдите все решения в целых числах:

1/m + 2/n = 1.

Объясните, откуда вы знаете, что нашли ВСЕ возможные целые решения."

В обсуждениях этой задачи в Твиттере интересно, что люди придумывают самые разные пути (и действительно, кучей способов можно решить эту задачу), но опускают как раз последнюю часть, объяснение того, что других решений нет - и часто одно из этих других решений действительно упускают!

Хотите попробовать?

(Последняя часть - это то, что делает эту в целом легкую задачу затруднительной для школьников, мне кажется. Рассуждения о доказательствах или единственности решений - это в некотором смысле "метаматематика" с точки зрения школьной математики. Он не дается легко, не развивается сам по себе, и на нем редко делает упор школьная программа).
avva: (Default)
Как помочь кому-то выучить с нуля начала вебдизайна и фронтенд-программирования?

(У ребенка в школе есть такие уроки, я на это посмотрел и ужаснулся. Они дают детям делать copy/paste больших кусков HTML и CSS, не объясняя особо, почему и как все это работает, все это делается в Visual Studio и результат просматривается только на локальном сервере, внутрь намешан ASP.NET, разницу между server-side и client-side никто, кажется, не объясняет, в общем бред какой-то)

Я подумал, что план у меня был бы примерно такой.

1. Открываем аккаунт на neocities.org.
2. Делаем домашнюю страницу, изучаем основы HTML, разметку текста, ссылки, картинки.
3. Несколько страниц, простой CSS чтобы сделать красиво, отдельно в файле и внутри HTML.
4. Как работать с devtools, как искать и читать документацию на MDN.
5. Командная строка в линуксе (например), основные команды, что такое процессы, как их запускать/убивать. Простые скрипты, работа с текстовыми файлами, redirect ввода/вывода, pipes.
6. интернет-адреса, поток данных через интернет (без подробностей TCP/IP), модель клиент-сервер, netcat, обмен данными на коленке через netcat.
7. Что такое HTTP, что делает веб-сервер, вкладка network в devtools, установка nginx, менять файлы на сервере и видеть, как они меняются в браузере, как запустить скрипт server-side через nginx.
8. Простые скрипты server-side на коленке, HTML forms, пример страницы, принимающей данные пользователя и записывающей в файл на сервере.
9. Начала джаваскрипта, разница между client-side и server-side, перехват событий от клавиатуры/мышки.
10. DOM, манипуляция DOM из джаваскрипта, box model в CSS, интересные примеры layout с помощью CSS (страница с двумя колонками итд.)
11. Какой-то пример темплейтов server-side (PHP?) и что они дают. jsQuery, почему она удобна, и как то же самое сделать руками. Какой-то CSS framework и что он дает, и как то же самое делать руками. Какой-то большой фреймворк (Vue? React?) и что он дает, и как то же самое сделать руками.
12. Что такое CMS (на примере Wordpress?), зачем нужно, как выглядит изнутри.

Покритикуйте!

Отдельно мне интересно, как можно построить программу обучения такого вида с хорошими (не муторными, не очень длинными, но и не тривиальными) самостоятельными заданиями. На каждый пункт отдельно можно найти книги, tutorials итд. Но есть ли наборы упражнений, постепенно растущих по сложности и учитывающих новый материал? "Следующий шаг: страница с HTML-таблицей, в ней должны быть такие-то данные и выглядеть должна пример так. [пропускаем 50 заданий] Следующий шаг: простейший to-do list, умеет показывать список заданий, принимать новое и удалять сделанное, все через формы и server-side без джаваскрипта". Если знаете что-то такое хотя бы для частей вышеописанной программы, расскажите, пожалуйста.
avva: (Default)
В комментах у Скотта Александра кто-то спросил, как вернуться к программированию, после того, как он работал программистом широкого профиля, но перешел в менеджмент и уже лет 10 не касался кода. Он хочет вернуться к программированию и работать над технически сложным и интересным проектом, которым занимается его компания. Его план был - пройти какой-нибудь из курсов программирования на Питоне на Udemy, а потом учиться эффективно работать с Github Copilot, поскольку похоже, что это то, с помощью чего все улучшают свою продуктивность теперь.

Я написал примерно следующее. Если вы уже были программистом широкого профиля в прошлом, курс на Udemy скорее всего будет слишким примитивным. Я бы на вашем месте пошел прямо сейчас на Advent of Code и начал решать задачи оттуда, начиная с первого дня, на том языке, который вы хотите освоить. Пользуйтесь learnxinyminutes.com как шпаргалкой для того, чтобы привыкнуть к самым основным и простым вещам на этом языке. Если этого не хватает, сделайте поиск в гугле на "[язык] book site:news.ycombinator.com" и почитайте внимательно рекомендации и анти-рекомендации там.

AoC начинается с особенно легких задач, постепенно немного усложняется, и они обычно забавные и нескучные. Конкретно в случае Питона, я бы рекомендовал параллельно с этим почитать немного pytudes Питера Норвига, как пример особенно элегантного, экономного и продуктивного решения задач на Питоне. Можно даже "соревноваться" с Норвигом, например, решая самостоятельно задачи AoC прошлых лет, а потом сравнивая с его решениями. Но это необязательно.

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

Я не понимаю, чем в этом процессе может помочь Copilot, только чем помешать; я бы посоветовал не пользоваться AI-ассистентом в процессе возвращения себе умения уверенно писать программы широкого профиля (или в процессе обучения себя этому умению).
avva: (Default)
Александр Шень написал о двух неопубликованных письмах Колмоговора, написанных в 1977/1978, в которых я бы особенно выделил следующий отрывок:

"9. Отбор талантов.

В узкой области юных математиков я могу считаться специалистом этого дела. Руководимый мною интернат дает не плохие результаты. Нам приходится производить отбор в 15 лет. Если бы имели более широкие возможности собирать 13-14 летних на летние сборы и осуществлять там отбор на основе глубокого знакомства с каждым кандидатом, то мы предпочли бы более юный возраст. Хотя 13 лет все равно казались бы мне сомнительными. А с двенадцатилетними я заведомо не советовал бы возиться. Специфические, нужные нам, способности, повидимому, формируются позднее. Участники школьных математических кружков для 12-летних в большинстве потом разбегаются. В таких кружках первенствуют девочки, которые в большинстве теряют интерес к математике уже в 15 лет. Это, конечно, не значит, что для занятий математикой не нужны способности, тренировку которых надо начинать раньше. Но эта общая сообразительность и изобретательность может с успехом развиваться хоть на рыбной ловле в наблюдениях за птицами, в играх и т.д. Способный “дикийˮ мальчик, заинтересовавшийся математикой в 14 лет к 19 годам может уже начать печатать собственные научные работы [зачернено Архивом]. В музыке серьезную тренировку восприимчивости и техники, конечно, надо начинать раньше. А для цирковых артистов и, ставшего профессиональным, спорта8 еще раньше.

10. Форсирование развития.

Несомнено, что всегда лучше свобода. Поэтому, запрещать досрочно сдавать экстернат за среднюю школу, конечно, не следует. Но думаю, что и родителей и ребят надо предупреждать о сомнительности такого пути. И во всяком случае не устраивать подготовительных летних школ для экстерната. У меня довольно большой личный опыт с вундеркиндами, в частности, и с наблюдающимися иногда серьезными их срывами. Ребятам я говорю, что величайший математик нашего века – Гильберт по его словам "в гимназии не слишком торопился заниматься математикой, так как был уверен, что со временем станет [стану] отличным математиком"."


Колмогоров почти походя бросает "Участники школьных математических кружков для 12-летних в большинстве потом разбегаются. В таких кружках первенствуют девочки, которые в большинстве теряют интерес к математике уже в 15 лет."
Он не уточняет, почему по его мнению большинство девочек, интересовавшихся математикой, теряют этот интерес уже в 15 лет. Но то, что он наблюдал вокруг себя в СССР, неплохо соответствует, насколько я понимаю, и тому, что наблюдают энтузиасты математического образования на Западе, тогда и сейчас. В более широком смысле, не к математическим кружкам, а к научно-математическому-инженерному (STEM - Science, Technology, Engineering, Mathematics) образованию, это называется "the pipeline problem" - проблема конвейера. Можно бороться с гендерной дискриминацией в университетах или на рабочих местах, но это не может сильно изменить процент женщин среди программистов или инженеров, если действительно верно то, что еще в старших классах школы девочки (ясно, не все, я говорю о статистике по всему населению) теряют интерес к точным наукам по сравнению с мальчиками.

Вот это вот "которые в большинстве теряют интерес к математике уже в 15 лет" мне бы хотелось лучше понять.
avva: (Default)
Ютуб подкинул неожиданно вводный урок японского (непонятно, как сработал алгоритм, я вроде не давал к этому оснований). Очень впечатлила подготовка учительницы, все эти замечательные таблички и летающие анимешные персонажи, а особенно - энтузиазм и драйв. Вот реально круто по-моему задана планка.



(P.S. Это не платная реклама, у меня ее нет, и автор канала не в курсе, что я написал запись. Мне реально случайно попалось и реально понравилось)
avva: (Default)
В моей недавней записи про качественные лекции по школьной математике и другим наукам несколько человек предложили "100 уроков математики для детей" Алексея Савватеева. Я этого раньше не видел, так что пошел посмотреть. Меня это начинание, мягко говоря, не впечатлило и не удивило.

"100 уроков математики" позиционируется как уроки для учеников 6-7 класса. Они начинаются с нескольких обзорных лекций по уже знакомому материалу, но быстро переходит зачем-то на суммы бесконечных рядов. В районе 15-й лекции он Савватеев доказывает основную теорему арифметики, а к 28-й лекции доходит до теории групп (через перестановки) и до нормальных подгрупп. Все это выглядит то ли безумно, то ли нелепо, то ли одновременно. Есть очень мало шести- или семиклассников, которым что-то скажет и покажется полезным и интересным доказательство того, что ядро гомоморфизма групп - подгруппа:



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

Возможно, на 140-миллионную страну можно найти 5-10 матклассов школьников, которые могут это понять. Но и этим ребятам намного полезнее будет прочитать это в нормальном учебнике абстрактной алгебры (который они в таком случае способны прочитать), а не в этом изложении. Однако эти лекции позиционируются как материал для широкого круга 6- и 7-классников, у которых есть "склонность и способности" к математике. Это очень глупо и пожалуй вредно (для тех, кто купится на такое, реально попробует следить за лекциями и решит, что нет таланта к математике).

Есть определенные сложности с тем, чтобы объяснить студентам университета начала абстрактной алгебры, как хорошо знают преподаватели. Студентам требуется время и терпение, чтобы усвоить как следует понятия алгебраической структуры, функций между множествами, инъективности и сюръективности, образа, прообраза и ядра итд. Школьникам в шестом/седьмом классе, даже склонным к математике - кроме крохотного числа очень редких исключений - это намного тяжелее, чем студентам. Количество определений не столь уж велико, леммы все простые - вполне можно это выписать на доске за 30-60 минут и "объяснить" с несколькими примерами, шутками и прибаутками. Это не значит, что школьники реально это поймут. Савватеев не выказывает никаких следов того, что у него есть это понимание - понимание сложности усвоения абстракций и алгебраического языка - и что он может как-то с этим справиться.

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

Он очень подвижнический человек, ездит всюду с громадным числом выступлений и лекций и записывает кучу всего, и в глазах горит энтузиазм неподдельный, да. Может, сам этот энтузиазм и подвижничество вдохновляют каких-то людей - моет быть, не буду спорить. Но каждый раз, когда я пытался собственно посмотреть какую-то его лекцию для детей или 'гуманитариев', это был полный кринж и фейспалм.
avva: (Default)
По идее, должны быть курсы школьных предметов на Ютубе, рассказанные такими хорошими учителями, что выходит лучше, чем большинство реальных учителей в школе, и можно детей подтягивать по ним. Я имею в виду не интересные ознакомительные видео, не крутые эксперименты, а именно целый курс школьных уроков, рассказывающий целиком весь материал, с домашними заданиями на доске итд.

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

А по математике есть такое же? Полный курс, который можно смотреть урок за уроком, по алгебре/геометрии, по классам или вместе, но главное - чтобы исключительно качественный с педагогической точки зрения?

А по другим предметам?
avva: (Default)
Пару дней назад прочитал, а где - запамятовал:

У одного советского математика (имя тоже забыл) была интересная привычка. Каждый раз, когда он очередным студентам на очередном курсе анализа доказывал основную теорему анализа (связь между интегралом и первообразной функцией), он прекращал урок в этот момент, на последнем слове доказательства, сколько бы времени до конца урока еще ни оставалось. Идея была в том, чтобы студенты запомнили этот день и это событие как что-то особенное.

Сегодня прочитал в обсуждении темы "Книги, который каждому физику стоит прочесть" (stackexchange, по-английски). Кто-то очень хвалит учебник электромагнетизма Перселла. "Все студенты моего потока прочитали Перселла. Когда я обсуждал его с сокурсниками, снова и снова слышал от них одно и то же: что при чтении главы пятой, "Поля движущихся зарядов", их настолько потрясло это иллюстрированное введение в релятивистский электромагнетизм на 25 страницах, что, закончив эту главу, они посидели неподвижно, уставившись в стенку, минут десять, потом прочитали ее заново."
avva: (Default)
10 ноября Яндекс проводит онлайн-конференцию об образовании, которая мне показалась интересной, и постараюсь посмотреть некоторые выступления.

Программа тут: https://yace.yandex/program, основной сайт https://yace.yandex. Регистрация на сайте бесплатная, передачи в записи можно будет посмотреть и после (я не вполне понял, надо ли для этого регистрироваться, но на всякий случай это сделал).

Мне особенно интересно будет послушать, например, про "Математика - современная латынь или скорее английский?", "Что делать родителю, если ребенку трудно учиться", и "Как цифра стала частью нашей жизни с детьми и почему этого не стоит бояться".

Дисклеймер: я узнал об этой конференции, потому что представитель Яндекса предложила мне оплатить ее рекламу. Я не вижу в этом ничего ужасного, если реклама ясно помечена как реклама, но у себя в блоге принципиально не помещаю платную рекламу никакого вида. В итоге мне она показалась достаточно интересной, чтобы написать по своей инициативе. Эта запись никак не оплачена.
avva: (Default)
Константин Кноп предлагает свой ответ на вопрос "Зачем мы учим всех математике". Меня эта тема живо интересует, и я хочу полностью скопировать его аргумент (из фейсбука) и предложить к обсуждению.

Зачем учить математике.

В моем объяснении будет точный ответ на вопрос "почему" и отсутствие ответа на вопрос "зачем". Но, в общем, вы поймёте...

Одна из наиболее часто встречающихся попыток ответа упирает на пользу от нахождения математики "в голове". Мол, ну вот попадёте вы на необитаемый остров, где нет ни гугла, ни мэпла, ни даже справочника Выгодского, не говоря уже о Бронштейне-Семендяеве, - и как вы там без математики выживать-то будете?

Этот аргумент уже давно вызывает только улыбку. Ибо если вам суждено попасть на необитаемый остров, то загнётесь вы на нем вовсе не от незнания математики, а от гораздо более простых незнаний и неумений. А в нормальной жизни вся польза от математики укладывается в классический анекдот о бывшем студенте:
"Знаете, профессор, - однажды я уронил ключи в сточную решетку и никак не мог достать. Но потом нашел проволоку, согнул ее в форме интеграла и извлек!"

"В быту" даже самая несложная математика пригождается в лучшем случае 10% тех школьников и студентов, которые ее изучали в течение 10-13 лет. И, разумеется, чем сложнее математический аппарат, тем меньшему числу людей он бывает нужен. Фактически, "выучил-сдал-забыл" - это универсальное умение будущих инженеров и прочих "технарей", которое оттачивается в первую очередь на вузовском курсе высшей математики. И даже у тех, кому дальше предстоит сдавать еще теормех и сопромат, не говоря уже о курсах с дифурами и краевыми задачами, - знание общего курса высшей математики как-то подвыветривается уже к концу обучения в вузе.

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

Взглянем на историю человечества и историю обучения человечества научным знаниям. Традиция учить наукам уходит в глубину веков. И из той же глубины идет содержание математики как одной из важнейших наук. Математика рождалась как чистая практика где-то в Месопотамии и Египте. Она возвысилась до высокой теории в Древней Греции и Древнем Китае. Она разделилась на алгебру и геометрию и продолжила развиваться и делиться дальше. Все это время она оставалась востребованной чисто практически, подпитываясь задачами практики, физики, астрономии, банковского и страхового дела, экономическими вопросами и пр. Соответственно, многие поколения людей вынуждены были изучать математику - те самые синусы с логарифмами, - просто потому, что без этого было не освоить никакую "ученую" профессию.

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

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

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


Согласны ли вы с уважаемым К. Кнопом в том, что изучение математики развивает мозг и в этом его основная цель? Если нет, то каково ваше мнение по этим вопросам?
avva: (Default)
Для тех, кому интересны проблемы преподавания математики и популярной математики: проходит трехдневная виртуальная конференция на эти темы, с участием российских и французских учителей и математиков. Начало сегодня прямо сейчас, первая рабочая сессия в 17:00 по Москве, ссылка на Зум есть в записи Константина Кнопа на фейсбуке, программа всех трех дней есть на http://ifmep2021.com/, записи стримятся в Ютуб.

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

О преподавании:

"Ещё в школе мой учитель математики Зив Б.Г. заметил как-то, что из меня получится хороший учитель. Мне кажется, что это происходит вот из-за чего. Сам себя я считаю туповатым, т.е. до меня достаточно долго доходит смысл чего-либо, Но когда я постигаю, это сидит очень глубоко и я могу этим пользоваться в разных ситуациях. Поэтому рассказывая, считаю, что и остальные не слишком быстро постигают сказанное, и уважая их, стараюсь объяснять максимально доступно. Есть рассказчики, которые по разным причинам опускают иногда целые куски доказательств, говоря магические слова типа «очевидно». Когда я слушаю такого, мне кажется, что опускают меня самого. У каждого свой стиль. Всеобщего рецепта, кроме того, что надо любить и уважать своих подопечных, предложить не могу."

Об идеях:

"Очень сильное влияние на меня, хоть и заочно, оказал И.Р.Шафаревич. Меня поражали его результаты, которые появлялись в работах как некий фокус, вдруг. Когда я уже непосредственно с ним общался, я спросил, как он смог догадаться до такого неожиданного результата. Он ответил, что читал немецких классиков в оригинале и, говоря сегодняшним сленгом , «раскрутил» одно соотношение Эйзенштейна. После этого я утвердился во мнении, что не мемуары выдающихся учёных интересны потомкам, а то, как они дошли до той или иной идеи, истоки их мышления. Но я практически не видел ничего подобного в книгах по истории математики, к сожалению."
avva: (Default)
Когда обучаешь ребенка программированию с нуля, это, наверное, хороший способ узнать, какие важные принципы или правила кажутся само собой разумеющимися, но на самом деле их надо перенять и впитать. Я писал уже в прошлый раз о том, что очень важно на мой взгляд работать над прослеживанием работы программы у себя в голове. Следующий урок с моей дочкой заставил меня задуматься о том, как мы вообще представляем себе инструкции, которые даем компьютеру. Язык программирования это *язык*, но в отличие от человеческих языков он требует от нас сознательно ограничить себя в том, что мы пытаемся сказать.

Я начал урок с нескольких заданий растущей сложности. Ребенок уже знает, что такое PRINT "something", PRINT X, INPUT X, IF/THEN/ELSE, GOTO, и выражения типа X=X+1, хотя я не уверен пока что, что твердо понимает, что такое переменная в отличие от просто числа.

- Итак, начинаем с программы, которая просто печатает имя JULIA.
- Это легко: 10 PRINT "JULIA".
- Теперь пусть программа распечатает это пять раз подряд.
- Тоже легко: 10 PRINT "JULIA JULIA JULIA JULIA JULIA JULIA".
- Нет, пусть каждое имя будет отдельно на своей строке.
- Хорошо, тогда 10 PRINT "JULIA", 20 PRINT "JULIA" итд.

- Теперь следующее задание. Пусть программа спросит у меня число, и если например это 4, то она четыре раза напечатает JULIA.
- Хорошо, начинаем с 10 INPUT X, это мы умеем. А теперь...

И тут ребенок серьезно завис, причем не так, как я ожидал. Мы не учили еще циклы, но она уже знает, как что-то делать снова и снова и остановиться по условию (IF ... THEN END, а потом GOTO назад на нужную строку). Я думал, что она пойдет в эту сторону, но будет сложно переоткрыть идею переменной-счетчика. Оказалось - нет, она пыталась найти способ "сказать" компьютеру сделать именно то, что надо, за один раз. Например, может PRINT X "JULIA"? Нет, так это не работает. А если PRINT "JULIA" * X? Нет, это же умножение, а "JULIA" это не число (да, я знаю про Питон). Папа, а как будет "раз" по-английски, чтобы написать "X раз"?

То есть сложной является сама идея того, что язык программирования - "интерфейс" разговора с компьютером - твердо ограничен некоторыми рамками, и надо в них укладываться. Да, мы не учили конечно еще весь язык, только малую часть, но у нее не было интуитивного ощущения того, что есть эта граница, мы просто до нее не добрались еще. Я несколько раз старался объяснить, что надо решить это задание, пользуясь только тем, что мы уже знаем, и составляя это вместе, но ей, кажется, было сложно понять, как это вообще. Сказали "распечатай X раз", надо найти способ сказать компьютеру это, чтобы он сделал. Идея "сознательно разбить задание на более элементарные шаги, про которые мы уже знаем, что компьютер умеет их выполнять", оказывается сложной и неинтуитивной.

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

- Давай сделаем что-то другое. Начнем с программы, которая просто печатает 1 2 3 4 5, каждое число отдельно.
- Это легко. 10 PRINT 1, 20 PRINT 2 итд.
- Хорошо, теперь, как сделать, чтобы программа печатала 1 2 3 4 5 6 итд. и не останавливалась, до тысячи и дальше?

Тут пришлось подумать. Я напомнил "как мы делали, чтобы программа делала что-то снова и снова, как в игре про 4 2 1?". Да, точно, GOTO. Первая попытка: 10 PRINT 1, 20 GOTO 10. Очевидно неверно. Что нужно делать, чтобы число все время менялось? Да, точно. Следующая попытка: 10 X=1, 20 PRINT X, 30 GOTO 20. Опять не то, да, забыла увеличить число. Следующая попытка:
10 X=1, 20 PRINT X, 30 PRINT X=X+1, 40 GOTO 20. Что-то не так, что? Нет четкого разделения PRINT и присваивания в уме, оба что-то делают с X. Подумай, что надо изменить. Следующая попытка наконец верна: 10 X=1, 20 PRINT X, 30 X=X+1, 40 GOTO 20. Наслаждаемся бегущим рядом чисел. (все это занимает вместе считанные минуты, просто мне показалось интересным записать подробно эти попытки, и первый опыт по сути отладки программы).

- Хорошо, а теперь можешь сделать так, чтобы она печатала не до бесконечности, а когда дойдет например до 20, остановилась?

Подумала, вспомнила про IF ... THEN END, перечитала прошлую программу, где это использовала, и вставила 35 IF X=20 THEN END. Работает!

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

Подумала, вставила 5 INPUT Y, и заменила условие IF X=20 на if X=Y. Работает!

Но не совсем. Если я ввожу 20, она печатает до 19 и останавливается. Что не так? Почитала еще раз программу, подумала, и заменила условие на IF X=Y+1 (лучше было передвинуть условие раньше, перед увеличением, но это уже мелочи).

ОК, теперь у нас есть программа, она работает. Запустили несколько раз, проверили, все хорошо.

- Хорошо, теперь я тебя попрошу сделать небольшое изменение, ты только не пугайся, если это немного взорвет мозг. Попробуй вместо 20 PRINT X написать 20 PRINT "JULIA". Что тогда будет?

Стала изменять это в программе, еще до запуска появилось подозрение. Запустила. Шок, изумление на лице, "Папа, ты взорвал мне мозг! Это же делает то, что ты от меня хотел. Действительно, это же так просто!"
avva: (Default)
Я не помню, писал ли об этом уже, но без иронии полагаю Бейсик хорошим первым языком программирования. Причем не любой Бейсик, а такой олдскульный, с номерами строк (не QBasic). Например, GW-BASIC, на котором я когда-то сам учился программировать (если не считать язык Лого с "черепашьей графикой", про который было в какой-то книге - предлагаю не считать). Это было на компьютерах Yamaha, которые в большом количестве установили в классах и институтах СССР во второй половине 80-х, и язык формально говоря назывался MSX-BASIC, но почти не отличался от более известного GW-BASIC.

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

Бейсик с номерами строк, без блоков, ограниченных скобочками, без подпрограмм с названиями, словно создан для того, чтобы направить внимание ученика в эту сторону (а почему "словно создан", собственно? Наверное, специально именно так и создан для этого, его же придумали, как язык для обучения). Чтобы сделать что-то нетривиальное, ученик обязян отслеживать глазами ход работы программы, а номера строк дают ему конкретные "зацепки", облегчающие это дело поначалу. Есть и еще преимущества. Сознательно бедный язык, никакой тебе богатой стандартной библиотеке, никаких "импортов" как в Питоне, но вместе с тем включает все нужное для простой работы с числами, строками и графикой (чтобы дети могли рисовать и игры придумывать). Но главное преимущество - отказ от структурного подхода, номера строк. Если бы не это, я бы предпочел для первоначального обучения использовать Питон или Джаваскрипт. А так - можно начать с Бейсика, и через какое-то время перейти к более серьезным языкам.

(Да, я знаю, есть Scratch, и есть игры типа CodeMonkey для совсем маленьких, и я в общем-то не против, я только за, но это как язык Лого с черепашками в моем детстве. Не совсем то же самое. Не вполне то, что надо. Так мне кажется. Если вам идеально подходит, я только рад)

Не убедил вас? Наверное, не убедил, но если вдруг заинтересовались, то современная среда GW-BASIC, почти полностью совместимая с оригиналом, называется PC-BASIC; или можно взять настоящий GW-BASIC (легко находится, где скачать) и запустить внутри DOSBOX, тоже вполне работает.

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



Кто помнит, какие простые программы/игры можно с ребенком сварганить на Бейсике? Мы только-только начали. Игру "отгадай число от 1 до 100" тоже уже написали. Завтра буду циклы объяснять, может, на примере проверки, простое число или нет. А дальше я уж и забыл, чего надо. Может, простая графика и прямая дорога оттуда к рисованию движущихся точек/линий на экране. А может, остаться еще в тексте и разбираться дальше с числами/строками, если найду интересные идеи для программ.
avva: (Default)
Гильберт Стрэнг более полувека преподает математику в МИТ, из них 40 лет - линейную алгебру. Автор одного из самых популярных учебников линейной алгебры по-английски.

И вот недавно он решил, что умножение матриц надо преподавать не так, как обычно, и как в его книге, и как он 40 лет преподавал, а по-другому. Написал об этом статью пару лет назад ("Multiplying and Factoring Matrices"), а в этом году еще и записал шесть видео-уроков с объяснениями этого нового пути и почему так лучше.

Уроки я не смотрел пока, сразу скажу; статью пролистал. Главная идея - это что процесс умножения матриц следует преподавать и представлять не как "строки умножить на столбцы", а как "столбцы умножить на строки". Пусть есть две матрицы A[m x n], и B[n x p]. Тогда

"строки умножить на столбцы": в ячейку [i,j] результата попадает произведение i-й строки A и j-го столбца B.
"столбцы умножить на строки": результат является суммой n матриц вида "i-й столбец A - матрица mx1 - умножить на i-ю строку B - матрицу 1xp". Каждое такое произведение это матрица mxp ранга 1, и их сумма по всем i дает результат.

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

- исключение переменных по методу Гаусса
- ортогонализация Грама-Шмидта
- спектральная теорема для симметричной матрицы
- спектральное разложение для n независимых собственных значений
- сингулярное разложение

Понятно, что с точки зрения реального математического содержания здесь ничего нового нет. Но именно с педагогической точки зрения мне неясно - вряд ли же это впервые кто-то так предлагает обучать студентов умножению матриц в курсе линейной алгебры? Может, математики выскажут свое мнение о том, известен этот метод или нет, и что они вообще о нем думают? Как-то любопытно стало.
avva: (Default)
Забавным и интересным показался совет, прозвучавший в дискуссии "Полезные советы для повышения эффективности разработчика" на Hacker News. Перевожу:

"Я записываю себя во время программирования с помощью OBS Studio и притворяюсь, будто я крутой стример (хоть никто это не увидит). Это помогает потому что:

1. Помогает мне не отвлекаться. Есть конкретное задание для этого видео, именно его и выполняю.
2. Я учусь лучше формулировать то, чем занимаюсь, какие есть проблемы, решения итд.
3. Мотивирует. Я же не могу разочаровать свои "тысячи поклонников".
4. Потом могу посмотреть, где я зависал/ошибался и учиться на ошибках.
5. Это прикольно. Я могу шутить, ругаться как хочу (моим зрителям больше 18).
6. Я филиппинец, но записываю по-английски, это помогает практиковать язык."

С моей точки зрения 1 и 3 главное, интересно, насколько такое реально помогает. Я вряд ли буду, но реально интересно. Кто-нибудь пробовал?

Кстати, если у вас есть какие-то неожиданные помогающие вам способы улучшить свою эффективность программиста (любимый редактор? любимая музыка или белый шум? Pomodoro timer? Сложная система самовнушения?), поделитесь в комментариях!
avva: (Default)
В дополнение к предыдущей записи.

В общем, я думаю, что погорячился и высказал гораздо более резкое и безапелляционное мнение, чем имел основания сказать, опираясь на свой прямой и даже непрямой опыт. Смешал в кучу много разных вещей - школьное обучение и вузы; в каком стиле пишут учебники и на что настроена школьная программа; математику и другие предметы, не говоря уж о спорте, у которого своя специфика, даже если в чем-то мне показалось схожим. Кроме того, вышло такое противостояние цивилизаций, вопреки тому, что я хотел сказать (но не написал как следует). На самом деле "Запад" бывает очень разный, я не раз читал о том, скажем, что в этом смысле советский-российский подход довольно близок французскому (личного опыта нет) и вместе они противостоят англо-американскому. Короче, вышла фигня какая-то. Извините, если кого обидел.

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




P.S. Раз уж написал об этом, упомяну также несколько интересных материалов, о которых узнал из комментариев к прошлой записи:

1. Математик Андрей Тоом написал статью (англ.) "Word Problems in Russia and America" (2005). Он утверждает там, если грубо упростить, что советское математическое образование было лучше из-за того, что было много словесных задач. Мне это кажется немного странным, потому что вроде бы и в израильской школе, и в том, что видел в англоязычных школьных учебниках, я видел кучу словесных задач. Но я не прочитал еще статью Тоома, а она длинная, с подробными примерами разных типов задач (очевидных и с подвохом итд.), мне кажется, это как минимум должно быть интересным для прочтения.

2. В обсуждении на Hacker News кто-то написал, что все студенты-физики в Индии в престижном университете IIT дрожат от страха перед переведенным с русского задачником Иродова "Задачи по общей физике". Я о нем никогда не слышал (тут нет ничего удивительного), скачал и посмотрю.

3. Еще один задачник, который мне выдали в виде свидетельства того или иного тезиса, уже не помню, если честно, какого - Моденов, "Сборник задач по математике с анализом решений" (1959). Не знаю, насколько он знаменит, но мне понравился особенно тем, что там есть длинная третья глава с разбором типичных ошибок при решении математических задач - и стратегий их решения в разных областях математики. Опять-таки еще не прочитал, но собираюсь, выглядит интересно.

June 2025

S M T W T F S
123 4 567
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 5th, 2025 10:55 pm
Powered by Dreamwidth Studios
OSZAR »