Все записи

/add, [603]

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

Речь на самом деле шла о позиционных системах счисления. Годовой курс методов программирования в Высшем колледже информатики при НГУ для 10-11 классов опирается на семестр информатики, в течение которого деток учат писать простые программы (ветвления, циклы, массивы, строки, файлы) на Паскале. После чего они сдают экзамен и попадают в наши строгие, но справедливые руки, и мы сначала месяц рассказываем им начальный уровень C, а затем ещё месяц говорим про системы счисления (в основном про двоичную, но стараемся давать больше в общем виде) и представление данных в ЭВМ. Так вот у этих двух девушек с системами счисления случился некоторый затык. Они их не поняли. Явление не такое уж и редкое, но в эту субботу я никуда не торопился и решил потратить немного времени и выяснить: может, это я что-то не так объяснял?

Обычно, если ты видишь, что человек, которому ты что-то объясняешь, тебя слушает, пытается понять, но не понимает, происходит это потому, что у тебя неверная информация о «начальных условиях»: ты думаешь, что он знает какие-то базовые вещи, а на самом деле это не так. Например, человек может не понимать, что в программировании называют переменной и чем это отличается от переменной в математике. Он будет входить в ступор при виде строки x = x + 1 и уж точно не поймёт, как работает цикл for. Если человек не понимает, что такое функция, бесполезно объяснять ему, что такое производная и почему (fg)' = f'g + fg': очевидно, он не поймёт. Самое, пожалуй, сложное — это определить ту точку, ту «дырку» в знаниях, после которой надо аккуратно выстроить всё остальное.

У вчерашних девушек пробел оказался на уровне первого или второго класса. Они не умели считать. Нет, само собой, они знали, что 8 + 1 = 9, а 9 + 1 = 10. Знали, но не особо понимали, почему. В итоге я рисовал на доске палочки, потом вместе вместо каждых десяти палочек рисовали крестик, а вместо каждых десяти крестиков — звёздочку. Записывали числа в виде «три звёздочки, два крестика и четыре палочки» и разбирались, почему 302 («три звёздочки и две палочки») — это не то же самое, что 32 («три крестика и две палочки»). За это время я успел написать несколько СМСок знакомым, в которых красочно описывал всё, что думал по поводу происходящего. Напоминаю, это был десятый класс.

Следующим шагом было предложение группировать палочки не по 10 штук, а по 7. Проверка на понимание: «давайте придумаем способ определения, как вот это наше число 302 запишется по новой схеме, с группировкой по 7 элементов». Ещё две минуты — и студентки сами в терминах палочек формулируют алгоритм перевода числа в семеричную систему счисления. Я громко говорю «слава Богу» и понимаю, что объяснить им представление целых чисел меньше нуля — это просто дело принципа.

В итоге я провёл там две лишних пары, выпил литр колы и извёл огромное количество мела. Девушки неплохо размяли мозги, придумывая, как можно представить число –5 в восьмиразрядной сетке таким образом, чтобы и формат был удобным, и сложение логичным. Знаете, как приятно смотреть, как человек сам придумывает сначала прямой, потом обратный и, наконец, дополнительный код? Я теперь знаю.

За вчерашний день я понял две вещи. Во-первых, первая «дырка» в знаниях может располагаться на любом уровне — хоть на уровне первого класса, пожалуйста. Во-вторых, дико приятно видеть, как человек, который две пары назад не знал или не понимал абсолютно ничего, уходит «просветлённым». Пожалуй, это то ощущение, из-за которого мне до сих пор интересно преподавать, даже учитывая заметное невооружённым взглядом снижение уровня детей: три года назад этих девушек отчислили бы, не особо заботясь поиском пробелов в их образовании.

P.S. Если вы дочитали это до конца, у вас было некоторое свободное время. Потратьте ещё пару минут и представьте ситуацию: подходит к вам третьеклассник и просит объяснить умножение столбиком:

 34
 12
 --
 68
34
---
408

Нужно ли ему объяснять, зачем 34 сдвигается влево, или просто сказать «так надо»? Если мы объясним, почему, поймёт ли он? Если нет, не получим ли через семь лет очередного человека, которому надо будет рассказывать про палочки и крестики?