Wskazówki dotyczące nauczania przy użyciu kodowania na żywo

11

Uczestniczę w kursie programowania i algorytmów pierwszego roku. W ostatnim wykładzie postanowiłem zaprezentować materiał przy użyciu kodowania na żywo , co w zasadzie oznaczało, że siedzę za klawiaturą i piszę kod i oceniam go, używając emacsa, aby ułatwić ten proces.

Było to dość udane i uczniowie skomentowali, jak bardzo doceniają bardziej (między) aktywny format. Ponieważ była to moja pierwsza próba użycia tego formatu nauczania, wiem, że nie działał on idealnie. Niektóre problemy związane były z tym, że nie byłam tak zręczna w emacsach, jak powinienem, a inne dotyczyły pozwalania studentom na pytania zbyt daleko od mojego scenariusza. Wiem, że mogę zrobić lepiej.

Jakie są wytyczne dotyczące prowadzenia wykładów (i innych pokazów) z wykorzystaniem wykładów z kodowania na żywo?
Jakich pułapek należy unikać?

Dave Clarke
źródło
2
Mam zastrzeżenia do kodowania na żywo (głównie w odniesieniu do przepustowości i iluzji zrozumienia). Niemniej jednak dwie sugestie: 1) Czy zastanawiałeś się nad wykorzystaniem systemów odpowiedzi w klasie do ustrukturyzowania pytań? 2) Nie mam pojęcia, jak to jest praktyczne, ale użycie czegoś takiego jak ideone.com może być interesujące, ponieważ studenci mogą uzyskać dostęp do kodu po wykładzie i uruchomić go bez konieczności instalowania różnych rzeczy.
Raphael
@Raphael: Miałem ich uwagę znacznie lepiej niż wcześniej, co z pewnością jest plusem. Twoje dwie sugestie są bardzo dobre. 1) Obecnie tylko osoby, które naprawdę obserwują, oferują jakiekolwiek informacje zwrotne. 2) Mojego języka nie ma na liście. To powiedziawszy, cały kod jest dostępny na slajdach (które zignorowałem).
Dave Clarke

Odpowiedzi:

8

Oto kilka wskazówek i pułapek, które zebrałem po tygodniu używania kodowania na żywo i po rozmowie z kolegą.

DO

  • Przygotuj skrypt do naśladowania i staraj się go trzymać.
  • Często usuwaj bufory, aby skupić się na odpowiedniej części.
  • Zacznij od nowa dla każdego nowego tematu.
  • Użyj większej czcionki.
  • Opanuj używane narzędzie, aby nie marnować zbyt wiele czasu na trywialności.
  • Wstępnie zakodowane funkcje w tle. Jeśli nie jest to szczególnie istotne, upewnij się, że można je zaimportować, zamiast pojawiać się w pliku roboczym.
  • Idealnie działa w języku, który zapewnia natychmiastową informację zwrotną. Najlepszym pod tym względem są języki z interaktywną powłoką.
  • Używając wpisanego tekstu, podaj oczekiwany typ pisanej funkcji. Zapewnia to uczniom światło przewodnie.
  • Swobodnie popełniaj błędy (choć nie za dużo). Krok, w jaki sposób należy to naprawić.
  • Nie zapomnij - obraz maluje tysiąc słów: przeplatane slajdy i czarno-biała tablica współpracują z twoją sesją kodowania.
  • Przygotuj slajdy podsumowujące dla omówionych punktów
  • Czasami, podczas modyfikowania kodu, może zrobić kopię i zmodyfikować kopię. To stanowi punkt odniesienia.
  • Okresowo czyść kod.
  • Zaakceptuj, że popełnisz błędy i otwarcie umożliwisz uczniom poprawienie cię - to ułatwia twoją pracę i daje im siłę.
  • Napisz kod w swoim własnym stylu. Na przykład możesz skopiować kod z innego miejsca. Ale będzie to trudne do odtworzenia. Lepiej pisać w swoim własnym stylu. Na przykład zawsze piszę funkcje curry, ponieważ programuję głównie Haskell. Ale Standard ML używa tego idiomu rzadziej. Oczekiwanie funkcji curry jest najczęstszym błędem, jaki popełniam w klasie.
  • Fizycznie upewnij się, że masz dobrze skonfigurowaną przestrzeń. Dobra klawiatura, na odpowiedniej wysokości, kable we właściwych miejscach, przeszkody fizyczne na drodze itp. Poświęć chwilę, zanim zaczniesz przygotowywać przestrzeń dla siebie, a nie przeciwko tobie.
  • Jednym z podejść jest pisanie tego, co mówią uczniowie, nawet jeśli jest to złe. W ten sposób uczniowie wykonują kodowanie i naprawianie. Na koniec warto wyczyścić kod. Takie podejście może stworzyć model uwagi i interakcji w klasie, ponieważ uczniowie muszą zwracać uwagę na to, co się dzieje.

NIE

  • Nie optymalizuj swojego kodu w locie i niszcz go w taki sposób, aby nie można go było naprawić.
  • Unikaj rozmowy z komputerem. Porozmawiaj ze studentami!
  • Unikaj zbyt częstego pisania, zwłaszcza kodu z bojlerami. Wykorzystaj swoje środowisko, aby pomóc Ci wypluć szablony.
  • Jeśli używasz edytora tekstu, unikaj ciągłego przewijania. Spowoduje to chorobę lokomocyjną, którą próbują podążać.
  • Jeśli korzystasz z edytora tekstu, przed wprowadzeniem radykalnych zmian w kodzie, ostrzeż uczniów, że to zrobisz, aby mogli śledzić, co się dzieje.
Dave Clarke
źródło
1
Ilu uczniów jest w twojej klasie? Lubię twoje DO w kierunku interaktywności, ale zastanawiam się, jak to się skaluje do 50, 100, 250 studentów.
Raphael
1
Czy publikujesz swój kod po zajęciach? Wyobrażam sobie repozytorium Github, w którym uczniowie mogą przeglądać różne utworzone wersje (być może w tym dopracowaną wersję z komentarzem, która nigdy nie pojawiła się na zajęciach) i patrzeć na różnice. Mogą również sklonować repozytorium, aby łatwo używać raz napisanych algorytmów jako podprogramów w zadaniu domowym (jeśli jest to pożądane).
Raphael
1
Czy przygotowujesz testy jednostkowe, aby uruchomić swój kod? Nie jestem pewien, czy jest to odpowiednie w każdej klasie (czy koncentruje się na nauce języków programowania, rozwoju oprogramowania czy algorytmów?), Ale może uczyć kilku dobrych praktyk po drodze.
Raphael
2
1) 128 osób zarejestrowało się na klasę, choć pojawia się około 60–80 osób. 2) Mam już kod na slajdach, ale nie używam slajdów. Więc uczniowie mają wersję tego, co robię, nigdy żadnego z pośrednich kroków. Nie jestem do końca pewien, jak interesujące jest posiadanie wszystkich odmian. 3) Nie, nie robię tego, chociaż piszą nieformalne specyfikacje. Nacisk kładziony jest na naukę pierwszego języka programowania i niektórych algorytmów / struktur danych. Zgadzam się jednak. Testy jednostkowe są czymś, co rozważymy bardziej zintegrowane z kursem. Dzięki za pytania / ukryte wskazówki.
Dave Clarke