?

Log in

No account? Create an account
На странице Saeed Dehnadi приводится очень интересное исследование,… - Konstantin Savenkov [entries|archive|friends|userinfo]
Konstantin Savenkov

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

[Feb. 5th, 2007|03:21 pm]
Konstantin Savenkov
На странице Saeed Dehnadi приводится очень интересное исследование, посвящённое изучению способностей человека к занятию программированием. Выводы из исследования очень интересные: утверждается, что при помощи предлагаемого теста можно с высокой вероятностью определить, имеет ли смысл вообще учить человека программированию. Т.е. тест позволяет разделить студентов на тех, кто поддаётся обучению и тех, кому программирование будет не под силу.


В чём же идея? Тест состоит из 12 небольших программок, в каждой -- объявление нескольких переменных и оператор присваивания. Предлагается выбрать один из дюжины вариантов значения переменных после выполнения программы. Предполагается, что участники теста программировать не умеют. Таким образом, они должны придумать согласованную модель работы оператора присваивания, и в соответствии с данной моделью ответить на вопросы. Всего, насколько я понял, существует около дюжины различных возможных непротиворечивых моделей оператора присваивания. К тесту предлагается алгоритм анализа результатов, который по ответам относит участника опроса к одной из трёх категорий: "предложил и использовал непротиворечивую модель" (одну для ответов на все вопросы), "предложил и использовал противоречивую модель" (т.е. ответы на разные вопросы соответствуют разным моделям), и "не смог ответить на часть вопросов". Соответственно, люди из первой категории, скорее всего, будут иметь успех в изучении пограммирования, из второй и третьей -- нет.

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

Вот я думаю -- м.б. попробовать этот тест на наших первокурсниках? :-)
LinkReply

Comments:
[User Picture]From: gamajun
2007-02-05 12:57 pm (UTC)
Я бы и на дипломниках попробовал.
(Reply) (Thread)
[User Picture]From: _gq_
2007-02-05 07:44 pm (UTC)
На краснодипломниках :-T
(Reply) (Parent) (Thread)
[User Picture]From: gamajun
2007-02-05 07:53 pm (UTC)
И на сотрудниках! :-Р
(Reply) (Parent) (Thread)
[User Picture]From: heavior
2007-02-05 01:26 pm (UTC)
Жаль нет онлайн версии :-)
протестил бы себя.
(Reply) (Thread)
[User Picture]From: savenkov
2007-02-05 01:36 pm (UTC)
Док с тестом выложен -- скачай и протести :-)
(Reply) (Parent) (Thread)
[User Picture]From: _gq_
2007-02-05 07:47 pm (UTC)
Кость, может устроим в этом году прием студентов в лабу в новом формате?
Для начала попросим решить тест? =\

Только вначале надо на мышах попробовать.
(Reply) (Thread)
[User Picture]From: savenkov
2007-02-05 08:02 pm (UTC)
Он же на первокуров рассчитан. За два года даже мышь можно научить канонической модели оператора присваивания, как мне кажется :-)
(Reply) (Parent) (Thread)
[User Picture]From: kachalin
2007-02-05 08:38 pm (UTC)
Стало интересно, посмотрел вопросы/ответы. Интересно что за модели, есть ли какие-нить толкования неканоническим моделям, потому как есть весьма...кхм...пугающие

но для второкурсников это уже несоклько неактуально, как впрочем и для первокурсников, думаю. Это задача хорошо пошла бы для 8(10) класса школы, когда бесик и ижесними
(Reply) (Parent) (Thread)
[User Picture]From: savenkov
2007-02-05 09:17 pm (UTC)
Это у тех, у кого бесик в 8-10 классе. Таких меньшинство, на самом деле. Это я тебе как бывший-ведущий-прак-на-первом-курсе говорю ;-)
(Reply) (Parent) (Thread)
[User Picture]From: kstoor
2007-02-05 10:37 pm (UTC)
>>Распределение по группам, выполненное на основе тестирования в начале обучения и спустя некоторое время (месяц) одних и тех же студентов, меняется слабо.

Я бы, знаешь, на основании этих данных не студентов бы отсеивал, а преподов гнал к этакой матери. Потому что разницу между присваиванием и условием равенства изучают в четвертом, кажется, классе (и, я думаю, 99% процентов учеников таки усваивают разницу между "2*2=4" и "пусть x = 5").

