Categories
Programming

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

แนวทางปฏิบัติที่นำหลักการในการเขียนโปรแกรมมาสู่การปฏิบัติจริง

  • incremental /iterative คือการพัฒนาที่ละน้อยๆ แล้วทดลองใช้ จากนั้นก็พัฒนาเพิ่มเติม
  • testing/debugging คือการตรวจสอบว่าสิ่งที่ทำอยู่นั้นถูกต้องหรือไม่ ถ้าไม่ถูกต้องจะต้องหาต้นตอปัญหาให้เจอและทำการแก้ไขให้สำเร็จ
  • abstraction/modularization คือการนิยามสิ่งที่สร้างใหม่โดยใช้ชื่อแทนสิ่งนั้น ซึ่งเกิดจากการรวบรวมสิ่งที่มีอยู่แล้วมาประกอบทำงานด้วยกัน
  • reuse/ remix คือการสร้างสิ่งใหม่ด้วยการต่อยอดจากสิ่งที่คนอื่นหรือเราเองทำไว้ก่อนหน้านี้

วิธีการที่มีประสิทธิภาพในการเรียนรู้หลักการและแนวทางปฏิบัตินี้คือการให้โอกาสผู้เรียนได้เรียนรู้ผ่านประสบการณ์เหล่านี้

  • การออกแบบโปรแกรม (Design) เป็นการสร้างสิ่งต่างๆ ขึ้นมาใหม่ ไม่ใช่ใช้แต่สิ่งที่มีอยู่แล้วเท่านั้น
  • การสร้างแรงจูงใจในการสร้างโปรแกรมมาใช้งาน (Interests) เป็นการกระตุ้นให้สร้างสิ่งต่างๆ ขึ้นมาอย่างมีความหมายและเกี่ยวของกับสิ่งที่ตัวเองสนใจ
  • การรวมมือกันในการเขียนโปรแกรมขนาดใหญ่ (Collaboration) คือการเรียนรู้ที่จะทำงานร่วมกับผู้อื่นเพื่อสร้างสิ่งต่างๆ ร่วมกัน
  • การศึกษาโปรแกรมของคนอื่น (Reflection) เป็นการเรียนรู้ในงานสร้างสรรค์ของคนอื่นเพื่อมาประยุกต์ใช้ในโอกาสต่อไป

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

Categories
Programming

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

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

หลักการในการเขียนโปรแกรม

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

คราวหน้ามาดูวิธีการเขียนโปรแกรมที่นำมาสนับสนุนการคิดคำนวณอย่างเป็นระบบ

Categories
Programming

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

Computational thinking (CT) เป็นกระบวนการคิดที่ต้องใช้ทักษะและเทคนิคเพื่อแก้ไขปัญหาอย่างเช่นที่วิศวกรซอพท์แวร์ใช้ในการเขียนโปรแกรม ซึ่งพอสรุปได้คราวๆดังนี้

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

อ่านเพิ่มเติมได้ที่ Google: Exploring Computational Thinking.