Abstract Data Types (operation တွေနဲ့ သတ်မှတ်တဲ့ ဒေတာ အမျိုးအစားများ)
B4.1: Abstract Data Types (HL only)
မြန်မာလို: abstract data type (operation တွေနဲ့ သတ်မှတ်တဲ့ ဒေတာ အမျိုးအစား) များ (HL အတွက်သာ)
ဒီအပိုင်း တစ်ခုလုံးက HL အတွက်ပဲ ဖြစ်ပါတယ်။ SL (Standard Level) နဲ့ HL (Higher Level) ဆိုတာ IB Computer Science (နိုင်ငံတကာ ကျောင်းတွေမှာ သင်တဲ့ ကွန်ပျူတာသိပ္ပံ သင်ရိုး) သင်တန်းရဲ့ အဆင့်နှစ်ဆင့်ဖြစ်ပြီး HL အပိုင်းတွေက ပိုနက်နက်ရှိုင်းရှိုင်း လေ့လာရတဲ့ အပိုင်းတွေပါ။
ခြုံငုံ မိတ်ဆက်
အရင် အပိုင်းတွေမှာ array (အရွယ်အစား ပုံသေ၊ အမျိုးအစားတူ ဒေတာစု)၊ ArrayList (ကြီးလာ၊ သေးသွားနိုင်တဲ့ list)၊ stack (အပေါ်ကနေပဲ ထည့်၊ ထုတ်တဲ့ အထပ်) နဲ့ queue (အရင်ထည့်တာ အရင်ထွက်တဲ့ တန်း) တွေကို programming language မှာ အသင့်ပါတဲ့ tool တွေနဲ့ သုံးခဲ့ပါတယ်: Java မှာဆိုရင် library class (object တွေ ဖန်တီးဖို့ ပုံစံခွက်) တွေ၊ Python မှာဆိုရင် list တွေပါ။ push()၊ pop()၊ add() နဲ့ remove() ကို ခေါ်သုံးခဲ့ပေမယ့် အဲဒီ operation (ဒေတာပေါ်မှာ လုပ်တဲ့ လုပ်ဆောင်ချက်) တွေ အတွင်းမှာ တကယ် ဘယ်လို အလုပ်လုပ်လဲ ဆိုတာကို စဉ်းစားစရာ မလိုခဲ့ပါဘူး။
ဒီအပိုင်းမှာတော့ အဲဒီ နောက်ကွယ်က အလုပ်လုပ်ပုံကို လေ့လာပါမယ်။ Data structure (ဒေတာ သိမ်းဆည်းပုံ) တွေကို node (ဒေတာ သိမ်းထားတဲ့ အကွက်) တွေနဲ့ reference (object ရှိရာ memory နေရာကို ညွှန်းတဲ့ တန်ဖိုး) တွေ သုံးပြီး အစကနေ ကိုယ်တိုင် တည်ဆောက်ပါမယ်။ မတူတဲ့ implementation (တကယ် အလုပ်လုပ်အောင် ရေးထားတဲ့ code) တွေကြားက trade-off (တစ်ခု ရဖို့ တစ်ခု အလျှော့ပေးရတာ) တွေကို နားလည်လာပြီး structure တစ်ခုစီက ဘယ်အလုပ်အတွက် အသင့်တော်ဆုံးလဲ ဆိုတာကိုလည်း သိလာပါမယ်။
| # | ခေါင်းစဉ် | Syllabus | အဓိက အယူအဆများ | Level |
|---|---|---|---|---|
| 1 | What Are ADTs? (ADT ဆိုတာ ဘာလဲ) | B4.1.1 | Interface (class တစ်ခု implement လုပ်ရမယ့် method စာရင်း) နဲ့ implementation ကွာခြားချက်၊ abstraction (မလိုတဲ့ အသေးစိတ်ကို ဖယ်ပြီး အဓိကကိုပဲ ကြည့်ခြင်း) ဘာကြောင့် အရေးကြီးလဲ | HL |
| 2 | Linked Lists (node တွေ ချိတ်ဆက်ထားတဲ့ list များ) | B4.1.2, B4.1.3 | Node class၊ traversal (node တိုင်းကို အစဉ်တကျ သွားကြည့်ခြင်း)၊ insert (ထည့်ခြင်း)၊ delete (ဖျက်ခြင်း) | HL |
| 3 | Ordered Linked Lists (တန်ဖိုးအလိုက် အစဉ်တကျ စီထားတဲ့ linked list များ) | B4.1.3 | အစဉ်မပျက်အောင် ထည့်ခြင်း၊ list ကို sorted (တန်ဖိုးအလိုက် အစဉ်တကျ စီပြီးသား) အမြဲ ဖြစ်နေအောင် ထိန်းထားခြင်း | HL |
| 4 | Doubly Linked Lists (နှစ်ဘက်လုံး ချိတ်ဆက်ထားတဲ့ linked list များ) | B4.1.2, B4.1.3 | prev + next reference တွေ၊ ရှေ့ကို ရော နောက်ကို ပါ traverse လုပ်ခြင်း | HL |
| 5 | Stacks from Scratch (stack ကို အစကနေ ကိုယ်တိုင် တည်ဆောက်ခြင်း) | B4.1.1 | ချိတ်ဆက်ထားတဲ့ node တွေနဲ့ LIFO (နောက်ဆုံးဝင်တာ အရင်ထွက်) ကို တည်ဆောက်ခြင်း | HL |
| 6 | Queues from Scratch (queue ကို အစကနေ ကိုယ်တိုင် တည်ဆောက်ခြင်း) | B4.1.1 | ချိတ်ဆက်ထားတဲ့ node တွေနဲ့ FIFO (အရင်ဝင်တာ အရင်ထွက်) ကို တည်ဆောက်ခြင်း | HL |
| 7 | Binary Search Trees (ဘယ်ဘက် ငယ်၊ ညာဘက် ကြီးတဲ့ binary tree များ) | B4.1.4 | left/right ပါတဲ့ node၊ insert၊ search (ရှာခြင်း)၊ in-order traversal (ဘယ်၊ node၊ ညာ အစဉ်နဲ့ node တွေကို သွားကြည့်ခြင်း) | HL |
| 8 | BST Operations (binary search tree ပေါ်မှာ လုပ်တဲ့ operation များ) | B4.1.4 | Delete၊ height (tree ရဲ့ အမြင့်)၊ balanced tree နဲ့ unbalanced tree (ဘယ်ညာ ညီမျှတဲ့ tree နဲ့ တစ်ဘက်ကို စောင်းနေတဲ့ tree)၊ traversal အမျိုးမျိုး | HL |
| 9 | Sets and HashMaps (set နဲ့ HashMap များ) | B4.1.5, B4.1.6 | Hashing (key ကို index အဖြစ် ပြောင်းခြင်း)၊ collision resolution (key နှစ်ခု index တူသွားရင် ဖြေရှင်းပုံ)၊ မထပ်တဲ့ element (အစုထဲက အချက်) များ | HL |
| 10 | Choosing the Right Structure (သင့်တော်တဲ့ data structure ကို ရွေးချယ်ခြင်း) | B4.1 အားလုံး | Trade-off ဇယား၊ ဆုံးဖြတ်ချက် ချဖို့ flowchart (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ) | HL |
Syllabus ကော်လံက IB Computer Science သင်ရိုးထဲက အပိုင်း နံပါတ်တွေ ဖြစ်ပြီး Level ကော်လံက IB သင်တန်းရဲ့ ဘယ်အဆင့်မှာ လေ့လာရလဲ ဆိုတာ ပြပါတယ်။
သုံးတာနဲ့ တည်ဆောက်တာ: B2.2 (IB syllabus ရဲ့ data structure အပိုင်း) မှာ stack နဲ့ queue တွေကို အသင့်ပါတဲ့ tool တွေ (Java ရဲ့ library class တွေ၊ Python ရဲ့ list တွေ) နဲ့ သုံး တတ်အောင် လေ့လာခဲ့ပါတယ်။ ဒီမှာတော့ node class တွေ ရေးပြီး pointer (reference ကို ခေါ်တဲ့ နောက်နာမည်တစ်ခု) တွေကို ပြင်ဆင် ချိတ်ဆက်ကာ အဲဒါတွေကို အစကနေ ကိုယ်တိုင် တည်ဆောက် တတ်အောင် လေ့လာပါမယ်။ ဒါက လုံးဝ မတူတဲ့ ကျွမ်းကျင်မှု တစ်ခုပါ။
ဒီအပိုင်းနဲ့ ဆက်စပ်နေတဲ့ ခေါင်းစဉ်များ
- အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်များ: OOP Fundamentals (object တွေကို အခြေခံပြီး program ရေးနည်းရဲ့ အခြေခံများ): class၊ encapsulation (ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း) နဲ့ object reference တွေ။ Recursion (method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း): binary search tree တွေကို traverse လုပ်ဖို့ လိုပါတယ်။
- အခြေခံထားတဲ့ ခေါင်းစဉ်များ: Stacks နဲ့ Queues (အသင့်ပါတဲ့ class တွေနဲ့ သုံးခဲ့တဲ့ ပုံစံ)
- အသုံးဝင်တဲ့ နေရာ: ကိုယ်ပိုင် data structure တွေ လိုအပ်တဲ့ Internal Assessment (IB သင်တန်းမှာ ကျောင်းသားတစ်ယောက်ချင်း ကိုယ်တိုင် တည်ဆောက်ရပြီး ကျောင်းက ဆရာက အမှတ်ပေးတဲ့ အပိုင်း) project တွေ