Computational Thinking: จากการเขียนโปรแกรม ตอนที่ 2

แนวทางปฏิบัติที่นำหลักการในการเขียนโปรแกรมมาสู่การปฏิบัติจริง incremental /iterative คือการพัฒนาที่ละน้อยๆ แล้วทดลองใช้ จากนั้นก็พัฒนาเพิ่มเติม testing/debugging คือการตรวจสอบว่าสิ่งที่ทำอยู่นั้นถูกต้องหรือไม่ ถ้าไม่ถูกต้องจะต้องหาต้นตอปัญหาให้เจอและทำการแก้ไขให้สำเร็จ abstraction/modularization คือการนิยามสิ่งที่สร้างใหม่โดยใช้ชื่อแทนสิ่งนั้น ซึ่งเกิดจากการรวบรวมสิ่งที่มีอยู่แล้วมาประกอบทำงานด้วยกัน reuse/ remix คือการสร้างสิ่งใหม่ด้วยการต่อยอดจากสิ่งที่คนอื่นหรือเราเองทำไว้ก่อนหน้านี้ วิธีการที่มีประสิทธิภาพในการเรียนรู้หลักการและแนวทางปฏิบัตินี้คือการให้โอกาสผู้เรียนได้เรียนรู้ผ่านประสบการณ์เหล่านี้ การออกแบบโปรแกรม (Design) เป็นการสร้างสิ่งต่างๆ ขึ้นมาใหม่ ไม่ใช่ใช้แต่สิ่งที่มีอยู่แล้วเท่านั้น การสร้างแรงจูงใจในการสร้างโปรแกรมมาใช้งาน (Interests) เป็นการกระตุ้นให้สร้างสิ่งต่างๆ ขึ้นมาอย่างมีความหมายและเกี่ยวของกับสิ่งที่ตัวเองสนใจ การรวมมือกันในการเขียนโปรแกรมขนาดใหญ่ (Collaboration) คือการเรียนรู้ที่จะทำงานร่วมกับผู้อื่นเพื่อสร้างสิ่งต่างๆ ร่วมกัน การศึกษาโปรแกรมของคนอื่น (Reflection) เป็นการเรียนรู้ในงานสร้างสรรค์ของคนอื่นเพื่อมาประยุกต์ใช้ในโอกาสต่อไป หลักการและวิธีการเขียนโปรแกรมยังมีอีกมากมายและไม่ง่ายนักในการทำความเข้าใจ โอกาสต่อๆไปจะพูดถึงเรื่องเหล่านี้มากขึ้น ติดตามกันต่อนะครับ

Computational Thinking จากการเขียนโปรแกรม ตอนที่ 1

การทำความเข้าใจและการแก้ไขปัญหาโดยใช้แนวคิด Computational thinking เป็นที่สนใจในวงกว้างมากยิ่งขึ้นในปัจจุบันไม่เฉพาะในวงการวิทยาการคอมพิวเตอร์ หลักการและวิธีการเขียนโปรแกรมเป็นแนวทางสำคัญในการสร้างกระบวนการความคิดเชิงคำนวณนี้ ดังนั้นมาดูว่าหลักการและวิธีการใดบ้างในการเขียนโปรแกรมที่ส่งเสริมให้เกิดการคิดคำนวณอย่างเป็นระบบ หลักการในการเขียนโปรแกรม Sequence การทำงานหนึ่งๆ ต้องสามารถระบุลำดับการทำงานได้อย่างเป็นขั้นเป็นตอน Loops การสร้างงานที่มีรูปแบบเดิมๆ เพียงคร้้งเดียวแล้วสามารถนำกลับมาทำซ้ำได้อีกหลายๆครั้ง Parallelism งานหลายอย่างสามารถทำได้ในเวลาเดียวกัน เพื่อประหยัดเวลา หรือเพื่อประสิทธิภาพและประสิทธผล Events เหตุการณ์หนึ่งที่เกิดขึ้นส่งผลให้เกิดงานตามมา Conditionals ใช้สำหรับตัดสินใจบนพื้นฐานของเงื่อนไขต่างๆที่เกี่ยวข้อง Operators ใช้รองรับกระบวนการทางคณิตศาสตร์และตรรกะ Variables ใช้จัดเก็บข้อมูลเพื่อเรียกดูในภายหลัง และสามารถปรับข้อมูลให้ทันสมัยได้ Lists ใช้จัดเก็บข้อมูลที่มีโครงสร้างจัดเรียงแบบมีลำดับ คราวหน้ามาดูวิธีการเขียนโปรแกรมที่นำมาสนับสนุนการคิดคำนวณอย่างเป็นระบบ

Computational Thinking คิดเชิงคำนวณอย่างเป็นระบบ

Computational thinking (CT) เป็นกระบวนการคิดที่ต้องใช้ทักษะและเทคนิคเพื่อแก้ไขปัญหาอย่างเช่นที่วิศวกรซอพท์แวร์ใช้ในการเขียนโปรแกรม ซึ่งพอสรุปได้คราวๆดังนี้ Decomposition: คือการแจกแจงส่วนประกอบย่อยจากสิ่งที่ดูว่าซับซ้อน เช่น เวลาที่เรากินอาหารจานหนึ่งที่เราไม่เคยกินแล้วสามารถบอกส่วนประกอบในอาหารได้จากรสชาติอาหาร นั้นก็คือการแจกแจงอาหารไปสู่ส่วนประกอบของมัน Pattern Recognition: คือการมองหารูปแบบที่เกิดขึ้นซ้ำๆ เช่น นักเล่นหุ้นมักมองหารูปแบบของราคาหุ้นที่เกิดขึ้นบ่อยๆ ในตลาดหุ้นเพื่อใช้ในการตัดสินใจที่จะซื้อหรือขายหุ้น Pattern Generalization and Abstraction: คือการมองภาพรวมเพื่อนิยามสิ่งที่เป็นรายละเอียดปลีกย่อย เช่นในการบริหารเวลา นักวางแผนใช้การวางแผนรายสัปดาห์แทนรายวันและรายชั่งโมง  Algorithm Design:  คือการออกแบบลำดับการทำงานที่สามารถทำซ้ำได้อีก เช่นพ่อครัวเขียนสูตรทำอาหารเพื่อให้คนอื่นๆสามารถทำอาหารจานนี้ได้เอง อ่านเพิ่มเติมได้ที่ Google: Exploring Computational Thinking.