Как я могу помочь учащимся, участвующим в программировании?
Я студент-информатик, закончивший свой второй семестр классов программирования. Я наслаждался ими совсем немного и многому научился, но, похоже, другие студенты борются с концепциями и заданиями больше, чем я. Когда назначается задание, неизбежная электронная почта группы выходит за день или два раньше, когда люди нуждаются в какой-либо помощи либо с определенной частью проблемы, либо иногда людям просто сложно узнать, с чего начать.
Мне бы очень хотелось помочь, но мне трудно думать о правильном способе оказать им помощь, не давая им ответа. Когда мне сложно понять концепцию, фрагмент кода может пойти мне на помощь, но в то же время, если это имеет большой смысл, может быть трудно подумать о другом способе его решения. Кроме того, раздел "Академическая целостность" каждого задания всегда представляет собой накладное предупреждение о совместном использовании кода с другими. Я пробовал использовать псевдокод, чтобы помочь другим понять ход программы, оставив им понять, как реализовать некоторые ее аспекты, но я не получал слишком много отзывов и не знаю, насколько это действительно помогло им или если они просто путают их дальше.
Итак, я в основном смотрю, есть ли у кого-нибудь опыт с этим, или хорошие способы, которыми я могу помочь другим студентам подтолкнуть их в правильном направлении или помочь им правильно подумать о проблеме.
Ответы
Ответ 1
Попросите их объяснить вам свой код.
Это выполняет несколько вещей:
- Во-первых, это демонстрирует, что на самом деле у них есть код, чтобы показать вам. Как они могут не понимать что-то, если они еще не открыли текстовый редактор?
- Далее, он демонстрирует, что они понимают код на базовом уровне. Они могли бы скопировать его откуда-то. Если они не знают в первую очередь о коде, который у них есть, это флаг. (Если они скопировали код, но все же нашли время, чтобы понять код, то это все еще академически нечестно, но это ценное умение использовать после колледжа.)
- Наконец, теперь мы находимся в том месте, где они могли бы получить его, с вашей помощью (или, возможно, даже без!) Если они доберутся до места, где дыра в их понимании (поскольку они объясняют свой код вам), и он выскакивает на них, тогда они решили свою проблему. Если они не распознают отверстие, тогда вы можете дать им целевые подсказки.
Ответ 2
Я работал в TA и в отделении отдела CS (и помогал приятелям). Это то, что я делаю...
Изложите проблему, найдите связанную проблему, затем выполните соответствующую проблему с ними. Если они не могут установить соединение, вы не можете им помочь.
Отредактируйте: и откажитесь от помощи с более простым базовым синтаксисом, если они ищут помощь днем или днем. Вещи должны были быть рассмотрены задолго до крайнего срока. Преследование людей в день - это не очень хорошая практика для вас.
Ответ 3
Некоторые мысли:
-
Выполняйте парное программирование
Попросите ученика (человека, которому вы помогаете) сидеть в кресле и что-то кодировать. Может быть фрагментом кода, может быть частью проекта, что угодно, если он представляет что-то, что у них есть. Когда они идут, укажите (не грубо) места, где они, возможно, сделали что-то неправильно, или что-то, что можно улучшить.
-
Проделанная работа
Одна из вещей, которая помогала мне больше всего в том, чтобы иметь сверстников (в отличие от учителя или студента-помощника), пересматривает мой код. В большинстве случаев сверстник мог указать места, где они могли бы сделать что-то по-другому.
-
Заставьте их повторить.
Я часто заставляю людей помогать учиться повторять то, что я только что сказал, чтобы понять, понимают ли они это или имеют какие-либо вопросы. Вы были бы удивлены, как часто люди не говорят, когда они что-то не понимают.
-
Предоставьте помощь перед тем, как проект будет готов.
Попытка получить проект за ночь до его появления - это верный способ, по крайней мере, не изучать концепции так тщательно, как вы могли бы в противном случае.
-
Не записывайте его самостоятельно
Ваши сверстники ничего не узнают, если вы сделаете это для них.
-
Найти другие ресурсы
Помощник, дружелюбный профессор, еще один из ваших сверстников, может быть бесценным. Если вы обнаружите, что ваш стиль преподавания не очень хорошо сочетается с одним из способов обучения ваших сверстников, укажите их на кого-то, кто мог бы помочь им больше.
-
Надеемся на лучшее
Пока вы учите кого-то; они должны учиться.
Ответ 4
Одна вещь, которая может быть полезной для ваших сокурсников, - это указать на аналогичный код в примечаниях к лекции (или если вы не читаете лекционные заметки в своих собственных заметках). Таким образом, вы только показываете им то, что сказал профессор, но делаете это полезным образом.
Если другой ученик открыт для этого, задавая им вопросы обо всем, что они пробовали, и почему было бы полезно.
Наконец, подумайте о том, чтобы обратиться к своему профессору и попросить его или ее вклад в то, что вам разрешено делать, и как они могут предложить вам помочь другим. В конце концов, у профессоров есть многолетний опыт обучения студентов. Более того, у вас будет возможность в качестве бакалавра стать ТП в последующие годы? Я добрался до TA в качестве бакалавра, и это помогло мне продуктивно использовать мои импульсы, чтобы помочь другим, не нарушая кодов чести. Если у вас есть такие возможности трудоустройства для выпускников, позволяя профессорам видеть вас сейчас, так как полезный тип поможет вам их приобрести.
Ответ 5
Я не думаю, что вы должны помогать им. Я думаю, что это академически нечестно. Кроме того, они не помогают вам дать им ответы или даже чтобы вы были рядом, чтобы отвечать на вопросы, так как как только они попадут на экзамен (или в реальный мир), вас там не будет. Им нужно не только научиться программировать самостоятельно (что, по-видимому, вы им помогаете), но и отвечать на свои вопросы самостоятельно. Это означает публикацию в таких местах, как StackOverflow. Возможно, вам захочется рекомендовать, чтобы они сформулировали конкретный вопрос (всегда хорошее упражнение) и разместили его здесь с тегом домашней работы.
Когда я принимал уроки CS в колледже, было несколько учеников, которые просто не могли кодировать или проектировать вообще (и я думаю о классе разработки программного обеспечения старшего уровня, в частности). Они также не имели понятия, как решать проблемы или где искать вещи, где можно получить ответы на вопросы или какие вопросы задавать. Они были совершенно беспомощны, потому что они потратили большую часть своего студенческого времени, работая над своей домашней работой/проектами в группах и имея более талантливых членов группы, держащих их. Не увековечивайте это. Последнее, что требуется отрасли, - это более некомпетентные программисты, которые с хорошими оценками заканчивают свое резюме.
Ответ 6
Всякий раз, когда я пытался научить свою подругу, как программировать, я почти ничего не делал, кроме как задавать вопросы. (она добралась до утверждения .each
, прежде чем соскучиться)
Задайте им вопрос, как работает их код и как они думают, что они могут выполнить задачу. Дайте им small подталкивание в правильном направлении. И никогда НИКОГДА не вводите что-нибудь для них. Если у вас есть другой компьютер и введите код, чтобы показать их и показать им результаты, это нормально, но не делайте этого.
Ответ 7
Вот совет, который я даю своим учителям-ученикам: избегайте ответов ученикам. Вместо этого задайте им вопросы. И убедитесь, что задайте вопросы, которые они могут задать себе в будущем. Для материала, который я преподаю, вот некоторые из вопросов, которые я хочу, чтобы все студенты спрашивали себя:
-
Какова ваша абстракция?
-
Каков пример того, как должна вести себя ваша абстракция? Можете ли вы показать мне еще один пример?
-
Есть ли примеры того, где абстракция разрешена? Как это может произойти на этом примере?
-
Вы тестировали эти примеры?
-
Каково представление вашей абстракции?
-
Как представление относится к абстракции? Можете ли вы показать мне фотографию? Можете ли вы показать мне математику?
-
Какие функции разрешено видеть в представлении? Каков контракт каждой функции? Представляет ли представление инвариант, который может принимать функция? Сохраняет ли каждая функция инвариант?
-
Что означает valgrind сказать?
Ответ 8
Одной из наиболее распространенных проблем в обучении является определение того, понял ли вас ученик. Легкий и эффективный способ определить, следует ли продолжать или перефразировать, чтобы ученик продемонстрировал свое понимание, выполнив что-то тесно связанное, но не идентичное.
Кроме того, поскольку программирование - это, по сути, проблемы с текстом, важно, чтобы ученик разбивал вещи на шаги. Я бы попросил их шаг за шагом, прежде чем я показал им что-нибудь. Слишком много людей получают зависание в синтаксисе и никогда не прибивают то, что они пытаются сделать, прежде чем нырять.
Ответ 9
Общий опыт объяснения вещей другими - это выяснить, где они стоят в первую очередь. Попытайтесь воздержаться от предоставления им решений проблем, которых у них еще нет (даже если вы уверены, что они натолкнутся на них позже). Другими словами, не ходите на два шага впереди них. Если у них возникают проблемы с пониманием позывных значений, не объясняйте их рекурсию.
Ответ 10
Что касается общения со студентами в целом, я обычно использую подход "глупая игра". Я притворяюсь, что я ничего не знаю об их конкретном задании, и я прошу их ускорить то, что они должны делать. Я также прошу их дать мне быстрый обзор того, что они узнали в классе, о любой концепции, о которой идет речь. Обычно это занимает около 5 минут и около 95% времени, а другой студент ответил на свой вопрос к тому моменту, когда они закончили объяснять это мне. Если они не решили это к этому моменту, я прошу их пройти меня через их решение к заданию. При этом они обычно ловят, где их решение отклоняется от того, что они только что сказали, что узнали в классе.
Что касается помощи по программированию, я иногда прошу другого студента отправить мне свой код, и я запускаю его через простую оболочку script, которую я написал. Это script зачеркивает все в файле кода, который не является комментарием, и я даю результат другому ученику для чтения. Получаемый файл обычно читается как контур их кода, и много раз они могут видеть, где их код поступил неправильно, просто избавив код от пути. Если их подход совершенно неверен, я говорю им написать схему того, что должен делать код (в терминах высокого уровня) с использованием комментариев; после завершения этого они заполняют каждый раздел схемы кодом, который реализует этот контурный шаг (проверяя каждый "кусок" по мере их поступления). Это помогает многим людям отделять код от алгоритма (многие общие проблемы, которые я вижу, проистекают из отсутствия систематического или дисциплинированного подхода к решению проблем, и это упражнение помогает получить их на правильном пути).
Другой метод - ответить на вопросы с использованием другого языка программирования. Например, я помог нескольким моим коллегам по проектам Matlab, объяснив концепции с использованием C, Ruby или даже псевдокода (которые больше похожи на обычный английский, чем на код). Я знал, что у них гораздо больше опыта работы с другими языками, поэтому я использовал то, что они знали лучше всего, чтобы проиллюстрировать эти концепции и призвал их сначала решить проблему на своем "родном языке". Как только они были уверены, что понимают концепции, они могут работать над выяснением того, как реализовать их на целевом языке. Необходимость изучать новые концепции, пока вы все еще изучаете язык, усложняет работу. Этот подход также помогает определить, есть ли у них проблемы с пониманием того, как решить проблему или как закодировать решение.
Ответ 11
ПСИХОЛОГИЧЕСКИЙ ПОДХОД
показать им некоторые популярные реальные приложения (в качестве примера), которые они используют изо дня в день... написанные на том же языке программирования, который вы пытаетесь учить.....
- объяснить все с фоном
- дать каждому учащемуся значительную важность.
- alwaysss использовать синтаксис с цветовой кодировкой