การแยกส่วนประกอบ และการย่อยปัญหา (Decomposition)
การคิดเชิงคำนวณ (COMPUTATIONAL THINKING)
เป็นกระบวนการวิเคราะห์ปัญหา เพื่อให้ได้แนวทางหาคำตอบอย่างเป็นขั้นตอนที่สามารถนำไปปฏิบัติได้โดยบุคคลหรือคอมพิวเตอร์อย่างถูกต้อง การคิดเชิงคำนวณ เป็นกระบวนการแก้ปัญหาในหลากหลายลักษณะ เช่น การจัดลำดับเชิงตรรกศาสตร์ การวิเคราะห์ข้อมูล และการสร้างสรรค์วิธีแก้ปัญหาไปทีละขั้น รวมทั้งการย่อยปัญหาที่ช่วยให้รับมือกับปัญหาที่ซับซ้อนหรือมีลักษณะเป็นคำถามปลายเปิดได้วิธีคิดเชิงคำนวณ จะช่วยทำให้ปัญหาที่ซับซ้อนเข้าใจได้ง่ายขึ้น เป็นทักษะที่เป็นประโยชน์อย่างยิ่งต่อทุก ๆ สาขาวิชา และทุกเรื่องในชีวิตประจำวันซึ่งไม่ได้จำกัดอยู่เพียงการคิดให้เหมือนคอมพิวเตอร์แต่เป็นกระบวนการคิดแก้ปัญหาของมนุษย์ เพื่อสั่งให้คอมพิวเตอร์ทำงานและช่วยแก้ปัญหาตามที่เราต้องการได้อย่างมีประสิทธิภาพ
ซึ่งปัจจุบันนี้ได้ถูกบรรจุอยู่ในหลักสูตรการเรียนการสอนขั้นพื้นฐานสำหรับโรงเรียนทั่วประเทศเรียบร้อยแล้ว นอกจากวิชานี้จะสอนเรื่องการประยุกต์ใช้เทคโนโลยี และการเข้าใจสื่อสมัยใหม่แล้ว องค์ประกอบที่สำคัญที่สุดอันหนึ่งคือการสอนเรื่องของ การคิดเชิงคำนวณ (computational thinking) ที่จะพัฒนาให้เด็กๆ เกิดกระบวนการคิดเชิงวิเคราะห์ คิดอย่างเป็นระบบด้วยเหตุผลอย่างเป็นขั้นเป็นตอนเพื่อแก้ปัญหาต่างๆ สามารถนำไปปรับใช้เพื่อแก้ไขปัญหาในสาขาวิชาต่างๆ ได้ทั้ง คณิตศาสตร์ มนุษยศาสตร์ หรือวิชาอื่นๆ
4 เสาหลัก ของการคิดเชิงคำนวณ
- Decomposition (การย่อยปัญหา) หมายถึงการย่อยปัญหาหรือระบบที่ซับซ้อนออกเป็นส่วนเล็กๆ เพื่อให้ง่ายต่อการจัดการและแก้ปัญหา เช่น หากต้องการเข้าใจว่าระบบของจักรยานทำงานยังไง ทำได้โดยการแยกจักรยานออกเป็นส่วนๆ แล้วสังเกตและทดสอบการทำงานของแต่ละองค์ประกอบ จะเข้าใจได้ง่ายกว่าวิเคราะห์จากระบบใหญ่ที่ซับซ้อน
- Pattern Recognition (การจดจำรูปแบบ) เมื่อเราย่อยปัญหาออกเป็นส่วนเล็กๆ ขั้นตอนต่อไปคือการหารูปแบบหรือลักษณะที่เหมือนกันของปัญหาเล็กๆ ที่ถูกย่อยออกมา เช่น หากต้องวาดซีรี่ส์รูปแมว แมวทั้งหลายย่อมมีลักษณะบางอย่างที่เหมือนกัน พวกมันมีตา หาง ขน และชอบกินปลา และร้องเหมียวๆ ลักษณะที่มีร่วมกันนี้ เราเรียกว่ารูปแบบ เมื่อเราสามารถอธิบายแมวตัวหนึ่งได้ เราจะอธิบายลักษณะของแมวตัวอื่นๆ ได้ ตามรูปแบบที่เหมือนกันนั่นเอง
- Abstraction (ความคิดด้านนามธรรม) คือการมุ่งความคิดไปที่ข้อมูลสำคัญ และคัดกรองส่วนที่ไม่เกี่ยวข้องออกไป เพื่อให้จดจ่อเฉพาะสิ่งที่เราต้องการจะทำ เช่น แม้ว่าแมวแต่ละตัวจะมีลักษณะเหมือนกัน แต่มันก็มีลักษณะเฉพาะตัวที่ต่างกัน เช่น มีตาสีเขียว ขนสีดำ ชอบกินปลาทู ความคิดด้านนามธรรมจะคัดกรองลักษณะที่ไม่ได้ร่วมกันกับแมวตัวอื่นๆ เหล่านี้ ออกไป เพราะรายละเอียดที่ไม่เกี่ยวข้องเหล่านี้ ไม่ได้ช่วยให้เราอธิบายลักษณะพื้นฐานของแมวในการวาดภาพมันออกมาได้ กระบวนการคัดกรองสิ่งที่ไม่เกี่ยวข้องออกไป และมุ่งที่รูปแบบซึ่งช่วยให้เราแก้ปัญหาได้เรียกว่าแบบจำลอง(model) เมื่อเรามีความคิดด้านนามธรรม มันจะช่วยให้เรารู้ว่าไม่จำเป็นที่แมวทุกตัวต้องหางยาวและมีขนสั้น หรือทำให้เรามีโมเดลความคิดที่ชัดเจนขึ้นนั่นเอง
- Algorithm Design (การออกแบบอัลกอริทึ่ม) คือการพัฒนาแนวทางแก้ปัญหาอย่างเป็นขั้นเป็นตอน หรือสร้างหลักเกณฑ์ขึ้นมาเพื่อดำเนินตามทีละขั้นตอนในการแก้ไขปัญหา เช่น เมื่อเราต้องการสั่งคอมพิวเตอร์ให้ทำงานบางอย่าง เราต้องเขียนโปรแกรมคำสั่งเพื่อให้มันทำงานไปตามขั้นตอน การวางแผนเพื่อให้คอมพิวเตอร์ทำงานตอบสนองความต้องการของเรานี้เอง ที่เรียกว่าวิธีคิดแบบอัลกอริทึ่ม คอมพิวเตอร์จะทำงานได้ดีเพียงใด ขึ้นอยู่กับชุดคำสั่งอัลกอริทึ่มที่เราสั่งให้มันทำงานนั่นเอง การออกแบบอัลกอริทึ่มยังเป็นประโยชน์ต่อการคำนวณ การประมวลผลข้อมูลและการวางระบบอัตโนมัติต่างๆ
แต่เมื่อนำแนวคิด 4 เสาหลักนี้ ไปใช้ในหลักสูตร พบว่ามีความซับซ้อนมากเกินกว่าที่เด็กประถมจะเข้าใจได้ จึงมีการสร้างคำจำกัดความขึ้นมาใหม่เพื่อให้เหมาะสมกับเด็กมากขึ้น รวมทั้งเหมาะกับครูหรือผู้ปกครอง ในการประยุกต์คำจำกัดความเหล่านี้ไปใช้เพื่อกระตุ้นการคิดเชิงคำนวณ
- Tinkering (สร้างความชำนาญ) เป็นการฝึกทักษะผ่านการเล่น การสำรวจ โดยไม่ได้มีเป้าหมายแน่ชัด เหมือนเป็นการทดลองสิ่งใหม่ๆ โดยเด็กจะฝีกความชำนาญผ่านการทำซ้ำๆ หรือลองวิธีการใหม่ๆ ในแต่ละสถานการณ์ที่ต้องเผชิญ
- Collaborating (สร้างความสามัคคี , ทำงานร่วมกัน) เป็นการทำงานร่วมกับผู้อื่น ไม่ว่าจะเป็นกิจกรรมใดๆ หรืองานอดิเรกในยามว่าง เป็นการร่วมมือกันเพื่อให้งานนั้นๆ ได้ผลลัพธ์ที่ดีที่สุด
- Creating (สร้างความคิดสร้างสรรค์) เป็นการคิดค้นสิ่งที่เป็นต้นแบบ หรือสร้างสรรค์คุณค่าให้กับกิจกรรมใดๆ เช่น การสร้างเกม แอนนิเมชั่น หรือหุ่นยนต์ง่ายๆ เปิดโอกาสให้เด็กได้มีส่วนร่วมในการออกแบบและสร้างสิ่งต่างๆ แทนที่จะแค่ฟัง สังเกต และลงมือใช้ ตามที่ครูสอน
- Debugging (สร้างวิธีการแก้ไขจุดบกพร่อง) เป็นการเรียนรู้ที่จะแก้ไขข้อผิดพลาดต่างๆ ที่เกิดขึ้น โดยเฉพาะอย่างยิ่งกิจกรรมใดๆ ที่ต้องทำแบบเป็นขั้นเป็นตอน เมื่อเจอจุดที่ผิดพลาด ต้องคิดวิเคราะห์อย่างเป็นเหตุเป็นผล เพื่อแก้ไขและไม่ให้เกิดสิ่งนั้นขึ้นอีก
- Persevering (สร้างความอดทน , ความพยายาม) เป็นการเผชิญหน้ากับความท้าทายในการทำกิจกรรมที่ยากและซับซ้อน แม้จะล้มเหลวแต่ต้องไม่ล้มเลิก ต้องใช้ความพากเพียรในการทำงานชิ้นนั้นๆ แม้จะต้องรับมือกับสิ่งที่ยากและสร้างความสับสนให้ในบางครั้ง แต่ต้องมีความมุ่งมั่นไม่ยอมแพ้ เพื่อผลลัพธ์ที่ดีตามที่ต้องการ
กรณีตัวอย่างการแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
1. รถของแอม
กวิน เป็นคุณครูที่เด็ก ๆ รัก และกำลังจะเดินทางไปโรงเรียนในเช้าของวันนี้ แต่ด้วยกวินไม่สามารถสตาร์ทรถยนต์คู่ใจที่ใช้ทุกวันให้ติดได้ เนื่องจากเกิดปัญหา 3 ปะการ ได้แก่ เมื่อคืนเปิดไฟในรถทิ้งไว้ทั้งคืนอาจจะทำให้แบตเตอรี่หมด หรือ ก่อนเข้าบ้านเขาไม่ได้เติมน้ำมันให้เต็มถัง อาจจะเป็นไปได้ว่าน้ำมันในถังเชิงเพลิงหมด หรืออาจจะเป็นปัญหาเครื่องยนต์ เมื่อกวินต้องการใช้แนวคิดเชิงคำนวณแก้ปัญหาที่เกิดขึ้น กวินจะสามารถแก้ปัญหาด้วยการแบ่งปัญหาใหญ่เป็นปัญหาย่อย ได้ดังนี้
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
1. แบตเตอรี่หมด
2. น้ำมันเชื้อเพลิงหมด
3. เครื่องยนต์มีปัญหา
2. พัดลม
นอกจากการเขียนโปรแกรมสิ่งของในชีวิตประจำวันเช่น จะเรียนรู้ว่าพัดลมทำงานอย่างไร ก็ให้พิจารณาแยกชิ้นส่วนของพัดลมว่ามีอะไรบ้างและศึกษาทีละชิ้น
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) ของพัดลม
1. มอเตอร์พร้อมกะโหลกหลังและฐานพัดลม
2. ตะแกรงหลัง
3. ใบพัด
4. ตะแกรงหน้า
-ขอบคุณแหล่งข้อมูล https://school.dek-d.com/ และ https://www.scimath.org/