Как я могу помочь сокурсникам, борющимся в программировании классов? [закрытый]

14
задан David Barry 22 August 2013 в 20:47
поделиться

11 ответов

Попросите их объяснить вам свой код.

Это позволяет достичь нескольких целей:

  • Во-первых, это демонстрирует, что у них действительно есть код, который можно показать вам. Как они могут чего-то не понять, если они еще даже не открыли текстовый редактор?
  • Затем это демонстрирует, что они понимают код на базовом уровне. Они могли откуда-то скопировать. Если они ничего не знают о коде, который у них есть, это флаг. (Если они действительно скопировали код, но все же нашли время, чтобы понять код, то это все еще академически нечестно, но это ценный навык, который нужно использовать после колледжа.)
  • Наконец, теперь мы находимся в том месте, где они могли бы на самом деле получить это с вашей помощью (или, возможно, даже без!). Если они доберутся до места, где есть дыра в их понимании (поскольку они объясняют вам свой код), и он выскочит на них, значит, они решили свою проблему. собственная проблема. Если они не распознают дыру, то здесь вы можете дать им целевые подсказки.
18
ответ дан 1 December 2019 в 07:51
поделиться

Некоторые мысли:

  1. Занимайтесь парным программированием

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

  2. Проверка выполненной работы

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

  3. Заставьте их повторять вас.

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

  4. Предложите помощь до истечения срока проекта.

    Попытка завершить проект за ночь до назначенного срока - верный способ, по крайней мере, не изучать концепции так тщательно, как вы могли бы в противном случае.

  5. Не программируйте сами.

    Ваши коллеги ничему не научатся, если вы сделаете это за них.

  6. Найдите другие ресурсы

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

  7. Надежда на лучшее

    Вы можете зайти так далеко, только обучая кого-то; они должны хотеть учиться.

3
ответ дан 1 December 2019 в 07:51
поделиться

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

Задайте им вопрос, как работает их код и как, по их мнению, они могут выполнить задачу. Дайте им небольшие толчки в правильном направлении. И никогда НИКОГДА не печатайте что-нибудь для них. Если у вас есть другой компьютер, и вы набираете на нем код, чтобы показать им и показать результаты, это нормально, но не переусердствуйте.

1
ответ дан 1 December 2019 в 07:51
поделиться

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

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

0
ответ дан 1 December 2019 в 07:51
поделиться

Я работал техническим специалистом и службой поддержки отдела информационных технологий (и помогал товарищам). Это то, что я делаю ...

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

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

8
ответ дан 1 December 2019 в 07:51
поделиться

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

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

Наконец, подумайте о том, чтобы пойти к своему профессору и попросить его мнение о том, что вам разрешено и как они могут предложить вам помочь другим. В конце концов, у профессоров многолетний опыт обучения студентов. Более того, будет ли у вас, будучи студентом, возможность стать ТА в будущем? Я поступил в ТА, будучи студентом, и это помогло мне продуктивно использовать свои импульсы для помощи другим, не нарушая никаких кодексов чести. Если у вас есть такие возможности для трудоустройства на бакалавриате, то если профессора увидят вас сейчас как полезный тип, это поможет вам их получить.

2
ответ дан 1 December 2019 в 07:51
поделиться

Я не думаю, что вы должны им помогать. Я считаю, что это нечестно с академической точки зрения. Кроме того, им не поможет то, что вы дадите им ответы или даже когда вы будете рядом, чтобы ответить на вопросы, поскольку, как только они попадут на экзамен (или в реальный мир), вас уже не будет рядом. Им нужно не только научиться программировать самостоятельно (что, предположительно, вы им помогаете), но и самостоятельно получать ответы на свои вопросы. Это означает публикацию в таких местах, как StackOverflow. Возможно, вы захотите порекомендовать им сформулировать конкретный вопрос (всегда хорошее упражнение) и разместить его здесь с пометкой «домашнее задание».

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

