วิทย์ม.ต้น: เขียนโปรแกรม ไพธอนแปลงข้อความและเกมทายตัวเลข

ผมให้เด็กๆม.2-3 ไปพยายามเขียนโปรแกรมแปลงข้อความแบบในรูปนี้ครับ:

เด็กบางคนทำได้ บางคนยังติดอยู่ ผมจะเขียนทีละขั้นตอนให้เด็กๆดู ค่อยๆเพิ่มความสามารถโปรแกรมทีละนิดๆ และตรวจเช็คการทำงานแต่ละขั้นตอน เด็กๆได้เรียนรู้เรื่องสตริงที่ไม่สามารถเปลี่ยนแปลงได้ในไพธอน รู้จักการเก็บข้อมูลไว้ในลิสต์แล้วเปลี่ยนเป็นสตริงภายหลัง รู้จักใช้ดิกชันนารีในไพธอนเก็บข้อมูล รู้จัก .maketrans(…) และ .translate(…) ที่สตริงแต่ละตัวสามารถใช้ได้ ดู Jupyter Notebook ที่บันทึกการเรียนที่นี่นะครับ

หน้าตาจอตอนเรียนเป็นประมาณนี้ครับ:

วิธีที่นี้ใช้ if หลายๆอันตรงๆเลย
วิธีนี้ใช้ดิกชันนารีชื่อ translate เป็นตัวเก็บว่าอักษรอะไรเปลี่ยนเป็นอะไร ใช้ if i in translate ดูก่อนว่าตัวอักษรที่จะเปลี่ยนมีอยู่ใน translate
วิธีนี้ใช้ฟังก์ชั่นของสตริงในไพธอนชื่อ .maketrans และ .translate

สำหรับเด็กม.1 เด็กๆได้เรียนรู้เรื่องตัวแปร การเก็บข้อมูลจากผู้ใช้ด้วย input(…) การทำงานตามเงื่อนไขด้วย if … else การทำงานซ้ำๆด้วย for … in และ while(…) การสุ่มตัวเลขด้วย random.randint(…) แล้วหัดทำเกมทายตัวเลขกันครับ

เด็กๆเห็นว่าในการเดาเลขตั้งแต่ 1 ถึง 100 เราสามารถเดาไม่เกิน 7 ครั้งก็ถูกถ้าเราแบ่งครึ่งช่วงการเดาโดยเดาไปตรงกลางของช่วงที่เป็นไปได้ของตัวเลขเสมอ เพราะช่วงที่เป็นไปได้จะมีขนาดเล็กลงเรื่อยๆจาก 100, 50, 25, 13, 7, 4, 2, 1

ถ้าเดาตั้งแต่ 1 ถึง 1,000 ก็เดาไม่เกิน 7 ครั้งเพราะช่วงที่เป็นไปได้จะมีขนาดเล็กลง จาก 1000, 500, 250, 125, 63, 32, 16, 8, 4, 2, 1

ถ้าเดาตั้งแต่ 1 ถึง 2**n ก็เดาไม่เกิน n ครั้ง เพราะช่วงที่เป็นไปได้จะมีขนาดเล็กลงจาก 2**n, 2**(n-1), 2**(n-2), 2**(n-3), … , 8, 4, 2, 1

เมื่อลองคำนวณขนาด 2**i โดยให้ i เป็น 0 ถึง 30 จะเห็นว่า 2**10 มีค่าประมาณหนึ่งพัน 2**20 มีค่าประมาณ หนึ่งล้าน และ2**30 มีค่าประมาณ พันล้าน

ดู Jupyter Notebook ที่บันทึกการเรียนที่นี่นะครับ

หน้าตาจอตอนเรียนเป็นประมาณนี้ครับ:

เราสามารถทายตัวเลข 1 ในล้านตัวได้ภายใน 20 ครั้ง ถ้าเราแบ่งครึ่งช่วงที่ตัวเลขอยู่ข้างในให้เล็กลงครึ่งหนึ่งทุกครั้งที่ทาย

เรียนรู้เรื่องชีพจรและหัวใจ

ผมไปทำกิจกรรมวิทย์กับเด็กๆประถมมาครับ เด็กๆหัดคิดแบบวิทยาศาสตร์โดยพยายามอธิบายมายากล เด็กประถมต้นได้รู้จักชีพจรและหัดจับและฟังชีพจร เด็กประถมปลายได้เห็นวิดีโอแสดงการทำงานของหัวใจ หัดจับและฟังชีพจรครับ 

