Canlı Kodlamayı kullanarak öğretim için ipuçları


11

İlk yıl programlama ve algoritma kursuna katılıyorum. Son zamanlarda yapılan bir derste, materyali canlı kodlama kullanarak sunmaya karar verdim , bu da aslında klavyenin arkasında oturduğum ve kod yazıp değerlendirdiğim , süreci kolaylaştırmak için emacs kullandığım anlamına geliyordu .

Bu oldukça başarılıydı ve öğrenciler daha fazla (arası) aktif formatı ne kadar takdir ettiklerini yorumladılar. Bu, bu öğretim biçimini ilk kez kullandığım için, mükemmel çalışmadığını biliyorum. Sorunların bazıları benim olması gerektiği gibi emacs konusunda bilgili olmamakla ilgiliydi ve diğerleri öğrenci sorularının beni senaryomdan çok uzağa götürmesine izin vermekle ilgiliydi . Daha iyisini yapabileceğimi biliyorum.

Canlı kodlama dersleri kullanarak dersler (ve diğer gösteriler) vermek için bazı yönergeler nelerdir?
Kaçınılması gereken tuzaklar nelerdir?


2
Canlı kodlama (çoğunlukla verim ve anlayış yanılsaması ile ilgili) rezervasyonlarım var. Bununla birlikte, iki öneri: 1) Soruları yapılandırmak için sınıf yanıt sistemlerini kullanmayı düşündünüz mü? 2) Bunun ne kadar pratik olduğu hakkında hiçbir fikrim yok, ancak ideone.com gibi bir şey kullanmak ilginç olabilir, çünkü öğrenciler dersten sonra kodunuza erişebilir ve bir şeyler yüklemeye gerek kalmadan çalıştırabilirler.
Raphael

@Raphael: Dikkatlerini eskisinden çok daha iyi buldum, ki bu kesinlikle bir artı. İki öneriniz çok iyi. 1) Şu anda sadece takip eden kişiler her türlü geri bildirimi sunmaktadır. 2) Dilim listede yok. Yani, tüm kod slaytlarda (ki ben yok sayılır) kullanılabilir dedi.
Dave Clarke

Yanıtlar:


8

İşte bir hafta boyunca canlı kodlama kullandıktan ve bir meslektaşımla konuşmamdan sonra topladığım bazı ipuçları ve tuzaklar.

Yapılması

  • Takip etmek için bir komut dosyası hazırlayın ve ona bağlı kalmaya çalışın.
  • İlgili bölüme odaklanmak için arabellekleri sık sık temizleyin.
  • Her yeni konu için yeniden başlayın.
  • Daha büyük bir yazı tipi kullanın.
  • Önemsizlikler üzerinde çok fazla zaman kaybetmemek için kullandığınız araçta ustalaşın.
  • Arka plan işlevlerini önceden kodlayın. Özellikle alakalı değilse, çalışma dosyasında görünmektense içe aktarılabileceklerinden emin olun.
  • İdeal olarak size anında geri bildirim sağlayan bir dilde çalışın. Etkileşimli kabuğu olan diller bu açıdan en iyisidir.
  • Yazarken, yazdığınız işlevin beklenen türünü verin. Bu öğrenciler için yol gösterici bir ışık sağlar.
  • Serbestçe hatalar yapın (çok fazla olmasa da). Bunların nasıl düzeltilmesi gerektiği konusunda adım adım ilerleyin.
  • Unutmayın - bir resim bin kelimeyi boyar: serpiştirme slaytları ve siyah / beyaz tahta kodlama oturumunuzla çalışır.
  • Kapsadığınız noktalar için özet slaytlarınız var
  • Bazen, kodu değiştirirken, belki bir kopya alın ve kopyayı değiştirin. Bu bir karşılaştırma noktası sağlar.
  • Kodu düzenli aralıklarla temizleyin.
  • Hatalar yapacağınızı ve öğrencilerin sizi düzeltmesine açıkça izin vereceğinizi kabul edin --- bu işinizi kolaylaştırır ve onları güçlendirir.
  • Kodu kendi tarzınızda yazın. Örneğin, kodu başka bir yerden kopyalamış olabilirsiniz. Ancak bunun çoğaltılması zor olacaktır. Kendi tarzında yazmak daha iyi. Mesela her zaman körelmiş fonksiyonlar yazıyorum, çünkü çoğunlukla Haskell'i programlıyorum. Ancak Standart ML deyimi daha az kullanır. Curried işlevleri beklemek, sınıfta yaptığım en yaygın hatadır.
  • Fiziksel olarak, alanınızı iyi ayarladığınızdan emin olun. İyi klavye, doğru yükseklikte, kablolar doğru yerlerde, fiziksel engeller yoldan çıkıyor, vb.
  • Bir yaklaşım, yanlış olsa bile öğrencilerin söylediklerini yazmaktır. Bu, öğrencilerin kodlamayı ve sabitlemeyi yapmalarını sağlar. Sonunda kodu temizlemek iyi bir fikirdir. Bu yaklaşım, sınıfta bir dikkat ve etkileşim modeli oluşturabilir, çünkü öğrencilerin neler olup bittiğini takip etmek için dikkat etmeleri gerekir.

