В качестве вдохновения я использовал следующие страницы:
Вы также можете использовать задания из конкурсов (пример), но это, скорее всего, потребует некоторой работы с вашей стороны - чтобы обеспечить справедливое распределение заданий (некоторые могут быть хитрыми и не ориентированными на то, что вы упомянули).
Проблема с "веселыми" заданиями заключается в том, что они часто оказываются для студентов более сложными, чем вы предполагали. Особенно это касается студентов с плохим английским и студентов, которые оставляют задания на последнюю минуту. [А потом приходят на SO с вопросами "пожалуйста, сделайте мою домашнюю работу"]. Многие из них будут испытывать трудности с любыми заданиями, которые вы зададите, но вам не нужно, чтобы куча студентов жаловалась на то, что упражнения слишком трудные или не освещены в ваших конспектах лекций.
Мой совет (из собственного опыта) - старайтесь, чтобы объем фоновых знаний и "сложность" заданий по программированию были невысокими.
Постановка интересных задач для необязательных упражнений - разумная идея, хотя важно предупредить студентов, чтобы они не тратили на них время в ущерб другой, более важной работе.
Это то, что вы ищете?
setTimeout('JsFunction1(val);', 0);
setTimeout('JsFunction2(val);', 0);
-121--3594892- Вам придется преобразовать sWorkingLine
в UTF-8, а затем записать его в файл.
WeyCharToMultiByte может преобразовывать строки Юникода в UTF-8, если выбрана кодовая страница CP _ UTF8
.
MultiByteToWeyChar может преобразовывать символы ASCII в Юникод.
Одно дело рассмотреть, может быть, не для первого курса программирования студенты делают, но позже, чтобы передать им обратно код из предыдущих заданий (свое или чужое) для исправления. Это работает лучше, если вы выбираете неправильные представления, в идеале с тонкими недостатками.
Аналогичная идея состоит в том, чтобы иметь последовательность лабораторий, используя (успешно завершенный) код из предыдущей лаборатории в качестве отправной точки. Когда я делал вводный курс программирования (PINK - программирование в инкрементных системах) в LiU, так много лет назад, был один сегмент лабораторной работы, который (по существу) сводился к реализации календаря, используя абстрактные типы и accessors, а затем менял реализацию абстрактного типа впоследствии. Довольно ценный для иллюстрации необходимости предусматривать хорошего интерфейса вам не нужно побочный шаг, если ничего другого (из памяти, я в итоге провел день или два размышляя над «реализацией изменений», то 15-20 минут фактически изменить мои абстрактные типы данных, так как я сделал тяжелую работу вперед и просто нужно было убедить себя в этом).
Свинья на латыни.
Попросите ваших учеников написать код, который переводит текстовый поток с английского на свиную латынь. Правила довольно просты, но они потребуют некоторых интересных особых случаев, особенно когда дело доходит до пунктуации и заглавных букв, требующих от них написания базового сканера / токенизатора.
С типичным предложением вроде этого:
Quietly, Anne walked into the forest.
Вы должны получить следующее:
ietly-quay, Anne-ay alked-way into-ay e-thay orest-fay.
но вы, вероятно, получите:
uietly,-Qay Anne-ay alked-way into-ay e-thay orest.-fay
с неправильной пунктуацией, неправильным расположением Qu и неправильным написанием заглавных букв.
Пара идей, которые находят отклик у студентов:
Самая сложная часть обучения на начальных курсах информатики - это неравенство в способностях программирования в типичном классе. Итак, если вы можете создавать задания, которые могут быть достаточно простыми для менее способных студентов и легко расширенными (например, за счет дополнительных кредитов) на более сложные задачи для продвинутых студентов, то, на мой взгляд, это идеально.