Computational Thinking Concepts (Computational thinking ရဲ့ အခြေခံ သဘောတရားများ)
B1.1.2: Describe the fundamental concepts of computational thinking (abstraction, algorithmic design, decomposition, pattern recognition). B1.1.3: Explain how applying computational thinking to fundamental concepts is used to approach and solve problems in computer science.
မြန်မာလို: B1.1.2: computational thinking (ကွန်ပျူတာ သိပ္ပံ နည်းနဲ့ ပြဿနာကို စဉ်းစားခြင်း) ရဲ့ အခြေခံ သဘောတရားတွေ ဖြစ်တဲ့ abstraction (မလိုတဲ့ အသေးစိတ်ကို ဖယ်ပြီး အဓိကကိုပဲ ကြည့်ခြင်း)၊ algorithmic design (ပြဿနာကို ဖြေရှင်းမယ့် အဆင့်တွေကို ဒီဇိုင်းဆွဲခြင်း)၊ decomposition (ပြဿနာကို အပိုင်းငယ်တွေ ခွဲခြင်း) နဲ့ pattern recognition (တူညီတဲ့ ပုံစံတွေကို ရှာဖွေခြင်း) တို့ကို describe (ဖော်ပြရှင်းပြ) လုပ်နိုင်ရပါမယ်။ B1.1.3: အခြေခံ သဘောတရားတွေမှာ computational thinking ကို အသုံးချတာက ကွန်ပျူတာ သိပ္ပံ ပြဿနာတွေကို ချဉ်းကပ်ပြီး ဖြေရှင်းဖို့ ဘယ်လို အထောက်အကူ ဖြစ်လဲ ဆိုတာကို explain (ရှင်းပြ) လုပ်နိုင်ရပါမယ်။ B1.1.2 နဲ့ B1.1.3 က IB Computer Science (နိုင်ငံတကာ ကျောင်းတွေမှာ သင်တဲ့ ကွန်ပျူတာသိပ္ပံ သင်ရိုး) ရဲ့ သင်ရိုးထဲက အပိုင်း နံပါတ်တွေပါ။
ခြုံငုံ မိတ်ဆက်
Computational thinking ဆိုတာ ကွန်ပျူတာ သိပ္ပံ ပညာရှင် တစ်ယောက်လို ပြဿနာတွေကို ချဉ်းကပ်တဲ့ နည်းလမ်းပါ။ သဘောတရား လေးခုကို သုံးပါတယ်: decomposition၊ pattern recognition၊ abstraction နဲ့ algorithmic thinking (အဆင့်ဆင့် ဖြေရှင်းနည်းကို စဉ်းစားခြင်း)။ ဒါတွေက ကွန်ပျူတာ ပါပါစေ၊ မပါပါစေ ဘယ်ပြဿနာမှာမဆို သုံးလို့ရတဲ့ စဉ်းစားနည်း ကိရိယာတွေပါ။
ဒီသဘောတရားတွေအကြောင်း မေးခွန်းတွေမှာ ပေးထားတဲ့ အခြေအနေ တစ်ခုမှာ ဘယ် CT သဘောတရားကို အသုံးချထားလဲ Identify (ဖြစ်နိုင်တဲ့ အဖြေတွေထဲက ရွေးပြီး ဖော်ပြပါ) လုပ်ဖို့နဲ့ အဲဒါက ပြဿနာကို ဖြေရှင်းဖို့ ဘယ်လို ကူညီလဲ Explain (ရှင်းပြပါ) လုပ်ဖို့ မေးပါတယ်။
CT သဘောတရား လေးခု
1. Decomposition (ပြဿနာကို အပိုင်းငယ်တွေ ခွဲခြင်း)
ရှုပ်ထွေးတဲ့ ပြဿနာ တစ်ခုကို ကိုင်တွယ်ရလွယ်တဲ့ အပိုင်းငယ်တွေ ခွဲခြင်းပါ။
ပြဿနာ တစ်ခုလုံးကို တစ်ပြိုင်နက်တည်း ဖြေရှင်းဖို့ ကြိုးစားမယ့်အစား နားလည်ရ၊ ဖြေရှင်းရ၊ သီးခြားစီ စမ်းသပ်ရ ပိုလွယ်တဲ့ ပြဿနာ အပိုင်းငယ်တွေအဖြစ် ခွဲလိုက်ပါတယ်။
ဥပမာ: ကျောင်း app တစ်ခု တည်ဆောက်ခြင်း
အရာအားလုံးကို တစ်ပြိုင်နက် တည်ဆောက်မယ့်အစား module (သီးခြား လုပ်ဆောင်ချက် တစ်ခုအတွက် ခွဲထားတဲ့ program အပိုင်း) တွေအဖြစ် decompose လုပ်ပါ:
- Login စနစ် (အကောင့်ဝင်တဲ့ စနစ်)
- ကျောင်းတက် ရောက်ရှိမှု မှတ်တမ်း
- အမှတ် စီမံခန့်ခွဲမှု
- Message ပို့ခြင်း
- အချိန်ဇယား ပြသခြင်း
Module တစ်ခုချင်းစီကို သီးခြားစီ ဒီဇိုင်းဆွဲ၊ တည်ဆောက်၊ စမ်းသပ်နိုင်ပါတယ်။
ဥပမာ: ကျောင်း ခရီးစဉ် တစ်ခု စီစဉ်ခြင်း
- သယ်ယူပို့ဆောင်ရေး (ဘတ်စ်ကား ငှား၊ လမ်းကြောင်း စီစဉ်)
- ဘတ်ဂျက် (ကုန်ကျစရိတ် တွက်၊ ငွေ ကောက်ခံ)
- လုပ်ဆောင်မယ့် အစီအစဉ်များ (ရွေးချယ်စရာတွေ ရှာဖွေ၊ နေရာတွေ ကြိုတင် စာရင်းပေး)
- ဘေးကင်းရေး (အန္တရာယ် အကဲဖြတ်ခြင်း၊ အရေးပေါ် ဆက်သွယ်ရမယ့်သူများ)
- ဆက်သွယ်ရေး (မိဘတွေကို အသိပေး၊ သတိပေးချက်တွေ ပို့)
ဘာကြောင့် အလုပ်ဖြစ်လဲ: ပြဿနာ သေးသေးလေးတွေက ပြဿနာ ကြီးကြီးတွေထက် ဖြေရှင်းရ ပိုလွယ်ပါတယ်။ မတူတဲ့ လူတွေက မတူတဲ့ အပိုင်းတွေကို တစ်ပြိုင်နက် လုပ်နိုင်ပါတယ်။ Bug (code ထဲက အမှား) တွေကို program အကြီးကြီး တစ်ခုထဲမှာ ရှာတာထက် module သေးသေးလေး တစ်ခုထဲမှာ ရှာရတာ ပိုလွယ်ပါတယ်။
စာမေးပွဲ ပုံစံ မေးခွန်း: “Identify how decomposition has been applied in this scenario.” (ဒီ အခြေအနေမှာ decomposition ကို ဘယ်လို အသုံးချထားလဲ identify လုပ်ပါ။)
2. Pattern Recognition (တူညီတဲ့ ပုံစံတွေကို ရှာဖွေခြင်း)
ဒေတာ ဒါမှမဟုတ် ပြဿနာတွေထဲက တူညီချက်တွေ၊ အပြောင်းအလဲ လမ်းကြောင်းတွေ ဒါမှမဟုတ် ထပ်ခါထပ်ခါ ပေါ်တဲ့ ဖွဲ့စည်းပုံတွေကို ရှာဖော်ခြင်းပါ။
Pattern (ပုံစံ) တစ်ခုကို တွေ့တဲ့အခါ ပြဿနာ အမျိုးအစား တူတာကို အစကနေ ပြန်ဖြေရှင်းမယ့်အစား ကိုယ် အရင်က ဖန်တီးထားပြီးသား ဖြေရှင်းချက်ကို ပြန်သုံးနိုင်ပါတယ်။
ဥပမာ: E-commerce (အွန်လိုင်း အရောင်းအဝယ်) website များ
Shopping cart (ဝယ်မယ့် ပစ္စည်းတွေ စုထည့်ထားတဲ့ ခြင်းတောင်း) ရဲ့ logic (အလုပ်လုပ်ပုံ) ဖြစ်တဲ့ ပစ္စည်း ထည့်တာ၊ ပစ္စည်း ဖယ်တာ၊ စုစုပေါင်း တွက်တာတွေက Amazon၊ eBay နဲ့ အွန်လိုင်း ဆိုင်တိုင်းမှာ အတူတူနီးပါး ဖြစ်ပါတယ်။ ဒီ pattern ကို သိလိုက်တာနဲ့ shopping cart ဖြေရှင်းချက် တစ်ခုတည်းကို ဒီဇိုင်းဆွဲပြီး ပြန်သုံးနိုင်ပါတယ်။
ဥပမာ: စာမေးပွဲ အမှတ်တွေကို ခွဲခြမ်းစိတ်ဖြာခြင်း
ဆရာ တစ်ယောက်က အိမ်စာမှာ 80% ထက် ပိုရတဲ့ ကျောင်းသားတွေဟာ စာမေးပွဲမှာ 70% ထက် အမြဲလိုလို ပိုရတာကို သတိထားမိပါတယ်။ ဒီ pattern ကို သုံးပြီး ဘယ်ကျောင်းသားတွေ အပို အကူအညီ လိုနိုင်လဲ ခန့်မှန်းနိုင်ပါတယ်။
ဥပမာ: Spam ကို ရှာဖော်ခြင်း
“win money” (ငွေ ရမယ်) ဒါမှမဟုတ် “click here now” (အခုပဲ ဒီမှာ နှိပ်ပါ) လို စကားစုတွေ ပါတဲ့ email တွေက သိသာတဲ့ pattern တစ်ခုကို လိုက်ပါတယ်။ Spam filter (မလိုလားအပ်တဲ့ အမှိုက် email တွေကို စစ်ထုတ်ပေးတဲ့ program) က email တွေကို အလိုအလျောက် အမျိုးအစား ခွဲဖို့ pattern recognition ကို သုံးပါတယ်။
ဘာကြောင့် အလုပ်ဖြစ်လဲ: Pattern တွေကြောင့် သိပြီးသား ဖြေရှင်းချက်တွေကို ပြဿနာ အသစ်တွေမှာ အသုံးချနိုင်ပါတယ်။ ခန့်မှန်းချက်တွေ ချဖို့နဲ့ သီးခြား ဥပမာတွေကနေ ယေဘုယျ သဘောတရား ထုတ်ဖို့လည်း ကူညီပါတယ်။
3. Abstraction (မလိုတဲ့ အသေးစိတ်ကို ဖယ်ပြီး အဓိကကိုပဲ ကြည့်ခြင်း)
မရှိမဖြစ် လိုတဲ့ အချက်အလက်ကို အာရုံစိုက်ပြီး မလိုအပ်တဲ့ အသေးစိတ်ကို လျစ်လျူရှုခြင်းပါ။
Abstraction ဆိုတာ လက်ရှိ ပြဿနာနဲ့ မသက်ဆိုင်တဲ့ အသေးစိတ်တွေကို ဖုံးထားပြီး ရှုပ်ထွေးမှုကို ဖယ်ရှားတာပါ။
ဥပမာ: မြေပုံ တစ်ခု
London Underground (London မြို့ရဲ့ မြေအောက် ရထား) မြေပုံဟာ abstraction တစ်ခုပါ။ ဘူတာ နာမည်တွေနဲ့ ဘူတာတွေကြား ချိတ်ဆက်မှုတွေကို ပြပေမယ့် တကယ့် အကွာအဝေးတွေနဲ့ မြေပြင်ပေါ်က ပထဝီ အနေအထားကို ထည့်မပြပါဘူး။ မလိုအပ်တဲ့ အသေးစိတ် (အကွာအဝေး အတိအကျ၊ လမ်းနာမည်) ကို ဖယ်ထားလို့ အရေးကြီးတာ ဖြစ်တဲ့ ဘယ်ရထားက ဘယ်ဘူတာတွေကို ဆက်သွယ်ပေးလဲ ဆိုတာကို အာရုံစိုက်နိုင်ပါတယ်။
ဥပမာ: OOP (object တွေကို အခြေခံပြီး program ရေးနည်း) ထဲက class တစ်ခု
name၊ grade နဲ့ email attribute (object ရဲ့ ဒေတာကို သိမ်းတဲ့ variable) တွေ ပါတဲ့ Student class (object တွေ ဖန်တီးဖို့ ပုံစံခွက်) က တကယ့် ကျောင်းသား တစ်ယောက်ရဲ့ abstraction ပါ။ တကယ့် ကျောင်းသား တစ်ယောက်မှာ ထောင်ချီတဲ့ လက္ခဏာတွေ (အရပ်၊ အကြိုက်ဆုံး အရောင်၊ ဖိနပ် အရွယ်) ရှိပေမယ့် ကျောင်း စီမံခန့်ခွဲမှု စနစ် တစ်ခုအတွက်ဆိုရင် အနည်းငယ်ပဲ သက်ဆိုင်ပါတယ်။
ဥပမာ: GPA တစ်ခု
ဘာသာရပ် တိုင်းက အမှတ် တစ်ခုချင်းစီကို ကြည့်မယ့်အစား GPA (အမှတ် ပျမ်းမျှ) က အမှတ် အားလုံးကို ကိန်း တစ်ခုတည်းအဖြစ် abstract လုပ်ပါတယ်။ ဒါကြောင့် ကျောင်းသားတွေကို နှိုင်းယှဉ်ဖို့နဲ့ ဆုံးဖြတ်ချက်တွေ ချဖို့ (ဥပမာ ဂုဏ်ထူး စာရင်းထဲ ပါခွင့် ရှိမရှိ) ပိုလွယ်သွားပါတယ်။
ဘာကြောင့် အလုပ်ဖြစ်လဲ: မသက်ဆိုင်တဲ့ အသေးစိတ်ကို ဖုံးထားလိုက်တဲ့အတွက် abstraction က ပြဿနာတွေကို နားလည်ရ ပိုလွယ်စေပြီး ဖြေရှင်းချက်တွေကို ဒီဇိုင်းဆွဲရ ပိုလွယ်စေပါတယ်။ အရေးကြီးတာကိုပဲ အာရုံစိုက်နိုင်ပါတယ်။
အကြံပြုချက်: “identify abstraction” (abstraction ကို identify လုပ်ပါ) လို့ မေးတဲ့အခါ ဘယ်အချက်အလက်ကို ထိန်းထားလဲ၊ ဘယ်အချက်အလက်ကို ဖယ်ထုတ် ဒါမှမဟုတ် ရိုးရှင်းအောင် လုပ်ထားလဲ ဆိုတာကို ရှာပါ။
4. Algorithmic Design (Algorithmic Thinking၊ ပြဿနာကို ဖြေရှင်းမယ့် အဆင့်တွေကို ဒီဇိုင်းဆွဲခြင်း)
ပြဿနာ တစ်ခုကို ဖြေရှင်းဖို့ ရှင်းလင်းတဲ့ အဆင့်ဆင့် ညွှန်ကြားချက် အစဉ် တစ်ခုကို ဒီဇိုင်းဆွဲခြင်းပါ။
Algorithm (အယ်လ်ဂိုရီသမ်၊ ပြဿနာကို အဆင့်ဆင့် ဖြေရှင်းတဲ့ နည်းလမ်း) ဆိုတာ တိတိကျကျ လိုက်လုပ်ရင် လက်ခံနိုင်တဲ့ input (program ထဲ ထည့်ပေးတဲ့ ဒေတာ) ဘယ်ဟာပဲ ပေးပေး မှန်ကန်တဲ့ ရလဒ်ကို အကြိမ်တိုင်း ထုတ်ပေးမယ့် တိကျတဲ့ ညွှန်ကြားချက် အစု တစ်ခုပါ။
ဥပမာ: လက်ဖက်ရည် တစ်ခွက် ဖျော်ခြင်း
- ရေနွေးအိုးထဲ ရေ ထည့်ပါ
- ရေကို ဆူအောင် တည်ပါ
- လက်ဖက်ခြောက် အိတ်ကို ခွက်ထဲ ထည့်ပါ
- ဆူနေတဲ့ ရေကို ခွက်ထဲ လောင်းထည့်ပါ
- 3 မိနစ် စောင့်ပါ
- လက်ဖက်ခြောက် အိတ်ကို ပြန်ထုတ်ပါ
- နို့ ထည့်ပါ (လိုချင်ရင်)
ဒါက algorithm တစ်ခုပါ: အဓိပ္ပာယ် လွဲလို့ မရဘူး၊ အဆင့်တွေက အစဉ်လိုက် ဖြစ်တယ်၊ ထပ်ခါထပ်ခါ လုပ်လို့ရတယ်။
ဥပမာ: “Forgot password” (စကားဝှက် မေ့သွားပြီ) လုပ်ငန်းစဉ်
- User က “Forgot password” ကို နှိပ်ပါတယ်
- စနစ်က email လိပ်စာ တောင်းပါတယ်
- စနစ်က အဲဒီ email က database (ဒေတာ သိမ်းဆည်းတဲ့ စနစ်) ထဲမှာ ရှိမရှိ စစ်ပါတယ်
- ရှိရင်: email ဆီ reset link (စကားဝှက် အသစ် ပြန်ထားဖို့ link) ပို့ပါ
- မရှိရင်: “email not found” (email ကို ရှာမတွေ့ပါ) message ကို ပြပါ
- User က reset link ကို နှိပ်ပါတယ်
- User က စကားဝှက် အသစ် ထည့်ပါတယ်
- စနစ်က database ထဲက စကားဝှက်ကို update လုပ်ပါတယ်
ဥပမာ: List တစ်ခုထဲက အကြီးဆုံး ကိန်းကို ရှာခြင်း
maxကို ပထမ ကိန်းအဖြစ် သတ်မှတ်ပါ- ကျန်တဲ့ ကိန်း တစ်ခုချင်းစီအတွက်:
- အဲဒီကိန်းက
maxထက် ကြီးရင်maxကို update လုပ်ပါ
- အဲဒီကိန်းက
maxကို return (ရလဒ်အဖြစ် ပြန်ပေး) လုပ်ပါ
ဘာကြောင့် အလုပ်ဖြစ်လဲ: Algorithm တွေက အဓိပ္ပာယ် မရှင်းတာတွေကို ဖယ်ရှားပေးပါတယ်။ လူ ဒါမှမဟုတ် ကွန်ပျူတာ တစ်ခုက အဆင့်တွေကို တိတိကျကျ လိုက်လုပ်ပြီး မှန်ကန်တဲ့ ရလဒ်ကို ရနိုင်ပါတယ်။ ပြဿနာတွေကို computable (ကွန်ပျူတာနဲ့ တွက်ချက် ဖြေရှင်းလို့ ရတဲ့) ဖြစ်စေတာ ဒါပါပဲ။
CT ကို လက်တွေ့ နယ်ပယ်တွေမှာ အသုံးချခြင်း
CT ကို programming ပြင်ပမှာလည်း သုံးပါတယ်: B1.1.3 (IB သင်ရိုးရဲ့ အပိုင်း တစ်ခု) က computational thinking မှာ programming မဖြစ်မနေ ပါစရာ မလိုဘူးလို့ ဖော်ပြထားပြီး မတူတဲ့ နယ်ပယ်တွေမှာ ပြဿနာတွေကို ချဉ်းကပ်ဖို့ CT ကို ဘယ်လို သုံးလဲလို့ မေးပါတယ်။
Software Development (software တည်ဆောက်ခြင်း) မှာ CT
| သဘောတရား | အသုံးချပုံ |
|---|---|
| Decomposition | App တစ်ခုကို module တွေ (login၊ database၊ UI (user interface၊ user နဲ့ program ကြားက မြင်ကွင်း)၊ API (program တွေ အချင်းချင်း ဆက်သွယ်ဖို့ သတ်မှတ်ထားတဲ့ နည်းလမ်း)) အဖြစ် ခွဲပါ |
| Pattern Recognition | E-commerce site တွေမှာ shopping cart logic ကို ပြန်သုံးတာ |
| Abstraction | သက်ဆိုင်တဲ့ attribute တွေပဲ ပါတဲ့ User class တစ်ခုကို သတ်မှတ်ပါ |
| Algorithmic Thinking | “Forgot password” လုပ်ဆောင်ချက်အတွက် အဆင့်ဆင့် လုပ်ငန်းစဉ် |
Data Analysis (ဒေတာ ခွဲခြမ်းစိတ်ဖြာခြင်း) မှာ CT
| သဘောတရား | အသုံးချပုံ |
|---|---|
| Decomposition | အလုပ်စဉ်ကို ခွဲပါ: ဒေတာကို သန့်ရှင်းအောင် ပြင်၊ ဇယားတွေအဖြစ် စီ၊ ဂရပ်ပုံတွေ ဆွဲ |
| Pattern Recognition | စာမေးပွဲ အမှတ်တွေမှာ အပြောင်းအလဲ လမ်းကြောင်းတွေ ပေါ်တယ် (သင်္ချာမှာ ပိုမြင့်ပြီး ဘာသာစကားမှာ ပိုနိမ့်) |
| Abstraction | အမှတ် တစ်ခုချင်းစီ အားလုံးအစား GPA လို အဓိက တိုင်းတာချက်တွေကို အာရုံစိုက်ပါ |
| Algorithmic Thinking | အတန်း တစ်ခုစီက ထိပ်ဆုံး ကျောင်းသား 10 ယောက်ကို အလိုအလျောက် ရှာပေးမယ့် query (database ထဲက ဒေတာကို ရှာ၊ ပြင်ဖို့ ပေးတဲ့ အမိန့်) တစ်ခု ရေးပါ |
Network Security (ကွန်ရက် လုံခြုံရေး) မှာ CT
| သဘောတရား | အသုံးချပုံ |
|---|---|
| Decomposition | လုံခြုံရေးကို layer (အလွှာ) တွေအဖြစ် ခွဲပါ: application၊ transport၊ internet၊ network access |
| Pattern Recognition | အဖြစ်များတဲ့ တိုက်ခိုက်မှု ပုံစံတွေကို ရှာဖော်ပါ (phishing (လိမ်ညာ message တွေနဲ့ အချက်အလက် ခိုးခြင်း)၊ port scanning (ဖွင့်ထားတဲ့ port တွေကို လိုက်စစ်ပြီး ဝင်ပေါက် ရှာခြင်း)၊ DDoS (စက်အများကနေ traffic အလျှံပယ် ပို့ပြီး တိုက်ခိုက်ခြင်း)) |
| Abstraction | လုံခြုံတဲ့ ဆက်သွယ်မှုကို ရိုးရှင်းအောင် စံ protocol (ဒေတာ ပို့ပုံအတွက် သဘောတူ စည်းမျဉ်း) တွေ ဖြစ်တဲ့ TLS (အင်တာနက် traffic ကို encrypt လုပ်တဲ့ protocol) နဲ့ VPN (public network ပေါ်က လုံခြုံတဲ့ ကိုယ်ပိုင် လမ်းကြောင်း) ကို သုံးပါ |
| Algorithmic Thinking | Authentication (အသုံးပြုသူ တကယ် ဟုတ်မဟုတ် စစ်ခြင်း) နဲ့ encryption (ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း) အတွက် အဆင့်ဆင့် လုပ်ငန်းစဉ် |
Database Design (database ဒီဇိုင်းဆွဲခြင်း) မှာ CT
| သဘောတရား | အသုံးချပုံ |
|---|---|
| Decomposition | အဆင့်လိုက် ဒီဇိုင်းဆွဲပါ: entity (database ထဲမှာ ဒေတာ သိမ်းမယ့် အရာ တစ်ခု) တွေကို ရှာဖော်၊ table (database ထဲက ဇယား) တွေကို ချိတ်ဆက်၊ စည်းမျဉ်းတွေ ထည့် |
| Pattern Recognition | Many-to-many relationship (တစ်ဖက်က record အများက တစ်ဖက်က record အများနဲ့ ဆက်နွယ်တာ) လို ထပ်ခါထပ်ခါ ပေါ်တဲ့ ဖွဲ့စည်းပုံတွေကို သတိထားမိပါ |
| Abstraction | အသုံးဝင်တဲ့ attribute တွေ (StudentID၊ CourseName) ကိုပဲ သိမ်းပြီး မသက်ဆိုင်တာတွေကို ထည့်မသိမ်းပါနဲ့ |
| Algorithmic Thinking | ဒေတာကို စီမံဖို့ query တွေ (INSERT၊ SELECT၊ UPDATE) ကို စီစဉ်ပါ |
ကိုယ်တိုင် စမ်းကြည့်ပါ: The Four Moves (စဉ်းစားနည်း လေးမျိုး)
Mission (လုပ်ရမယ့် တာဝန်) တစ်ခုစီမှာ အခြေအနေ တစ်ခုနဲ့ ကတ် လေးကတ် ပါပါတယ်: ကတ် တစ်ကတ်ချင်းစီကို အဲဒီကတ်က ပြတဲ့ စဉ်းစားနည်းရဲ့ နေရာကို စီထည့်ပါ။ နေ့စဉ် ဘဝကနေ တကယ့် ကွန်ပျူတာ သိပ္ပံ အလုပ်အထိ ပါပါတယ် (B1.1.3)။ ဒီ activity ထဲက စာတွေကို English နဲ့ ရေးထားပါတယ်။
ဒီ activity ကို interactive ပုံစံနဲ့ သုံးဖို့ JavaScript လိုပါတယ်။ ဒီ activity မှာ လေ့ကျင့်ရတာ အားလုံးကို အပေါ်က အပိုင်းတွေမှာ ရှင်းပြထားပါတယ်။
Quick Check (အမြန် စစ်ဆေးမေးခွန်း)
Q1. Program ရေးသူ တစ်ယောက်က ကျောင်း app တစ်ခုကို module တွေ ခွဲလိုက်ပါတယ်: login၊ ကျောင်းတက် ရောက်ရှိမှု၊ အမှတ်နဲ့ message ပို့ခြင်း။ ဘယ် CT သဘောတရားကို အသုံးချထားသလဲ။
Q2. Program ရေးသူ တစ်ယောက်က e-commerce site တိုင်းမှာ shopping cart logic က အတူတူနီးပါး ဖြစ်နေတာကို သတိထားမိပါတယ်။ ဒါက ဘယ် CT သဘောတရားကို ပြသလဲ။
Q3. ကျောင်း တစ်ကျောင်းက အမှတ် တစ်ခုချင်းစီကို ခွဲခြမ်းစိတ်ဖြာမယ့်အစား GPA ကို အနှစ်ချုပ် ကိန်း တစ်ခုတည်းအဖြစ် သုံးပါတယ်။ ဒါက ဘယ် CT သဘောတရားလဲ။
Q4. အဆင့်ဆင့် လုပ်ရတဲ့ "forgot password" လုပ်ငန်းစဉ် (email ထည့်၊ database ကို စစ်၊ reset link ပို့) ကို ဒီဇိုင်းဆွဲတာက ဘာရဲ့ ဥပမာ တစ်ခုလဲ။
Q5. Computational thinking နဲ့ ပတ်သက်ပြီး ဘယ်ဖော်ပြချက်က မှန်သလဲ။
Fill in the Blanks (ကွက်လပ် ဖြည့်ခြင်း)
အခြေအနေ တစ်ခုချင်းစီမှာ ဘယ် CT သဘောတရားကို အသုံးချထားလဲ identify လုပ်ပါ။ အခြေအနေတွေကို English နဲ့ ရေးထားပြီး ကွက်လပ်တွေကိုလည်း CT သဘောတရားရဲ့ English နာမည်နဲ့ (ဥပမာ decomposition) ရိုက်ထည့်ရပါမယ်။ CT concept: ဆိုတာ CT သဘောတရား လို့ ဆိုလိုပြီး အခြေအနေ တစ်ခုချင်းရဲ့ အဓိပ္ပာယ်က အောက်ပါအတိုင်းပါ:
- ဆရာ တစ်ယောက်က project ကြီး တစ်ခုကို အဆင့် မှတ်တိုင် (milestone) 5 ခု ခွဲပါတယ်။
- Spam filter တစ်ခုက “win money” လို စကားစုတွေ ပါတဲ့ email တွေကို ရှာဖော်ပါတယ်။
- မြေပုံ တစ်ခုက ရထား လမ်းကြောင်းတွေကို ပြပေမယ့် လမ်းမ အဆင့် အသေးစိတ်ကို ဖုံးထားပါတယ်။
- ချက်ပြုတ်နည်း တစ်ခုက ကိတ်မုန့် ဖုတ်ဖို့ နံပါတ်တပ်ထားတဲ့ အဆင့်တွေ ပေးပါတယ်။
ကွက်လပ် ဖြည့်ပါ: အခြေအနေ တစ်ခုစီအတွက် CT သဘောတရားရဲ့ နာမည်ကို ရေးပါ။
// A teacher separates a large project into 5 milestones
// CT concept:
// A spam filter detects emails with "win money" phrasing
// CT concept:
// A map shows train routes but hides street-level detail
// CT concept:
// A recipe gives numbered steps to bake a cake
// CT concept: Practice Exercises (လေ့ကျင့်ခန်းများ)
Core (အခြေခံ အဆင့်)
- လေးခုလုံးကို Identify လုပ်ပါ: “ကျောင်း အားကစားပွဲ နေ့ တစ်ရက် စီစဉ်ခြင်း” ဆိုတဲ့ ပြဿနာအတွက် CT သဘောတရား တစ်ခုစီရဲ့ ဥပမာ တစ်ခုစီ ပေးပါ:
- (a) Decomposition
- (b) Pattern Recognition
- (c) Abstraction
- (d) Algorithmic Thinking
- အခြေအနေတွေကို အမျိုးအစား ခွဲပါ: အခြေအနေ တစ်ခုစီအတွက် အဓိက CT သဘောတရားရဲ့ နာမည်ကို ပြောပြီး ဘာကြောင့်လဲ Explain လုပ်ပါ:
- (a) ဆေးရုံ တစ်ရုံက ရောဂါ ခန့်မှန်းဖို့ ရောဂါ လက္ခဏာ ဆင်တူတဲ့ လူနာတွေကို အုပ်စုဖွဲ့ပါတယ်
- (b) မိုးလေဝသ app တစ်ခုက အပူချိန်နဲ့ မိုးရွာနိုင်ခြေကို ပြပေမယ့် လေဖိအားကို မပြပါဘူး
- (c) Project ကို စီမံခန့်ခွဲသူ တစ်ယောက်က software project တစ်ခုကို sprint (software project ကို ခွဲထားတဲ့ ရက်တိုတို အလုပ်ကာလ) တွေ ခွဲပါတယ်
- (d) GPS (တည်နေရာ ရှာပေးတဲ့ စနစ်) က နေရာ နှစ်ခုကြားက အတိုဆုံး လမ်းကြောင်းကို တွက်ပါတယ်
- CT က coding (code ရေးခြင်း) မဟုတ်ပါဘူး: ကွန်ပျူတာ မသုံးဘဲ နေ့စဉ် ဘဝမှာ computational thinking ကို ဘယ်လို အသုံးချနိုင်လဲ ဥပမာ နှစ်ခု ပေးပါ။
Extension (တိုးချဲ့ အဆင့်)
-
နယ်ပယ် တစ်ခုမှာ CT ကို အသုံးချပါ: machine learning (ဒေတာကနေ သင်ယူတဲ့ စနစ်)၊ database design ဒါမှမဟုတ် network security ထဲက တစ်ခုကို ရွေးပါ။ ရွေးထားတဲ့ နယ်ပယ်အတွက် CT သဘောတရား လေးခု တစ်ခုချင်းစီ ဘယ်လို သက်ဆိုင်လဲ သီးခြား ဥပမာ တစ်ခုစီနဲ့ Explain လုပ်ပါ။
-
Abstraction ရဲ့ trade-off (တစ်ခု ရဖို့ တစ်ခု အလျှော့ပေးရတာ) များ: GPA က အမှတ် အများကြီးကို ကိန်း တစ်ခုတည်းအဖြစ် abstract လုပ်ပါတယ်။ ဒီ abstraction မှာ ဘယ် အသုံးဝင်တဲ့ အချက်အလက်တွေ ပျောက်သွားသလဲ။ ဘယ်အချိန်မှာ ဆရာ တစ်ယောက်က GPA အစား အသေးစိတ် အပြည့်အစုံကို လိုနိုင်သလဲ။ ရိုးရှင်းမှုနဲ့ အသေးစိတ်ကြားက trade-off ကို Discuss (အမြင် အမျိုးမျိုးကို ချိန်ဆပြီး ဆွေးနွေးပါ) လုပ်ပါ။
Challenge (စိန်ခေါ်မှု အဆင့်)
- CT ကို အပြည့်အစုံ အသုံးချ ခွဲခြမ်းစိတ်ဖြာခြင်း: သင့်ကျောင်းက စွမ်းအင် အလဟဿ ဖြစ်တာ (လူမရှိတဲ့ အခန်းတွေမှာ မီးတွေနဲ့ ကွန်ပျူတာတွေ ဖွင့်ထားခဲ့တာ) ကို လျှော့ချချင်ပါတယ်။ ဒီပြဿနာမှာ CT သဘောတရား လေးခုလုံးကို အသုံးချပါ:
- ပြဿနာကို ပြဿနာ အပိုင်းငယ်တွေအဖြစ် decompose လုပ်ပါ
- ကိုယ် စုဆောင်းမယ့် ဒေတာထဲက pattern တွေကို Identify လုပ်ပါ
- ဘာကို abstract လုပ် (ဖယ်ထုတ်) မလဲ၊ ဘာကို ထိန်းထားမလဲ State (ဖော်ပြပါ) လုပ်ပါ
- ဖြေရှင်းချက် တစ်ခုအတွက် algorithm (အဆင့်ဆင့် ညွှန်ကြားချက်တွေ) ကို Design (အစီအစဉ် ဒါမှမဟုတ် model တစ်ခု ရေးဆွဲပါ) လုပ်ပါ
- အောင်မြင်မှုကို တိုင်းတာဖို့ evaluation criteria (ဖြေရှင်းချက် အောင်မြင်မအောင်မြင် အကဲဖြတ်မယ့် စံနှုန်းများ) ကို Define (အဓိပ္ပာယ်ကို တိတိကျကျ ဖော်ပြပါ) လုပ်ပါ
ဆက်စပ် ခေါင်းစဉ်များ
- အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်: Problem Specification (ပြဿနာကို တိတိကျကျ ဖော်ပြချက်): CT ကို မသုံးခင် ပြဿနာကို သတ်မှတ် ဖော်ပြပါ
- နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Flowcharts (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံများ): CT နဲ့ ဒီဇိုင်းဆွဲထားတဲ့ algorithm တွေကို ပုံနဲ့ မြင်သာအောင် ပြပါ
- နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Selection (condition ပေါ်မူတည်ပြီး လမ်းကြောင်း ရွေးခြင်း): CT ထဲက ဆုံးဖြတ်ချက်တွေက code ထဲမှာ if/else ဖြစ်လာပါတယ်
- နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Iteration (ထပ်ခါထပ်ခါ လုပ်ခြင်း): CT ထဲက ထပ်ခါထပ်ခါ လုပ်တာတွေက code ထဲမှာ loop (ထပ်ခါထပ်ခါ run တဲ့ code အပိုင်း) တွေ ဖြစ်လာပါတယ်
- ဆက်စပ် ခေါင်းစဉ်: OOP Concepts (OOP သဘောတရားများ): CT ထဲက abstraction က OOP ထဲက abstraction နဲ့ ဆက်စပ်ပါတယ်