YAPILMAYACAKLAR

  • Kodunuzu anında optimize etmeyin ve düzeltemeyeceğiniz şekilde kırmayın.
  • Bilgisayarla konuşmaktan kaçının. Öğrencilerle konuşun!
  • Özellikle kazan plakası kodundan çok fazla yazmaktan kaçının. Şablonları sizin için tükürmenize yardımcı olması için ortamınızı kullanın.
  • Metin düzenleyicisi kullanıyorsanız, sürekli dolaşmaktan kaçının. Takip etmeye çalışanların hareket hastalığına neden olur.
  • Bir metin düzenleyicisi kullanıyorsanız, kodunuzda köklü değişiklikler yapmadan önce, öğrencileri neler yapacağınızı izleyecekleri konusunda uyarın.

1
Sınıfında kaç öğrenci var? Etkileşimlerinize yönelik DO'larınızı seviyorum, ancak bunun 50, 100, 250 öğrenciye nasıl ölçeklendiğini merak ediyorum.
Raphael

1
Kodunuzu dersten sonra yayınlıyor musunuz? Öğrencilerin oluşturduğunuz farklı sürümlere (belki de sınıfta hiç görünmeyen cilalı, yorumlu bir sürüm de dahil) göz atabilecekleri ve farklılıklara bakabilecekleri bir Github deposu hayal ediyorum. Ayrıca, ödevlerinde alt rutin olarak yazılı algoritmaları bir kez kullanmak için depoyu klonlayabilirler (istenirse).
Raphael

1
Kodunuzu çalıştırmak için birim testleri hazırlıyor musunuz? Bunun her sınıfta uygun olup olmadığından emin değilim (programlama dilleri, yazılım geliştirme veya algoritma prensiplerini öğrenmeye odaklanıyor mu?) Ancak yol boyunca bazı en iyi uygulamaları öğretebilir.
Raphael

2
1) 128 kişi sınıfa kayıt yaptırdı, ancak yaklaşık 60-80 kişi geldi. 2) Zaten slaytlarda kod var, ama slaytları kullanmıyorum. Böylece öğrenciler benim yaptığım şeyin bir versiyonuna sahipler, hiçbir zaman ara adımlardan hiçbiri yok. Tüm varyasyonlara sahip olmanın ne kadar ilginç olduğundan emin değilim. 3) Hayır, resmi olmayan özellikler yazmasına rağmen yapmıyorum. Odak noktası ilk programlama dilini ve bazı algoritmaları / veri yapılarını öğrenmektir. Yine de katılıyorum. Birim testleri, kursa daha fazla entegre olmayı düşüneceğimiz bir şeydir. Sorular / örtük ipuçları için teşekkürler.
Dave Clarke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.