Поради щодо навчання за допомогою живого кодування


11

Я беру участь у курсі програмування та алгоритмів першого курсу. У нещодавній лекції я вирішив представити матеріал за допомогою прямого кодування , що по суті означало, що я сиджу за клавіатурою і пишу код та оцінюю його, використовуючи emacs для полегшення процесу.

Це було досить вдало, і студенти прокоментували, наскільки вони оцінили більш (між) активний формат. Оскільки це була моя перша спроба використання цього формату навчання, я знаю, що він не працював ідеально. Деякі проблеми були пов'язані з тим, що я не настільки розумний з emacs, як я мав би бути, а інші - з тим, щоб дозволити студентським питанням забирати мене занадто далеко від мого сценарію. Я знаю, що можу краще.

Які є вказівки щодо лекцій (та інших демонстрацій) з використанням лекцій із кодування в прямому ефірі?
Яких підводних каменів слід уникати?


2
У мене є застереження щодо прямого кодування (переважно щодо пропускної здатності та ілюзії розуміння). Тим не менш, дві пропозиції: 1) Чи ви розглядали можливість використання систем відповідей у ​​класі для структурування питань? 2) Я поняття не маю, наскільки це практично, але використовувати щось на кшталт ideone.com може бути цікаво, оскільки студенти можуть отримати доступ до вашого коду після лекції та запустити його, не встановлюючи необхідні речі.
Рафаель

@Raphael: Я мав їхню увагу набагато краще, ніж раніше, що, безумовно, є плюсом. Ваші дві пропозиції дуже хороші. 1) В даний час лише люди, які насправді стежать, пропонують будь-які відгуки. 2) Моєї мови немає в списку. При цьому весь код доступний у слайдах (які я ігнорував).
Дейв Кларк

Відповіді:


8

Ось кілька порад та підводних каменів, які я зібрав після використання кодування в реальному часі протягом тижня та від розмови з колегою.

ДО

  • Підготуйте сценарій для виконання та спробуйте дотримуватися його.
  • Часто очищайте буфери, щоб зосередити увагу на відповідній частині.
  • Почніть заново для кожної нової теми.
  • Використовуйте більший шрифт.
  • Оволодійте інструментом, який ви використовуєте, щоб не витрачати занадто багато часу на дрібниці.
  • Заздалегідь запрограмуйте фонові функції. Якщо це не особливо актуально, переконайтеся, що вони можуть бути імпортовані, а не відображатись у робочому файлі.
  • В ідеалі працюйте мовою, яка дає вам негайний відгук. Мови з інтерактивною оболонкою найкращі в цьому плані.
  • Використовуючи введений текст, вкажіть очікуваний тип функції, яку ви пишете. Це забезпечує провідне світло для студентів.
  • Вільно робити помилки (хоча і не дуже багато). Проаналізуйте, як це слід виправити.
  • Не забувайте - малюнок малює тисячу слів: переплетення слайдів та чорно / дошки працюють із сеансом кодування.
  • Майте підсумкові слайди для окупованих вами точок
  • Іноді під час зміни коду можливо зробити копію та змінити копію. Це забезпечує точку порівняння.
  • Періодично чистіть код.
  • Прийміть, що ви будете робити помилки і відкрито дозволяєте учням виправляти вас --- це полегшує вашу роботу і дає їм можливість.
  • Напишіть код у власному стилі. Наприклад, ви, можливо, скопіювали код з іншого місця. Але це буде важко відтворити. Краще написати це у власному стилі. Наприклад, я завжди пишу викривлені функції, тому що я програмую в основному Haskell. Але Standard ML використовує ідіому рідше. Очікування кривих функцій - найпоширеніша помилка, яку я роблю в класі.
  • Фізично переконайтеся, що у вас добре облаштований простір. Хороша клавіатура, на потрібній висоті, кабелі все в потрібних місцях, фізичні перешкоди на шляху тощо. Займіть хвилину, перш ніж ви почнете, щоб ваш простір працював на вас, а не на вас.
  • Один із підходів - писати все, що кажуть студенти, навіть якщо це неправильно. Це змушує учнів робити кодування та фіксацію. Добре ідею очистити код наприкінці. Такий підхід може створити в класі модель уваги та взаємодії, оскільки учням потрібно звернути увагу, щоб слідкувати за тим, що відбувається.

НЕ

  • Не оптимізуйте свій код під час руху та не порушуйте його таким чином, що ви не можете його виправити.
  • Уникайте спілкування з комп'ютером. Поговоріть зі студентами!
  • Уникайте занадто великого набору тексту, особливо кодового коду. Використовуйте своє оточення, щоб допомогти вам виплюнути шаблони для вас.
  • Якщо ви використовуєте текстовий редактор, уникайте постійного прокручування. Це спричинить хворобу руху у тих, хто намагається слідувати.
  • Якщо ви користуєтеся текстовим редактором, перш ніж вносити радикальні зміни у свій код, попередити учнів про те, що ви збираєтесь це зробити, щоб вони могли відслідковувати, що відбувається.

1
Скільки учнів у вашому класі? Мені подобаються ваші домовленості щодо інтерактивності, але цікаво, як це досягає 50, 100, 250 студентів.
Рафаель

1
Ви публікуєте свій код після уроку? Я уявляю сховище Github, де студенти можуть переглядати різні створені вами версії (можливо, включаючи відшліфовану, коментовану версію, яка ніколи не з’являлась у класі) та дивитись на відмінності. Вони також можуть клонувати сховище, щоб легко використовувати колись написані алгоритми як підпрограми в домашніх завданнях (якщо це бажано).
Рафаель

1
Ви готуєте одиничні тести для запуску коду? Я не впевнений, чи підходить це в кожному класі (чи зосереджено увагу на вивченні принципів мов програмування, розробки програмного забезпечення або алгоритмів?), Але це може навчити деяким кращим практикам на цьому шляху.
Рафаель

2
1) 128 людей зареєструвались на клас, хоча близько 60-80 під'їжджають. 2) Код у мене вже є на слайдах, але слайди не використовую. Тож студенти мають версію того, що я роблю, ніколи жодного з проміжних кроків. Я не дуже впевнений, наскільки цікаво мати всі варіанти. 3) Ні, я не хочу, хоча вони пишуть неофіційні характеристики. Основна увага приділяється вивченню першої мови програмування та деяких алгоритмів / структур даних. Я згоден, хоча. Одиничні тести - це те, що ми розглядаємо як інтеграція більш серйозно в курс. Дякуємо за запитання / неявні поради.
Дейв Кларк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.