(อัลบั้มบรรยากาศกิจกรรมอยู่ที่นี่นะครับ กิจกรรมประถมคราวที่แล้วเรื่อง “ร่างกายของเรา, คิดวิธีหาปริมาณอากาศหายใจ” ครับ ลิงก์รวมทุกกิจกรรมอยู่ที่นี่นะครับ)

ก่อนอื่นเด็กประถมต้นได้ดูมายากลนี้ครับ ดูเฉพาะตอนแรกที่เป็นกล ยังไม่ดูส่วนเฉลยตอนหลังนะครับ ไว้ดูเฉลยหลังจากได้พยายามคิดพยายามอธิบายว่ากลแต่ละกลทำอย่างไรกันก่อนครับ กลวันนี้คือดอกไม้ทะลุหน้าอก:

ต่อไปทั้งประถมต้นและประถมปลายได้ดูกลสาวในกล่องครับ:

กิจกรรมนี้ฝีกเด็กๆให้คิดแบบวิทยาศาสตร์ครับ มีการสังเกต การตั้งสมมุติฐานเพื่ออธิบายสิ่งที่สังเกตมา การตรวจสอบสมมุติฐานกับข้อมูลที่สังเกตมา การตั้งสมมุติฐานใหม่เมื่อสมมุติฐานเดิมขัดกับข้อมูล นอกจากนี้เราพยายามให้เด็กๆมีความกล้าคิดและออกความเห็นครับ

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

สำหรับประถมปลาย ผมให้ดูคลิปการทำงานของหัวใจที่แบ่งเป็น 4 ห้อง มีวาล์วบังคับให้เลือดไหลไปทางเดียวกันในทุกจังหวะการบีบตัวของหัวใจครับ:

ผมเอาหูฟังหัวใจเต้น (stethoscope) มาให้เด็กๆทดลองฟังเสียงหัวใจเต้นกันครับ ให้การบ้านเด็กประถมปลายไปคิดด้วยว่าเสียงที่ได้ยินน่าจะเป็นเสียงอะไร

สำหรับเด็กประถมปลายผมให้ดูคลิปสิ่งประดิษฐ์ง่ายๆจากประเทศจีนด้วยครับ:

China FTW! (Not OC, recieved asa whatsapp forward) – some of these devices are pretty nifty. from r/mechanical_gifs

วิทย์ม.ต้น: “False Prophets”, หาทางวัดลมหายใจด้วยวิธีอื่นๆ

วันนี้เด็กๆเรียนเรื่อง False prophets (forecast illusion) จากหนังสือ The Art of Thinking Clearly โดยคุณ Rolf Dobelli ให้ระวังคนดังหรือ”ผู้เชี่ยวชาญ”ที่ชอบให้สัมภาษณ์ทำนายเรื่องต่างๆครับ ส่วนใหญ่เวลาทำนายผิดจะถูกลืมๆไป เวลาทำนายถูกจะตีฆ้องร้องป่าว เวลาเราเห็นใครทำอะไรอย่างนี้ให้คิดว่า 1. แรงจูงใจของเขาคืออะไร ถ้าทายผิดเขาเสียอะไร เขาทำตัวเป็นคนดังเพื่อขายหนังสือหรือสัมมนาหรือเปล่า และ 2. อัตราทำนายถูกที่ผ่านมาของเขาเป็นเท่าไร

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

จากนั้นผมให้เด็กๆดูวิดีโอที่นักปั่นจักรยานโอลิมปิกใช้แรงปั่นไฟปิ้งขนมปังครับ:

นักกีฬาระดับโลกมีกำลังประมาณ 1 แรงม้าครับ (เท่ากับประมาณ 746 วัตต์) พวกเขาจะมีกล้ามเนื้อต่างๆเยอะตอนอยู่เฉยๆก็อาจเผาผลาญพลังงานที่ 150-200 วัตต์ก็ได้ อัตราส่วนการเผาผลาญพลังงานก็อยู่ในช่วงที่ไม่ห่างจากที่เราพยายามวัดสัปดาห์ที่แล้วที่ 3 เท่าครับ (~ 700/200 ถึง 700/150 = 3.5 ถึง 4.7 เท่า)

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

ภาพบรรยากาศกิจกรรมอยู่ที่อัลบั้มนี้ครับ

บันทึกกิจกรรมวิทยาศาสตร์สำหรับเด็กๆ อยากให้คุณพ่อคุณแม่คุณครูเอาไปประยุกต์เล่นกับเด็กๆเยอะๆครับ :-)