А вообще такого рода тесты, ясное дело, определяют всего лишь соответствие тестируемого определенной модели мышления -- не факт, что единственно правильной или хотя бы оптимальной.
(Reply) (Thread)
[User Picture]From: savenkov
2007-02-05 10:46 pm (UTC)
1. Э-ээ... ты о чём? При чём здесь условие равенства? Где ты его там увидел? Речь идёт исключительно о различных интерпретациях оператора присваивания. Ты на тест-то посмотрел? :-)

2. Костя, прочитай внимательнее драфт статьи, в которой описана методика тестирования. В том-то и дело, что модель мышления может быть различной, и проверяется лишь её непротиворечивость.
(Reply) (Parent) (Thread)
[User Picture]From: kstoor
2007-02-05 11:16 pm (UTC)
Теперь посмотрел, сорри ;) Просто я эту историю читал уже в чьем-то блоге, и там не было сссылок на первоисточник, а пересказ был, как выясняется, приблизительный. Тест действительно осмысленный и интересный.

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

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

Еще вопросы. Повлияет ли твое знание того факта, что данный студент по результату тестов попал, скажем, в третью группу, на оценку, которую ты ему поставишь на экзамене (предполагаем спорный случай, например, между 4 и 3)? Как ты в принципе относишься к "твердому троечнику" (речь не об отдельном ученике, а о категории)? Его надо "вышибать из профессии" (скажем, завалив ему сессию) или, напротив, для него надо изобретать какие-то новые способы изложения материала, которые позволят ему преодолеть его недостатки?
(Reply) (Parent) (Thread)
[User Picture]From: savenkov
2007-02-05 11:36 pm (UTC)
Я тоже к такой идее в общем отношусь с антипатией.

Однако собака здесь может быть зарыта в иной области, нежели врождённые способности. Для того, чтобы представить в голове некую непротиворечивую модель необходимы, по моему глубокому убеждению, не столько способности, сколько определённое отношение к этому процессу и навыки мыления. Т.е. умение сконцентрироваться. Умение быстро всё проверить, "повертев" модель в голове. Умение, придумав нечто, этим пользоваться, не отклоняться от придуманного, постоянно с ним сверяться.

Я подозреваю, что это вовсе не врождённые способности, но ко времени поступления в ВУЗ уже вполне сформировавшиеся (ну или не сформировавшиеся).

В каком-то смысле здесь можно провести аналогию с музыкальным слухом (ну ты же знал, что она всплывёт? %-)). Да, его можно развить. Но если ты проверяешь абитуриентов, поступающих в Гнесинку, ты, наверное, будешь ожидать, что слух у них некоторым образом уже сформировался. И вряд ли будешь рассчитывать, что он сформируется к сессии, да?

Другое дело, что эти способности никак при поступлении на наш факультет, например, не проверяются. Одно время хотели ввести экзамен по информатике, но вроде не ввели, потому что не во всех школах она есть. А дело-то не в информатике, а в этом свойстве мышления, которое с ней (с программированием) достаточно тесно связано. И, как (вроде бы) показывает это исследование, в отличие от изучения нового языка (смотри, аналогия: нового музыкального инструмента...), приобретение этого навыка требует гораздо больше времени.

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

Впрочем, исследование по ссылке находится в начальной стадии, и очень интересно посмотреть, как оно будет развиваться :-)

(Reply) (Parent) (Thread)
[User Picture]From: savenkov
2007-02-05 11:43 pm (UTC)
В случае с "твёрдым троечником" дело-то в его отношении. Если ему то же программирование не интересно -- зачем его куда-то тянуть. Он найдёт своё место и без этого. Если же интересно, но не получается -- конечно, надо искать способы.

Кстати, вспомнился один интересный случай. Я в своё время (кхе-кхе, старость не радость) проходил собеседование в одной американской компании на должность программера (собеседование прошёл, но оказалось, что не достиг возраста, в котором в штатах можно уходить от налогов -- 21; ну да не в этом дело). Так вот, собеседование вели сурьёзные люди (руководитель московского НЛП-центра Паша Сенаторов), и был там один кандидат, с ИТ-образованием. Так его спросили, что такое рекурсия. Человек выпол в осадок, потом сказал, что без понятия. Задачек не решил почти ни одной. С ним долго и вдумчиво говорили. И взяли. На зарплату, помнится, чуть ли не вдвое больше объявленной. На вакансию, которая открытой не значилась. Проджект-менеджером или в HR, не помнб точно уже. Вот так. Это на тему троечников тянуть)
(Reply) (Parent) (Thread)