2
ответ дан 1 December 2019 в 07:51
поделиться

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

  • Что такое ваша абстракция?

  • Каков пример того, как ваша абстракция должна себя вести? Можете ли вы показать мне другой пример?

  • Есть ли какие-нибудь примеры того, когда абстракция может дать сбой? Как это должно потерпеть неудачу в этом примере?

  • Вы тестировали эти примеры?

  • Каково представление вашей абстракции?

  • Как представление соотносится с абстракцией? Вы можете показать мне картинку? Вы можете показать мне математику?

  • Каким функциям разрешено видеть представление? В чем заключается контракт каждой функции? Удовлетворяет ли представление инварианту, который может принимать функция? Обеспечивает ли каждая функция сохранение инварианта?

  • Что говорит valgrind ?

1
ответ дан 1 December 2019 в 07:51
поделиться

Что касается помощи сокурсникам в целом, я обычно использую подход "глупо играть". Я притворяюсь, что ничего не знаю об их конкретном задании, и прошу их рассказать мне, что они должны делать. Я также прошу их кратко изложить то, что они узнали в классе о той концепции, о которой идет речь в задании. Обычно это занимает около 5 минут и примерно в 95% случаев другой студент ответил на свой вопрос к тому моменту, когда они закончили объяснять мне его. Если они не решили это к этому моменту, я прошу их рассказать мне о своем решении задачи. Поступая так, они обычно улавливают, где их решение отличается от того, что они только что узнали в классе.

Что касается помощи по программированию, я иногда прошу другого студента прислать мне свой код, и я запускаю его через простой сценарий оболочки, который я написал. Этот сценарий вычеркивает из файла кода все, что является , а не комментарием, и я даю результат другому студенту для прочтения.Результирующий файл обычно читается как набросок их кода, и часто они могут увидеть, где их код пошел не так, просто убрав его с пути. Если их подход полностью неверен, я говорю им, чтобы они написали схему того, что должен делать код (в терминах высокого уровня), используя комментарии; после завершения они заполняют каждый раздел схемы кодом, реализующим этот этап схемы (тестирование каждого «фрагмента» по ходу). Это помогает многим людям отделить код от алгоритма (многие общие проблемы, которые я вижу, возникают из-за отсутствия систематического или дисциплинированного подхода к решению проблем, и это упражнение помогает им встать на правильный путь).

Другой метод - отвечать на вопросы, используя другой язык программирования. Например, я помог нескольким своим сокурсникам по проектам Matlab, объясняя концепции, используя C, Ruby или даже псевдокод (который больше похож на простой английский, чем на код). Я знал, что у них гораздо больший опыт работы с другими языками, поэтому я использовал то, что они знали лучше всего, для иллюстрации концепций и призвал их сначала попробовать решить проблему на их «родном языке». Убедившись, что они поняли концепции, они могли работать над выяснением того, как реализовать их на целевом языке. Необходимость изучать новые концепции, пока вы все еще изучаете язык, усложняет и то, и другое. Этот подход также помогает определить, есть ли у них проблемы с пониманием того, как решить проблему или как запрограммировать решение.

0
ответ дан 1 December 2019 в 07:51
поделиться

ПСИХОЛОГИЧЕСКИЙ ПОДХОД

покажите им некоторые популярные ПРИЛОЖЕНИЯ реального мира (в качестве примера), которые они используют изо дня в день ... написанные на том же языке программирования, что и вы пытаются научить .....

  1. объяснять все с фоном
  2. уделять каждому ученику большое значение
  3. всегда использовать синтаксис с цветовой кодировкой
-1
ответ дан 1 December 2019 в 07:51
поделиться

Общий опыт объяснения другим заключается в том, чтобы сначала выяснить, на чем они остановились. Постарайтесь воздержаться от того, чтобы предлагать им решения проблем, которых у них еще нет (даже если вы уверены, что они столкнутся с ними позже). Другими словами, не идите на два шага впереди них. Если у них проблемы с пониманием call-by-value, не объясняйте им рекурсию.

0
ответ дан 1 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: