เคล็ดลับสำหรับการสอนโดยใช้ Live Coding


11

ฉันมีส่วนร่วมในหลักสูตรการเขียนโปรแกรมและอัลกอริทึมปีแรก ในการบรรยายเมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะนำเสนอเนื้อหาโดยใช้การเข้ารหัสสดซึ่งหมายความว่าฉันนั่งอยู่หลังแป้นพิมพ์และเขียนรหัสและประเมินผลโดยใช้emacsเพื่ออำนวยความสะดวกในกระบวนการ

นี่ค่อนข้างประสบความสำเร็จและนักเรียนแสดงความคิดเห็นว่าพวกเขาชื่นชมรูปแบบการใช้งานมากขึ้น (inter) เนื่องจากนี่เป็นครั้งแรกที่ฉันพยายามใช้รูปแบบการสอนนี้ฉันรู้ว่ามันไม่ได้ทำงานอย่างสมบูรณ์แบบ ปัญหาบางอย่างเกี่ยวข้องกับการไม่เข้าใจemacsอย่างที่ฉันควรจะเป็นและอื่น ๆ เกี่ยวข้องกับการอนุญาตให้นักเรียนใช้คำถามที่ทำให้ฉันห่างไกลจากสคริปต์ของฉัน ฉันรู้ว่าฉันสามารถทำได้ดีกว่า

มีแนวทางอะไรบ้างสำหรับการบรรยาย (และการสาธิตอื่น ๆ ) โดยใช้การบรรยายสด
ข้อผิดพลาดที่ควรหลีกเลี่ยงคืออะไร


2
ฉันมีการจองเกี่ยวกับรหัสสด (ส่วนใหญ่เกี่ยวกับปริมาณงานและภาพลวงตาของความเข้าใจ) อย่างไรก็ตามสองข้อเสนอแนะ: 1) คุณได้พิจารณาใช้ระบบการตอบกลับในชั้นเรียนเพื่อจัดโครงสร้างคำถามหรือไม่? 2) ฉันไม่รู้ว่ามันใช้งานได้จริงอย่างไร แต่การใช้บางอย่างเช่น ideone.com อาจน่าสนใจเพราะนักเรียนสามารถเข้าถึงโค้ดของคุณหลังจากการบรรยายและเรียกใช้โดยไม่ต้องติดตั้งอะไรเลย
Raphael

@ ราฟาเอล: ฉันได้รับความสนใจมากขึ้นกว่า แต่ก่อนซึ่งเป็นข้อดี คำแนะนำสองข้อของคุณดีมาก 1) ขณะนี้มีเพียงคนที่ติดตามข้อเสนอแนะใด ๆ จริง ๆ เท่านั้น 2) ภาษาของฉันไม่อยู่ในรายการ ที่กล่าวว่ารหัสทั้งหมดที่มีอยู่ในภาพนิ่ง (ซึ่งฉันไม่สนใจ)
Dave Clarke

คำตอบ:


8

นี่คือเคล็ดลับและข้อผิดพลาดที่ฉันได้รวบรวมหลังจากใช้รหัสสดเป็นเวลาหนึ่งสัปดาห์และจากการพูดคุยกับเพื่อนร่วมงาน

ที่ควรทำ

  • เตรียมสคริปต์เพื่อติดตามและลองทำตาม
  • ล้างบัฟเฟอร์บ่อยครั้งเพื่อโฟกัสที่ส่วนที่เกี่ยวข้อง
  • เริ่มใหม่อีกครั้งสำหรับแต่ละหัวข้อใหม่
  • ใช้แบบอักษรที่ใหญ่ขึ้น
  • ฝึกฝนเครื่องมือที่คุณใช้เพื่อหลีกเลี่ยงการเสียเวลากับเรื่องไม่สำคัญเกินไป
  • มีฟังก์ชั่นพื้นหลังที่กำหนดล่วงหน้า หากไม่เกี่ยวข้องโดยเฉพาะตรวจสอบให้แน่ใจว่าสามารถนำเข้าได้แทนที่จะปรากฏในไฟล์ทำงาน
  • ทำงานอย่างดีเลิศในภาษาที่ให้ความคิดเห็นทันที ภาษาที่มีเชลล์แบบโต้ตอบได้ดีที่สุดในเรื่องนี้
  • เมื่อใช้การพิมพ์ให้ระบุประเภทของฟังก์ชันที่คุณกำลังเขียน สิ่งนี้ให้แสงสว่างนำทางสำหรับนักเรียน
  • ทำผิดพลาดได้อย่างอิสระ (แม้ว่าจะไม่มากเกินไป) ขั้นตอนที่ควรแก้ไขเหล่านี้
  • อย่าลืม - รูปภาพวาดคำพันคำ: สไลด์สอดประสานและกระดานดำ / ขาวกับเซสชันการเข้ารหัสของคุณ
  • มีสไลด์สรุปสำหรับคะแนนที่คุณครอบคลุม
  • บางครั้งเมื่อแก้ไขรหัสอาจทำสำเนาและแก้ไขสำเนา นี่เป็นจุดเปรียบเทียบ
  • ทำความสะอาดรหัสเป็นระยะ
  • ยอมรับว่าคุณจะทำผิดพลาดและเปิดโอกาสให้นักเรียนแก้ไขคุณ --- สิ่งนี้จะทำให้งานของคุณง่ายขึ้นและให้อำนาจพวกเขา
  • เขียนโค้ดในสไตล์ของคุณเอง ตัวอย่างเช่นคุณอาจคัดลอกรหัสจากที่อื่น แต่มันจะยากที่จะทำซ้ำ ดีกว่าที่จะเขียนในสไตล์ของคุณเอง ตัวอย่างเช่นฉันมักจะเขียนฟังก์ชั่น curried เพราะฉันเขียนโปรแกรม Haskell เป็นส่วนใหญ่ แต่ Standard ML ใช้สำนวนน้อยกว่าบ่อยครั้ง การคาดหวังฟังก์ชั่น curried เป็นข้อผิดพลาดทั่วไปที่เกิดขึ้นในชั้นเรียน
  • ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Space เรียบร้อยแล้ว แป้นพิมพ์ที่ดีที่ความสูงที่ถูกต้องสายเคเบิลทั้งหมดในสถานที่ที่เหมาะสมสิ่งกีดขวางทางกายภาพออกไปให้พ้นทาง ฯลฯ ใช้เวลาสักครู่ก่อนที่คุณจะเริ่มทำงานเพื่อให้ได้พื้นที่ของคุณไม่ใช่กับคุณ
  • วิธีการหนึ่งคือเขียนสิ่งที่นักเรียนพูดแม้ว่ามันจะผิด สิ่งนี้จะทำให้นักเรียนทำการเขียนโค้ดและแก้ไข เป็นความคิดที่ดีที่จะทำความสะอาดโค้ดตอนท้าย วิธีการนี้สามารถสร้างรูปแบบห้องเรียนของความสนใจและการมีปฏิสัมพันธ์เพราะนักเรียนต้องให้ความสนใจที่จะทำตามสิ่งที่เกิดขึ้น

DON'Ts

  • อย่าเพิ่มประสิทธิภาพโค้ดของคุณในทันทีและทำลายมันในแบบที่คุณไม่สามารถแก้ไขได้
  • หลีกเลี่ยงการพูดคุยกับคอมพิวเตอร์ พูดคุยกับนักเรียน!
  • หลีกเลี่ยงการพิมพ์มากเกินไปโดยเฉพาะรหัสสำเร็จรูป ใช้สภาพแวดล้อมของคุณเพื่อช่วยให้คุณแยกแม่แบบออกมาสำหรับคุณ
  • หากคุณใช้โปรแกรมแก้ไขข้อความหลีกเลี่ยงการเลื่อนไปมาอย่างต่อเนื่อง มันจะทำให้เกิดอาการเมามันที่พยายามติดตาม
  • หากคุณใช้โปรแกรมแก้ไขข้อความก่อนที่จะทำการเปลี่ยนแปลงรหัสของคุณอย่างรุนแรงเตือนนักเรียนว่าคุณกำลังจะทำเช่นนั้นเพื่อให้พวกเขาสามารถติดตามสิ่งที่เกิดขึ้น

1
คุณมีนักเรียนกี่คน? ฉันชอบกรมสรรพากรของคุณที่มีต่อการโต้ตอบ แต่สงสัยว่าจะมีนักเรียน 50, 100, 250 คนอย่างไร
Raphael

1
คุณเผยแพร่รหัสหลังเลิกเรียนหรือไม่? ฉันจินตนาการถึงแหล่งเก็บข้อมูล Github ที่นักเรียนสามารถเรียกดูเวอร์ชั่นต่าง ๆ ที่คุณสร้างขึ้น (อาจรวมถึงเวอร์ชันแสดงความคิดเห็นที่สวยงามซึ่งไม่เคยปรากฏในชั้นเรียน) และดูความแตกต่าง พวกเขายังสามารถโคลนที่เก็บข้อมูลเพื่อใช้อัลกอริทึมที่เขียนเป็นรูทีนย่อยในการบ้านได้อย่างง่ายดาย (ถ้าเป็นที่ต้องการ)
ราฟาเอล

1
คุณเตรียมการทดสอบหน่วยเพื่อรันโค้ดของคุณหรือไม่? ฉันไม่แน่ใจว่าเหมาะสมหรือไม่ในทุกชั้นเรียน (เป็นจุดเน้นในการเรียนรู้หลักการของภาษาโปรแกรมการพัฒนาซอฟต์แวร์หรืออัลกอริทึมหรือไม่) แต่อาจสอนวิธีปฏิบัติที่ดีที่สุดไปพร้อมกัน
ราฟาเอล

2
1) 128 คนลงทะเบียนในชั้นเรียน แต่ประมาณ 60-80 คนขึ้นไป 2) ฉันมีรหัสในสไลด์อยู่แล้ว แต่ฉันไม่ได้ใช้สไลด์ ดังนั้นนักเรียนมีรุ่นของสิ่งที่ฉันทำไม่เคยมีขั้นตอนกลางใด ๆ ฉันไม่แน่ใจจริงๆว่ามันน่าสนใจแค่ไหนที่มีรูปแบบทั้งหมด 3) ไม่ฉันทำไม่ได้ถึงแม้ว่าพวกเขาจะเขียนข้อมูลจำเพาะอย่างไม่เป็นทางการ มุ่งเน้นไปที่การเรียนรู้ภาษาโปรแกรมแรกและโครงสร้างอัลกอริทึม / ข้อมูลบางอย่าง ฉันเห็นด้วยแม้ว่า การทดสอบหน่วยเป็นสิ่งที่เราจะพิจารณานำมารวมเข้ากับหลักสูตร ขอบคุณสำหรับคำถาม / เคล็ดลับโดยปริยาย
Dave Clarke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.