Glossary (ဝေါဟာရ အဓိပ္ပာယ်များ)
သင်ခန်းစာတွေမှာ ရှင်းပြထားတဲ့ ဝေါဟာရ အားလုံးပါ: ဝေါဟာရတစ်ခုစီရဲ့ အဓိပ္ပာယ်နဲ့ အဲဒါကို သင်တဲ့ သင်ခန်းစာ။ စုစုပေါင်း ဝေါဟာရ 277 ခု ရှိပါတယ်။ ဝေါဟာရ နာမည်တွေကို English လိုပဲ ထားပြီး မြန်မာ အဓိပ္ပာယ်ကို ဘေးမှာ ပြထားပါတယ်။
Data representation (ကွန်ပျူတာထဲမှာ ဒေတာကို ဖော်ပြ သိမ်းဆည်းပုံ)
- Binary
- 0 နဲ့ 1 ကိုပဲ သုံးတဲ့ ဂဏန်းစနစ်: 0 နဲ့ 1 ကိုပဲ သုံးတဲ့ base-2 ဂဏန်းစနစ်ပါ။ ကွန်ပျူတာထဲက ဒေတာ အားလုံးကို ဖော်ပြတဲ့ အခြေခံ ပုံစံပါ။ ဂဏန်းစနစ်များ မှာ သင်ပါတယ်
- Hexadecimal
- အခြေ 16 ဂဏန်းစနစ်: 0-9 နဲ့ A-F ကို သုံးတဲ့ base-16 ဂဏန်းစနစ်ပါ။ binary တန်ဖိုးတွေကို တိုတိုရှင်းရှင်း ရေးဖို့ အများအားဖြင့် သုံးပါတယ်။ ဂဏန်းစနစ်များ မှာ သင်ပါတယ်
- ASCII
- character 128 လုံးအတွက် code စနစ်: American Standard Code for Information Interchange ပါ။ character 128 လုံး (စာလုံး၊ ဂဏန်း၊ သင်္ကေတ) ကို ဖော်ပြတဲ့ 7-bit encoding ပါ။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
- Unicode
- ကမ္ဘာ့ စာလုံး အားလုံးအတွက် code စနစ်: ကမ္ဘာပေါ်က စာရေးစနစ် အားလုံးကနေ character 140,000 ကျော်ကို ထောက်ပံ့တဲ့ universal character encoding စံပါ။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
- Lossy compression
- ဒေတာ တချို့ကို ဖယ်ပြီး ချုံ့ခြင်း: file ကို ပိုသေးအောင် ဒေတာ တချို့ကို အပြီးတိုင် ဖယ်ရှားတဲ့ compression ပါ။ အရည်အသွေး လျော့သွားပြီး အပြည့်အဝ ပြန်မရနိုင်ပါဘူး (ဥပမာ JPEG, MP3)။ ဒေတာ ချုံ့ခြင်း မှာ သင်ပါတယ်
- Lossless compression
- ဒေတာ မဆုံးရှုံးဘဲ ချုံ့ခြင်း: ဒေတာ ဘာမှ မဆုံးရှုံးဘဲ file အရွယ်အစားကို လျှော့ပေးတဲ့ compression ပါ။ မူရင်းကို အတိအကျ ပြန်ရပါတယ် (ဥပမာ PNG, ZIP)။ ဒေတာ ချုံ့ခြင်း မှာ သင်ပါတယ်
- Sample rate
- တစ်စက္ကန့်မှာ အသံ နမူနာ ယူတဲ့ အကြိမ်ရေ: တစ်စက္ကန့်မှာ ဖမ်းယူတဲ့ အသံ sample အရေအတွက်ပါ (Hz နဲ့ တိုင်းတယ်)။ sample rate မြင့်လေ = digital ဖော်ပြချက် ပိုတိကျလေပါ။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
- Colour depth
- pixel တစ်ခုရဲ့ အရောင်အတွက် bit အရေအတွက်: pixel တစ်ခုချင်းရဲ့ အရောင်ကို ဖော်ပြဖို့ သုံးတဲ့ bit အရေအတွက်ပါ။ 8-bit = အရောင် 256 မျိုး၊ 24-bit = အရောင် ~16.7 သန်း။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
- Bitmap
- pixel ဇယားကွက်နဲ့ သိမ်းတဲ့ ပုံ: pixel ဇယားကွက်အဖြစ် သိမ်းထားတဲ့ ပုံပါ၊ pixel တစ်ခုချင်းရဲ့ အရောင်ကို binary တန်ဖိုးအဖြစ် မှတ်ထားပါတယ်။ file အရွယ်အစား = width x height x colour depth (bit နဲ့)။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
- Pixel
- ပုံထဲက အစက် တစ်စက်: Picture element ပါ: bitmap ပုံထဲက အစက် တစ်စက်ပါ။ pixel တစ်ခုစီက binary နဲ့ အရောင် တန်ဖိုး တစ်ခု သိမ်းပြီး 24-bit RGB မှာ အနီ၊ အစိမ်း၊ အပြာ တစ်ခုစီအတွက် 8 bit စီ ရပါတယ်။ ဒေတာကို binary နဲ့ ဖော်ပြခြင်း မှာ သင်ပါတယ်
Hardware (ကိုယ်ထိလက်ရောက် စက်ပစ္စည်း)
- CPU
- ကွန်ပျူတာရဲ့ အဓိက processor: Central Processing Unit ပါ။ ကွန်ပျူတာထဲမှာ ညွှန်ကြားချက်တွေကို လုပ်ဆောင်ပြီး ဒေတာကို စီမံဆောင်ရွက်ပေးတဲ့ အဓိက အစိတ်အပိုင်းပါ။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- ALU
- တွက်ချက်ပြီး နှိုင်းယှဉ်ပေးတဲ့ CPU အပိုင်း: Arithmetic Logic Unit ပါ။ သင်္ချာ တွက်ချက်မှုတွေနဲ့ logic နှိုင်းယှဉ်မှုတွေကို လုပ်ပေးတဲ့ CPU ရဲ့ အစိတ်အပိုင်းပါ။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- FDE cycle
- ညွှန်ကြားချက်ကို ယူ၊ နားလည်၊ လုပ်ဆောင်တဲ့ စက်ဝန်း: Fetch-Decode-Execute cycle ပါ။ CPU က memory ထဲကနေ ညွှန်ကြားချက်တစ်ခုကို ယူတယ်၊ ဘာလုပ်ရမလဲ အဓိပ္ပာယ်ဖော်တယ်၊ ပြီးရင် လုပ်ဆောင်တဲ့ လုပ်ငန်းစဉ်ပါ။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- GPU
- ဂရပ်ဖစ် processor: Graphics Processing Unit ပါ။ ဂရပ်ဖစ်နဲ့ ဒေတာ အများကြီး သုံးရတဲ့ အလုပ်တွေကို parallel processing နဲ့ လုပ်ဖို့ ရိုးရှင်းတဲ့ core အများကြီး ပါတဲ့ processor ပါ။ ဂရပ်ဖစ် processor မှာ သင်ပါတယ်
- TPU
- neural network တွက်ဖို့ Google ရဲ့ chip: Tensor Processing Unit ပါ။ neural network တွက်ချက်မှုတွေအတွက် သီးသန့် Google က ဒီဇိုင်းလုပ်ထားတဲ့ chip ပါ၊ ASIC အမျိုးအစား တစ်ခုပါ။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- ASIC
- အလုပ်တစ်မျိုးအတွက် သီးသန့် chip: Application-Specific Integrated Circuit ပါ။ ထုတ်လုပ်ချိန်မှာတင် circuit တွေ ပုံသေ သတ်မှတ်ပြီး တွက်ချက်မှု တစ်မျိုးတည်းအတွက် (ဥပမာ neural network တွေရဲ့ matrix တွက်ချက်မှု) ဒီဇိုင်းလုပ်ထားတဲ့ chip ပါ။ အဲဒီ အလုပ်ကို အလွန် ထိရောက်စွာ လုပ်နိုင်ပြီး အဲဒီ အမျိုးအစား model အမျိုးမျိုးကိုလည်း run နိုင်ပါသေးတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- FPGA
- ထုတ်ပြီးမှ circuit ပြန်ပြင်လို့ရတဲ့ chip: Field-Programmable Gate Array ပါ။ ထုတ်လုပ်ပြီးနောက်မှာ အတွင်းပိုင်း circuit တွေကို ပြန်ပြင်ဆင်လို့ရတဲ့ chip ပါ။ မူလ အမြန်နှုန်း အနည်းငယ် လျော့ပေမဲ့ ပြောင်းလွယ်ပြင်လွယ် ရှိပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- HPC
- စွမ်းဆောင်ရည်မြင့် ကွန်ပျူတာ စနစ်: High-Performance Computing ပါ။ ကွန်ပျူတာ တစ်လုံးတည်းနဲ့ မနိုင်လောက်အောင် ကြီးမားတဲ့ အလုပ်တွေအတွက် စက်အများကြီးကို ချိတ်ဆက်ပြီး supercomputer တစ်လုံးလို အတူ အလုပ်လုပ်စေတာပါ။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- RAM
- ပါဝါပိတ်ရင် ပျောက်တဲ့ အဓိက memory: Random Access Memory ပါ။ CPU က လက်ရှိ သုံးနေတဲ့ ဒေတာနဲ့ ညွှန်ကြားချက်တွေကို သိမ်းထားတဲ့ primary memory ပါ၊ volatile ဖြစ်တာမို့ ပါဝါပိတ်ရင် ဒေတာ ပျောက်ပါတယ်။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- ROM
- ဖတ်ရုံသာ ရတဲ့ memory: Read-Only Memory ပါ။ ကွန်ပျူတာ စဖွင့်ဖို့ လိုတဲ့ startup (boot) ညွှန်ကြားချက်တွေကို သိမ်းထားတဲ့ non-volatile memory ပါ။ ပါဝါပိတ်ထားလည်း ဒေတာ မပျောက်ပါဘူး။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- Cache
- CPU နဲ့ RAM ကြားက မြန်တဲ့ memory: CPU နဲ့ RAM ကြားမှာ ရှိတဲ့ သေးငယ်ပြီး မြန်တဲ့ memory ပါ။ မကြာခဏ သုံးတဲ့ ဒေတာကို သိမ်းထားပြီး ဒေတာ ယူရတဲ့ အချိန်ကို လျှော့ပေးပါတယ်။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- Register
- CPU ထဲက အမြန်ဆုံး သိမ်းဆည်းရာ: CPU ထဲမှာ ရှိတဲ့ အလွန်သေးငယ်ပြီး အလွန်မြန်တဲ့ သိမ်းဆည်းရာ နေရာပါ။ ချက်ချင်း စီမံဆောင်ရွက်နေတဲ့ ဒေတာကို ကိုင်ထားဖို့ သုံးပါတယ်။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Bus
- အစိတ်အပိုင်းတွေကြား ဒေတာ သွားတဲ့ လမ်းကြောင်း: ကွန်ပျူတာထဲက အစိတ်အပိုင်းတွေကြား ဒေတာ ပို့ပေးတဲ့ ဆက်သွယ်ရေး လမ်းကြောင်းပါ (data bus, address bus, control bus)။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- SSD
- ရွေ့လျားတဲ့ အစိတ်အပိုင်း မပါတဲ့ သိုလှောင်စက်: Solid State Drive ပါ။ ရွေ့လျားတဲ့ အစိတ်အပိုင်း မပါဘဲ flash memory သုံးတဲ့ secondary storage စက်ပစ္စည်းပါ။ HDD ထက် ပိုမြန်ပြီး ပိုခံပါတယ်။ ပါဝါပိတ်ပြီးလည်း ဒေတာ ကျန်နေတဲ့ ရေရှည် storage မှာ သင်ပါတယ်
- HDD
- လည်နေတဲ့ သံလိုက်ပြား သုံးတဲ့ သိုလှောင်စက်: Hard Disk Drive ပါ။ လည်နေတဲ့ သံလိုက် ပြားတွေနဲ့ read/write head သုံးတဲ့ secondary storage စက်ပစ္စည်းပါ။ GB တစ်ခုချင်းအလိုက် SSD ထက် စျေးသက်သာပါတယ်။ ပါဝါပိတ်ပြီးလည်း ဒေတာ ကျန်နေတဲ့ ရေရှည် storage မှာ သင်ပါတယ်
- Compiler
- code တစ်ခုလုံးကို ကြိုတင် ဘာသာပြန်တဲ့ program: source code file တစ်ခုလုံးကို မ run ခင် machine code (ဒါမှမဟုတ် bytecode) အဖြစ် ပြောင်းပေးတဲ့ translator ပါ။ အမှားတွေကို မ run ခင်မှာ ပြပါတယ်။ Program code ကို ဘာသာပြန်ခြင်း (HL) မှာ သင်ပါတယ်
- Interpreter
- code ကို တစ်ကြောင်းချင်း ဘာသာပြန်ပြီး run တဲ့ program: source code ကို တစ်ကြောင်းချင်း ပြောင်းပြီး run ပေးတဲ့ translator ပါ။ အမှားတွေကို run နေစဉ်မှာ တွေ့ပြီး ပထမဆုံး အမှားမှာ ရပ်သွားပါတယ်။ Program code ကို ဘာသာပြန်ခြင်း (HL) မှာ သင်ပါတယ်
- Control unit
- CPU ထဲက ညွှန်ကြားချက် ထိန်းချုပ်ရေး အပိုင်း: ညွှန်ကြားချက်တွေကို fetch နဲ့ decode လုပ်ပြီး ALU, register နဲ့ bus တွေကို ညှိနှိုင်းဖို့ control signal တွေ ပို့ပေးတဲ့ CPU အစိတ်အပိုင်းပါ။ fetch-decode-execute cycle ကို ညွှန်ကြားပေမဲ့ ကိုယ်တိုင်တော့ ဘာ တွက်ချက်မှုမှ မလုပ်ပါဘူး။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Multi-core
- core အများကြီး ပါတဲ့ CPU: chip တစ်ခုပေါ်မှာ သီးခြား processing core အများကြီး ပါတဲ့ CPU ပါ၊ core တစ်ခုစီက ကိုယ့် ညွှန်ကြားချက်တွေကို fetch, decode, execute လုပ်နိုင်တာမို့ အလုပ် အများကြီးကို တကယ် တစ်ပြိုင်နက် run နိုင်ပါတယ်။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Pipelining
- ညွှန်ကြားချက် အဆင့်တွေကို မစောင့်ဘဲ ထပ်ပြီး လုပ်ခြင်း: ညွှန်ကြားချက် အများကြီးရဲ့ fetch, decode, execute, write-back အဆင့်တွေကို တစ်ခုပြီးမှ တစ်ခု မစောင့်ဘဲ ထပ်ပြီး လုပ်တာပါ၊ ဒါကြောင့် cycle တိုင်းမှာ CPU အဆင့်တိုင်း အလုပ်ရှိနေပါတယ်။ clock speed မမြှင့်ဘဲ တစ်စက္ကန့်မှာ ပြီးတဲ့ ညွှန်ကြားချက် အရေအတွက် (throughput) ကို တိုးပေးပါတယ်။ CPU ရဲ့ ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Cache hit
- လိုတဲ့ ဒေတာ cache ထဲမှာ ရှိခြင်း: CPU လိုတဲ့ ဒေတာက cache ထဲမှာ ရှိပြီးသားဖြစ်လို့ ပိုနှေးတဲ့ RAM ဆီ သွားစရာ မလိုတာပါ။ hit rate မြင့်ရင် CPU ကို ဒေတာ အမြန် ရနေစေပါတယ်။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- Cache miss
- လိုတဲ့ ဒေတာ cache ထဲမှာ မရှိခြင်း: တောင်းတဲ့ ဒေတာက cache ထဲမှာ မရှိလို့ CPU က ပိုနှေးတဲ့ memory (နောက် cache level ဒါမှမဟုတ် RAM) ကနေ ယူပြီး စောင့်ရတာပါ။ miss တစ်ခါစီက run တာကို ရပ်တန့်စေတာမို့ cache design က miss တွေ ရှားအောင် ရည်ရွယ်ပါတယ်။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- Cloud computing
- အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource: ကွန်ပျူတာ resource တွေကို (server၊ storage, software) လိုတဲ့အချိန် အင်တာနက်ကနေ ပေးတာပါ၊ hardware ကို ကိုယ်တိုင် ပိုင်ပြီး ထိန်းသိမ်းမယ့်အစား သုံးသလောက်ပဲ ပေးရပါတယ်။ အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource မှာ သင်ပါတယ်
- Virtualization
- ကွန်ပျူတာ တစ်လုံးပေါ်မှာ virtual machine အများ run ခြင်း: physical ကွန်ပျူတာ တစ်လုံးပေါ်မှာ virtual machine အများကြီး run တာပါ၊ တစ်ခုစီက ကိုယ်ပိုင် operating system နဲ့ သီးခြား ကွန်ပျူတာ တစ်လုံးလို အလုပ်လုပ်ပါတယ်။ cloud computing ရဲ့ အခြေခံ ဖြစ်ပြီး hardware ကို ပိုပြည့်ပြည့်ဝဝ အသုံးချနိုင်စေပါတယ်။ အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource မှာ သင်ပါတယ်
- SaaS
- အင်တာနက်ကနေ အသင့်သုံး software: Software as a Service ပါ။ အင်တာနက်ကနေ ပေးတဲ့ အသင့်သုံး application တွေပါ (web email, online documents): app အောက်က အရာအားလုံးကို provider က စီမံတာမို့ customer မှာ ထိန်းချုပ်ခွင့် အနည်းဆုံး၊ တာဝန် အနည်းဆုံး ရှိပါတယ်။ အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource မှာ သင်ပါတယ်
- PaaS
- app တင်ဖို့ အသင့်ပြင်ထားတဲ့ platform: Platform as a Service ပါ။ developer တွေက server စီမံစရာ မလိုဘဲ ကိုယ့် application တွေကို deploy လုပ်နိုင်တဲ့ စီမံပေးထားတဲ့ ပတ်ဝန်းကျင်ပါ (operating system, runtime, tools)။ ထိန်းချုပ်ခွင့်နဲ့ အဆင်ပြေမှုကို ချိန်ညှိပေးပါတယ်။ အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource မှာ သင်ပါတယ်
- IaaS
- virtual machine နဲ့ storage ကို ငှားသုံးခြင်း: Infrastructure as a Service ပါ။ cloud provider ဆီကနေ အခြေခံ resource တွေကို (virtual machine, storage, network) ငှားသုံးတာပါ: customer က operating system နဲ့ software ကို စီမံရတာမို့ ထိန်းချုပ်ခွင့် အများဆုံး၊ တာဝန် အများဆုံး ရှိပါတယ်။ အင်တာနက်ကနေ ငှားသုံးတဲ့ ကွန်ပျူတာ resource မှာ သင်ပါတယ်
- NAS
- network နဲ့ ချိတ်ထားတဲ့ မျှသုံး storage: Network-Attached Storage ပါ။ အသုံးပြုသူ အများနဲ့ စက်ပစ္စည်း အများက မျှသုံး file တွေကို ဝင်သုံးနိုင်အောင် network နဲ့ ချိတ်ထားတဲ့ သီးသန့် storage စက်ပစ္စည်းပါ။ backup တွေနဲ့ မျှသုံး media library တွေအတွက် အသုံးများပါတယ်။ ပါဝါပိတ်ပြီးလည်း ဒေတာ ကျန်နေတဲ့ ရေရှည် storage မှာ သင်ပါတယ်
- Run-length encoding
- ထပ်နေတဲ့ တန်ဖိုးတွေကို အရေအတွက်နဲ့ ချုံ့ခြင်း: ဆက်တိုက် ထပ်နေတဲ့ တူညီတန်ဖိုး တစ်တန်းကို တန်ဖိုး တစ်ခုနဲ့ အရေအတွက် အဖြစ် အစားထိုးတဲ့ lossless compression နည်းပါ (AAAA က 4A ဖြစ်)။ ရိုးရှင်းတဲ့ ဂရပ်ဖစ်လို တူတာတွေ ရှည်ရှည် ဆက်တိုက် ပါတဲ့ ဒေတာမှာ အကောင်းဆုံး အလုပ်လုပ်ပါတယ်။ ဒေတာ ချုံ့ခြင်း မှာ သင်ပါတယ်
- Transform coding
- လူ သိပ်မသိနိုင်တဲ့ အပိုင်းတွေကို ဖယ်ပြီး ချုံ့ခြင်း: ဒေတာကို frequency component တွေအဖြစ် ပြောင်းပြီး လူတွေ သိပ်မခံစားမိတဲ့ component တွေကို ဖယ်ပစ်တဲ့ lossy compression နည်းပါ။ JPEG ပုံတွေနဲ့ MP3 အသံတွေရဲ့ အခြေခံပါ။ ဒေတာ ချုံ့ခြင်း မှာ သင်ပါတယ်
- Bytecode
- virtual machine က run တဲ့ ကြားခံ code: compiler (Java ရဲ့ javac လို) ထုတ်ပေးတဲ့ ကြားခံ code ပါ၊ ဘယ် CPU အစစ်အတွက် machine code မှ မဟုတ်ပါဘူး။ virtual machine က interpret ဒါမှမဟုတ် JIT-compile လုပ်တာမို့ compile လုပ်ထားတဲ့ file တစ်ခုတည်းကို VM ရှိတဲ့ platform တိုင်းမှာ run နိုင်ပါတယ်။ Program code ကို ဘာသာပြန်ခြင်း (HL) မှာ သင်ပါတယ်
- JIT compilation
- run နေစဉ် machine code အဖြစ် ပြောင်းခြင်း: Just-In-Time compilation ပါ။ program run နေစဉ်မှာ bytecode ကို native machine code အဖြစ် ပြောင်းတာပါ၊ ဒါကြောင့် မကြာခဏ run တဲ့ code က compile လုပ်ထားတဲ့ အမြန်နှုန်း ရပြီး interpretation ရဲ့ platform တိုင်းမှာ run နိုင်တဲ့ အားသာချက် (portability) ကိုလည်း ဆက်ထိန်းထားပါတယ်။ Program code ကို ဘာသာပြန်ခြင်း (HL) မှာ သင်ပါတယ်
Logic gates (input bit တွေကနေ output bit တစ်ခု ထုတ်ပေးတဲ့ circuit အစိတ်အပိုင်းများ)
- AND gate
- input နှစ်ခုလုံး 1 မှ 1 ထွက်တဲ့ gate: input နှစ်ခုလုံး 1 ဖြစ်မှသာ 1 ထုတ်ပေးတဲ့ logic gate ပါ။ Boolean ပုံစံ: A AND B။ Logic gate များ မှာ သင်ပါတယ်
- OR gate
- input တစ်ခုခု 1 ဆိုရင် 1 ထွက်တဲ့ gate: အနည်းဆုံး input တစ်ခု 1 ဖြစ်ရင် 1 ထုတ်ပေးတဲ့ logic gate ပါ။ Boolean ပုံစံ: A OR B။ Logic gate များ မှာ သင်ပါတယ်
- NOT gate
- input ကို ပြောင်းပြန်လှန်တဲ့ gate: input ကို ပြောင်းပြန်လှန်ပေးတဲ့ logic gate ပါ: 0 က 1 ဖြစ်ပြီး 1 က 0 ဖြစ်ပါတယ်။ Boolean ပုံစံ: NOT A။ Logic gate များ မှာ သင်ပါတယ်
- Truth table
- input အားလုံးနဲ့ output ကို ပြတဲ့ ဇယား: logic expression တစ်ခုအတွက် ဖြစ်နိုင်တဲ့ input တွဲ အားလုံးနဲ့ တစ်ခုချင်းရဲ့ ရလဒ် output ကို စာရင်းပြုစုထားတဲ့ ဇယားပါ။ Logic gate များ မှာ သင်ပါတယ်
- NAND gate
- AND ရဲ့ ပြောင်းပြန် gate: input နှစ်ခုလုံး 1 ဖြစ်မှသာ 0 ထုတ်ပေးတဲ့ logic gate ပါ (NOT AND)။ functionally complete ဖြစ်ပါတယ်: ဘယ် logic circuit ကိုမဆို NAND gate တွေချည်းပဲ သုံးပြီး တည်ဆောက်နိုင်ပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
- NOR gate
- OR ရဲ့ ပြောင်းပြန် gate: input နှစ်ခုလုံး 0 ဖြစ်မှသာ 1 ထုတ်ပေးတဲ့ logic gate ပါ (NOT OR)။ Logic gate များ မှာ သင်ပါတယ်
- XOR gate
- input တစ်ခုတည်း 1 ဆိုမှ 1 ထွက်တဲ့ gate: Exclusive OR ပါ။ input တစ်ခုတည်း အတိအကျ 1 ဖြစ်မှ 1 ထုတ်ပေးတဲ့ logic gate ပါ၊ input တူရင် 0 ထွက်ပါတယ်။ binary ပေါင်းခြင်း circuit တွေမှာ သုံးပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
- XNOR gate
- input နှစ်ခု တူရင် 1 ထွက်တဲ့ gate: Exclusive NOR ပါ။ input နှစ်ခု တူရင် (နှစ်ခုလုံး 0 ဒါမှမဟုတ် နှစ်ခုလုံး 1) 1 ထုတ်ပေးတဲ့ logic gate ပါ: XOR ရဲ့ ပြောင်းပြန်ဖြစ်ပြီး တူမတူ စစ်ဖို့ သုံးပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
- Karnaugh map
- Boolean expression ကို ရိုးရှင်းအောင် လုပ်တဲ့ ဇယားကွက်: ဘေးချင်းကပ် အကွက်တွေက variable တစ်ခုပဲ ကွာအောင် truth table ကို ဇယားကွက်ပုံ စီထားတာပါ။ 1 တွေကို 1, 2, 4 ဒါမှမဟုတ် 8 အရွယ် စတုဂံတွေနဲ့ အုပ်စုဖွဲ့လိုက်ရင် ရိုးရှင်းတဲ့ Boolean expression ကို ဖတ်ယူနိုင်ပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
- Boolean algebra
- 1 နဲ့ 0 ကို သုံးတဲ့ logic သင်္ချာ: logic တန်ဖိုး 1 နဲ့ 0 (true နဲ့ false) ကို AND, OR, NOT operator တွေနဲ့ တွက်တဲ့ algebra ပါ။ identity, annulment နဲ့ De Morgan's laws လို စည်းမျဉ်းတွေက logic expression တွေနဲ့ circuit တွေကို ရိုးရှင်းအောင် လုပ်ပေးပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
- Logic diagram
- logic gate တွေနဲ့ ဆွဲထားတဲ့ circuit ပုံ: Boolean expression တစ်ခုကို logic gate တွေ ဘယ်လို ပေါင်းပြီး အကောင်အထည်ဖော်လဲဆိုတာ စံ gate သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ circuit ပုံပါ။ input ကနေ output ဆီ ဘယ်ကနေ ညာ ဖတ်ပါတယ်။ Logic gate များ မှာ သင်ပါတယ်
Control systems (ထိန်းချုပ်ရေး စနစ်များ)
- Sensor
- ပတ်ဝန်းကျင် အပြောင်းအလဲကို ထောက်လှမ်းတဲ့ ကိရိယာ: ပတ်ဝန်းကျင်က အပြောင်းအလဲတွေကို (အပူချိန်၊ အလင်း၊ ဖိအား) ထောက်လှမ်းပြီး စနစ်က စီမံဆောင်ရွက်နိုင်တဲ့ signal အဖြစ် ပြောင်းပေးတဲ့ စက်ပစ္စည်းပါ။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Actuator
- ရုပ်ပိုင်းဆိုင်ရာ လုပ်ဆောင်ချက် လုပ်ပေးတဲ့ ကိရိယာ: controller ဆီက အမိန့်တွေကို တုံ့ပြန်ပြီး ရုပ်ပိုင်းဆိုင်ရာ လုပ်ဆောင်ချက် (motor, heater, valve) ကို လုပ်ပေးတဲ့ စက်ပစ္စည်းပါ။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Feedback loop
- output ကို တိုင်းပြီး အလိုအလျောက် ညှိခြင်း: စနစ်တစ်ခုက ကိုယ့် output ကို ကိုယ်တိုင် တိုင်းပြီး အလိုအလျောက် ညှိပေးတာပါ။ ဥပမာ: thermostat က အပူချိန်ကို စစ်ပြီး heater ကို ဖွင့်တာ ဒါမှမဟုတ် ပိတ်တာ လုပ်ပါတယ်။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Transducer
- စွမ်းအင် ပုံစံ ပြောင်းပေးတဲ့ ကိရိယာ: စွမ်းအင် ပုံစံ တစ်မျိုးကနေ နောက်တစ်မျိုးကို ပြောင်းပေးတဲ့ စက်ပစ္စည်းပါ။ control system တွေမှာ sensor တွေ (ရုပ်ပိုင်း signal ကနေ လျှပ်စစ်) ရော actuator တွေ (လျှပ်စစ်ကနေ ရုပ်ပိုင်းဆိုင်ရာ လုပ်ဆောင်ချက်) ပါ transducer တွေ ဖြစ်ပါတယ်။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Closed-loop system
- feedback သုံးပြီး ကိုယ့်ကိုယ်ကို ညှိတဲ့ စနစ်: feedback ကို သုံးတဲ့ control system ပါ: sensor တွေက output ကို တိုင်း၊ controller က ပစ်မှတ် တန်ဖိုး (target value) နဲ့ နှိုင်းယှဉ်ပြီး actuator တွေက အဆက်မပြတ် ညှိပေးပါတယ်။ thermostat က လူသိများတဲ့ ဥပမာပါ။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Open-loop system
- feedback မပါတဲ့ ပုံသေ စနစ်: ကိုယ့် output ကို မတိုင်းဘဲ ပုံသေ အစီအစဉ်အတိုင်း run တဲ့ control system ပါ။ feedback မရှိတာမို့ အမှားတွေကို မပြင်နိုင်ပါဘူး: ရိုးရိုး အဝတ်လျှော်စက် cycle တစ်ခုက အထဲမှာ ဘာဖြစ်ဖြစ် တူတူပဲ run ပါတယ်။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
- Embedded system
- စက်ထဲ ထည့်ထားတဲ့ ကွန်ပျူတာငယ်: အလုပ် တစ်ခုတည်းကို လုပ်ဖို့ ပိုကြီးတဲ့ စက်ပစ္စည်းထဲ ထည့်တည်ဆောက်ထားတဲ့ ကွန်ပျူတာငယ်ပါ (microwave controller, ကား ဘရိတ် စနစ်)။ အများအားဖြင့် ပါဝါ နည်းနည်းသုံးပြီး real-time ဖြစ်ကာ ပုံသေ firmware နဲ့ run ပါတယ်။ ထိန်းချုပ်ရေး စနစ်များ မှာ သင်ပါတယ်
Programming (program ရေးခြင်း)
- Variable
- တန်ဖိုး သိမ်းထားတဲ့ နာမည်ပေးထားတဲ့ နေရာ: memory ထဲမှာ နာမည်ပေးထားတဲ့ သိမ်းဆည်းရာ နေရာတစ်ခုပါ။ program run နေစဉ် ပြောင်းလဲနိုင်တဲ့ တန်ဖိုးကို သိမ်းထားပါတယ်။ Variable နဲ့ Data Type များ မှာ သင်ပါတယ်
- Data type
- ဒေတာ အမျိုးအစား: variable တစ်ခု သိမ်းနိုင်တဲ့ တန်ဖိုး အမျိုးအစားပါ (ဥပမာ int, double, String, boolean)။ ဘယ်လို operation တွေ လုပ်လို့ရလဲဆိုတာကို ဒါက သတ်မှတ်ပေးပါတယ်။ Variable နဲ့ Data Type များ မှာ သင်ပါတယ်
- String
- စာသား: character တွေကို အစဉ်လိုက် တွဲထားတဲ့ စာသားပါ၊ ဥပမာ နာမည် ဒါမှမဟုတ် စာကြောင်းတစ်ကြောင်း။ == နဲ့ မဟုတ်ဘဲ .equals() နဲ့ နှိုင်းယှဉ်ရပါတယ်။ .length(), .substring(), .charAt() တို့နဲ့ ကိုင်တွယ်ပါတယ်။ String နဲ့ သုံးတဲ့ method များ မှာ သင်ပါတယ်
- Exception
- program run နေစဉ် ဖြစ်တဲ့ အမှား: program run နေစဉ် (runtime) ဖြစ်ပေါ်ပြီး ပုံမှန် အလုပ်လုပ်ပုံကို ပျက်စေတဲ့ အမှားပါ။ try/catch နဲ့ ကိုင်တွယ်ပါတယ်။ Exception တွေကို ကိုင်တွယ်ခြင်း မှာ သင်ပါတယ်
- Selection
- condition ပေါ်မူတည်ပြီး လမ်းကြောင်း ရွေးခြင်း: condition တစ်ခုပေါ် မူတည်ပြီး မတူတဲ့ လမ်းကြောင်းတွေထဲက တစ်ခုကို ရွေးပေးတဲ့ control structure ပါ (if, else if, else)။ Condition ပေါ်မူတည်ပြီး လမ်းကြောင်း ရွေးခြင်း မှာ သင်ပါတယ်
- Iteration
- ထပ်ခါထပ်ခါ လုပ်ခြင်း: condition တစ်ခု ပြည့်မီတဲ့အထိ code block တစ်ခုကို ထပ်ခါထပ်ခါ လုပ်ပေးတဲ့ control structure ပါ (for loop, while loop)။ ထပ်ခါထပ်ခါ လုပ်ခြင်း မှာ သင်ပါတယ်
- Method
- သီးခြား အလုပ်တစ်ခု လုပ်ပေးတဲ့ code အပိုင်း: သတ်မှတ်ထားတဲ့ အလုပ်တစ်ခုကို လုပ်ပေးပြီး ပြန်သုံးလို့ရတဲ့ code block ပါ။ နာမည်၊ parameter တွေနဲ့ return type တို့နဲ့ သတ်မှတ်ပါတယ်။ Method တွေ ရေးပြီး program ကို အပိုင်းငယ်တွေ ခွဲတည်ဆောက်ခြင်း မှာ သင်ပါတယ်
- Parameter
- method ကို ပေးလိုက်တဲ့ တန်ဖိုးကို လက်ခံတဲ့ variable: method header ထဲမှာ ကြေညာထားတဲ့ variable ပါ။ method ကို ခေါ်တဲ့အခါ ပေးလိုက်တဲ့ တန်ဖိုး (argument) ကို လက်ခံပါတယ်။ Method တွေ ရေးပြီး program ကို အပိုင်းငယ်တွေ ခွဲတည်ဆောက်ခြင်း မှာ သင်ပါတယ်
- Scope
- variable ကို သုံးလို့ရတဲ့ နယ်ပယ်: variable တစ်ခုကို သုံးလို့ရတဲ့ code အပိုင်းပါ။ local variable တွေက သူတို့ကို ကြေညာထားတဲ့ method ဒါမှမဟုတ် block ထဲမှာပဲ ရှိပါတယ်။ Method တွေ ရေးပြီး program ကို အပိုင်းငယ်တွေ ခွဲတည်ဆောက်ခြင်း မှာ သင်ပါတယ်
- Substring
- string ထဲက အပိုင်း တစ်ခု: substring(start, end) နဲ့ ထုတ်ယူတဲ့ string ရဲ့ အပိုင်း တစ်ခုပါ: start index ပါဝင်ပြီး end index မပါဝင်ပါဘူး၊ index တွေက 0 ကနေ စရေတွက်ပါတယ်။ String နဲ့ သုံးတဲ့ method များ မှာ သင်ပါတယ်
- Type casting
- data type တစ်ခုကနေ တစ်ခုကို ပြောင်းခြင်း: တန်ဖိုး တစ်ခုကို data type တစ်ခုကနေ နောက်တစ်ခုကို ပြောင်းတာပါ။ widening (int ကနေ double) က အလိုအလျောက် ဖြစ်ပြီး narrowing (double ကနေ int) ကတော့ explicit cast လိုအပ်ကာ ဒသမ အပိုင်းကို ဖြတ်ချပါတယ်။ Variable နဲ့ Data Type များ မှာ သင်ပါတယ်
- Scanner
- keyboard ဒါမှမဟုတ် file ကနေ input ဖတ်တဲ့ Java class: keyboard (System.in) ဒါမှမဟုတ် file ကနေ input ကို next(), nextLine(), nextInt() နဲ့ အလားတူ method တွေနဲ့ ဖတ်ပေးတဲ့ Java class ပါ။ hasNext() က input ကျန်သေးလား စစ်ပါတယ်။ Variable နဲ့ Data Type များ မှာ သင်ပါတယ်
- Global variable
- class တစ်ခုလုံးက သုံးလို့ရတဲ့ variable: class အဆင့်မှာ ကြေညာထားပြီး class ထဲက method တိုင်းက သုံးလို့ရတဲ့ variable ပါ။ အဆင်ပြေပေမဲ့ အန္တရာယ် ရှိပါတယ်: ဘယ် method မဆို ပြောင်းလို့ရတာမို့ ဖြစ်နိုင်ရင် local variable တွေနဲ့ parameter တွေကို ပိုသုံးပါ။ Method တွေ ရေးပြီး program ကို အပိုင်းငယ်တွေ ခွဲတည်ဆောက်ခြင်း မှာ သင်ပါတယ်
- Local variable
- method ထဲမှာပဲ ရှိတဲ့ variable: method ဒါမှမဟုတ် block ထဲမှာ ကြေညာထားတဲ့ variable ပါ။ အဲဒီ block run နေစဉ်မှာပဲ ရှိပြီး သူ့ scope က ပိတ်တဲ့ brace မှာ ဆုံးတာမို့ တခြား method တွေက မမြင်ရပါဘူး။ Method တွေ ရေးပြီး program ကို အပိုင်းငယ်တွေ ခွဲတည်ဆောက်ခြင်း မှာ သင်ပါတယ်
- Infinite loop
- ဘယ်တော့မှ မရပ်တဲ့ loop: condition က ဘယ်တော့မှ false မဖြစ်တဲ့၊ ဒါမှမဟုတ် ရပ်ရမယ့် condition ဆီ မရွေ့တဲ့ loop ပါ၊ ဒါကြောင့် အဆုံးမရှိ run နေပါတယ်။ update statement ကျန်ခဲ့တာ ဒါမှမဟုတ် condition မှားတာကြောင့် အများအားဖြင့် ဖြစ်ပါတယ်။ ထပ်ခါထပ်ခါ လုပ်ခြင်း မှာ သင်ပါတယ်
- Debugging
- program ထဲက အမှားကို ရှာပြီး ပြင်ခြင်း: print statement၊ trace table နဲ့ breakpoint step-through လို စနစ်တကျ နည်းတွေ သုံးပြီး program ထဲက အမှားတွေကို ရှာဖွေ ပြင်ဆင်တာပါ။ Debugging နည်းလမ်းများ မှာ သင်ပါတယ်
- Breakpoint
- program ကို ခဏ ရပ်ခိုင်းတဲ့ အမှတ်အသား: debugger ထဲမှာ သတ်မှတ်ထားတဲ့ အမှတ်အသားပါ။ ရွေးထားတဲ့ စာကြောင်းမှာ program ကို ခဏ ရပ်ပေးတာမို့ variable တန်ဖိုးတွေကို စစ်ကြည့်ပြီး တစ်ကြောင်းချင်း ဆက် run ကြည့်နိုင်ပါတယ်။ Debugging နည်းလမ်းများ မှာ သင်ပါတယ်
Data structures (ဒေတာ သိမ်းဆည်းပုံများ)
- Array
- အရွယ်အစား ပုံသေ၊ အမျိုးအစားတူ ဒေတာစု: အရွယ်အစား ပုံသေဖြစ်ပြီး အမျိုးအစားတူ element တွေကို အစဉ်လိုက် သိမ်းထားတဲ့ collection ပါ။ index (0 ကနေ စတယ်) နဲ့ ယူသုံးပါတယ်။ တန်းတစ်တန်းတည်းမှာ စီထားတဲ့ ဒေတာအစုများ မှာ သင်ပါတယ်
- ArrayList
- ကြီးလာ၊ သေးသွားနိုင်တဲ့ list: အလိုအလျောက် ကြီးလာ၊ သေးသွားနိုင်တဲ့ dynamic list ပါ။ primitive တွေ မဟုတ်ဘဲ object တွေကို သိမ်းပြီး .get(i) နဲ့ .size() တို့နဲ့ ယူသုံးပါတယ်။ ကြီးလာ၊ သေးသွားနိုင်တဲ့ list မှာ သင်ပါတယ်
- Stack
- အပေါ်ကနေပဲ ထည့်၊ ထုတ်တဲ့ အထပ်: LIFO (Last In, First Out) data structure ပါ။ element တွေကို အပေါ်ဆုံးကနေပဲ ထည့် (push)၊ ထုတ် (pop) ပါတယ်။ အပေါ်ကနေပဲ ထည့်၊ ထုတ်တဲ့ အထပ်များ မှာ သင်ပါတယ်
- Queue
- အရင်ထည့်တာ အရင်ထွက်တဲ့ တန်း: FIFO (First In, First Out) data structure ပါ။ element တွေကို အနောက်ဘက်ကနေ ထည့် (enqueue) ပြီး ရှေ့ဘက်ကနေ ထုတ် (dequeue) ပါတယ်။ အရင်ထည့်တာ အရင်ထွက်တဲ့ တန်းများ မှာ သင်ပါတယ်
- LIFO
- နောက်ဆုံးဝင်တာ အရင်ထွက်: Last In, First Out ပါ။ stack တွေ သုံးတဲ့ ယူသုံးပုံ အစီအစဉ်ပါ။ နောက်ဆုံးမှ ထည့်ခဲ့တဲ့ item က အရင်ဆုံး ထွက်ပါတယ်။ အပေါ်ကနေပဲ ထည့်၊ ထုတ်တဲ့ အထပ်များ မှာ သင်ပါတယ်
- FIFO
- အရင်ဝင်တာ အရင်ထွက်: First In, First Out ပါ။ queue တွေ သုံးတဲ့ ယူသုံးပုံ အစီအစဉ်ပါ။ အရင်ဆုံး ထည့်ခဲ့တဲ့ item က အရင်ဆုံး ထွက်ပါတယ်။ အရင်ထည့်တာ အရင်ထွက်တဲ့ တန်းများ မှာ သင်ပါတယ်
- Static data structure
- အရွယ်အစား ပုံသေ data structure: ဖန်တီးချိန်မှာ အရွယ်အစား ပုံသေ သတ်မှတ်တဲ့ structure ပါ၊ array လိုပါပဲ: memory ကို တစ်ကြိမ်တည်း ခွဲပေးပြီး ယူသုံးတာ မြန်ပေမဲ့ ကြီးလာလို့ မရဘဲ မသုံးတဲ့ နေရာတွေက memory ကို ဖြုန်းပါတယ်။ ကြီးလာ၊ သေးသွားနိုင်တဲ့ list မှာ သင်ပါတယ်
- Dynamic data structure
- ကြီးလာ၊ သေးသွားနိုင်တဲ့ data structure: run နေစဉ် ကြီးလာ၊ သေးသွားနိုင်တဲ့ structure ပါ၊ ArrayList ဒါမှမဟုတ် linked list လိုပါပဲ: အရွယ်အစား ကန့်သတ်ချက်ကို ကြိုမကြေညာရပေမဲ့ အရွယ်ပြန်ပြင်ရတဲ့ အလုပ် ဒါမှမဟုတ် node တစ်ခုချင်းရဲ့ overhead ကို ပေးရပါတယ်။ ကြီးလာ၊ သေးသွားနိုင်တဲ့ list မှာ သင်ပါတယ်
- 2D array
- row နဲ့ column ပါတဲ့ ဇယားကွက် array: ဇယားကွက်ပုံ ဖြစ်နေတဲ့ array တွေရဲ့ array ပါ၊ grid[row][column] လို index နှစ်ခုနဲ့ ယူသုံးပါတယ်။ ဇယား၊ game board နဲ့ ပုံတွေအတွက် သုံးပြီး nested loop တွေနဲ့ traverse လုပ်ပါတယ်။ row နဲ့ column ပါတဲ့ ဇယားကွက် array များ မှာ သင်ပါတယ်
- Wrapper class
- primitive type ရဲ့ object ပုံစံ: primitive type ရဲ့ object ပုံစံပါ (int က Integer ဖြစ်၊ double က Double ဖြစ်)၊ ဒါမှ primitive တန်ဖိုးတွေကို ArrayList လို collection တွေထဲ သိမ်းနိုင်ပါတယ်။ Java က အလိုအလျောက် box နဲ့ unbox လုပ်ပေးပါတယ်။ ကြီးလာ၊ သေးသွားနိုင်တဲ့ list မှာ သင်ပါတယ်
Algorithms (အယ်လ်ဂိုရီသမ်များ)
- Linear search
- တစ်ခုချင်း ဆက်တိုက် ရှာနည်း: element တွေကို အစကနေ အဆုံးထိ တစ်ခုပြီးတစ်ခု စစ်ပြီး ရှာတာပါ။ မစီထားတဲ့ ဒေတာမှာ သုံးလို့ရပါတယ်။ time complexity က O(n) ပါ။ ရှာဖွေရေး အယ်လ်ဂိုရီသမ်များ မှာ သင်ပါတယ်
- Binary search
- တစ်ဝက်စီ ခွဲပြီး ရှာနည်း: စီထားပြီးသား collection ထဲမှာ ရှာရမယ့် နေရာကို တစ်ဝက်စီ ထပ်ခါထပ်ခါ ဖြတ်ပြီး ရှာတာပါ။ time complexity က O(log n) ပါ။ ရှာဖွေရေး အယ်လ်ဂိုရီသမ်များ မှာ သင်ပါတယ်
- Bubble sort
- ဘေးချင်းကပ် တန်ဖိုးတွေကို လဲပြီး စီခြင်း: ဘေးချင်းကပ် element နှစ်ခု အစဉ်မှားနေရင် ထပ်ခါထပ်ခါ နေရာလဲပေးတဲ့ sorting algorithm ပါ။ time complexity က O(n^2) ပါ။ ဒေတာကို အစဉ်လိုက် စီတဲ့ အယ်လ်ဂိုရီသမ်များ မှာ သင်ပါတယ်
- Selection sort
- အငယ်ဆုံးကို ရှာပြီး နေရာချ စီခြင်း: အငယ်ဆုံး element ကို ရှာပြီး မှန်ကန်တဲ့ နေရာထဲ လဲထည့်ပေးတဲ့ sorting algorithm ပါ၊ list ကို တစ်ပတ် ဖြတ်သွားတိုင်း (pass တစ်ခါစီမှာ) element တစ်ခု နေရာကျပါတယ်။ O(n^2) ပါ။ ဒေတာကို အစဉ်လိုက် စီတဲ့ အယ်လ်ဂိုရီသမ်များ မှာ သင်ပါတယ်
- Big-O notation
- algorithm ရဲ့ ကြာချိန် တိုးနှုန်းကို ပြတဲ့ သင်္ကေတ: input ကြီးလာတာနဲ့အမျှ algorithm တစ်ခု ဘယ်လောက် နှေးလာလဲဆိုတာ ဖော်ပြတဲ့ နည်းပါ။ O(n) = input နှစ်ဆဆိုရင် အချိန် နှစ်ဆ။ O(n^2) = input နှစ်ဆဆိုရင် အချိန် လေးဆ။ algorithm ရဲ့ ကြာချိန် တိုးနှုန်းကို ပြတဲ့ သင်္ကေတ မှာ သင်ပါတယ်
- Recursion
- method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း: method တစ်ခုက ပြဿနာကို ပုံစံတူ ပြဿနာငယ်တွေအဖြစ် ခွဲပြီး ဖြေရှင်းဖို့ သူ့ကိုယ်သူ ပြန်ခေါ်တာပါ။ ရပ်ဖို့အတွက် base case တစ်ခု ရှိရပါတယ်။ Method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း မှာ သင်ပါတယ်
- Quicksort
- pivot နဲ့ ခွဲပြီး မြန်မြန် စီတဲ့ နည်း: pivot တန်ဖိုးတစ်ခုကို ရွေးပြီး list ကို ငယ်တဲ့ဘက်၊ ကြီးတဲ့ဘက် နှစ်ပိုင်း ခွဲကာ recursive နည်းနဲ့ ထပ်လုပ်တဲ့ မြန်တဲ့ sorting algorithm ပါ။ ပျမ်းမျှအားဖြင့် bubble sort ထက် အများကြီး ပိုမြန်ပါတယ်။ pivot နဲ့ ခွဲပြီး မြန်မြန် စီတဲ့ နည်း မှာ သင်ပါတယ်
- Base case
- recursion ကို ရပ်စေတဲ့ condition: recursive method ထဲမှာ နောက်ထပ် recursive call မလုပ်တော့ဘဲ တန်ဖိုးကို တိုက်ရိုက် return ပြန်ပြီး recursion ကို ရပ်စေတဲ့ condition ပါ။ Method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း မှာ သင်ပါတယ်
- Time complexity
- input ကြီးလာရင် ကြာချိန် တိုးပုံ: input size n ကြီးလာတာနဲ့အမျှ algorithm ရဲ့ run ချိန် ဘယ်လို တိုးလာလဲဆိုတာပါ၊ O(1), O(log n), O(n), O(n^2) လို Big-O notation နဲ့ ဖော်ပြပါတယ်။ စက္ကန့် မဟုတ်ဘဲ အဆင့်တွေကို ရေတွက်တာမို့ hardware နဲ့ မဆိုင်ပါဘူး။ algorithm ရဲ့ ကြာချိန် တိုးနှုန်းကို ပြတဲ့ သင်္ကေတ မှာ သင်ပါတယ်
- Space complexity
- input ကြီးလာရင် memory လိုအပ်ချက် တိုးပုံ: input ကြီးလာတာနဲ့အမျှ algorithm တစ်ခုက memory အပို ဘယ်လောက် လိုလဲဆိုတာပါ။ in-place sort က O(1) space ဖြစ်ပြီး recursion က O(depth) stack space ကို သုံးပါတယ်။ algorithm ရဲ့ ကြာချိန် တိုးနှုန်းကို ပြတဲ့ သင်္ကေတ မှာ သင်ပါတယ်
- Recursive case
- သူ့ကိုယ်သူ ပြန်ခေါ်တဲ့ အပိုင်း: recursive method ထဲက ပြဿနာရဲ့ ပိုသေးတဲ့ version နဲ့ သူ့ကိုယ်သူ ပြန်ခေါ်ပြီး base case ဆီ ရွေ့သွားစေတဲ့ အပိုင်းပါ။ Method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း မှာ သင်ပါတယ်
- Call stack
- လက်ရှိ method ခေါ်မှုတွေကို သိမ်းတဲ့ stack: လက်ရှိ run နေတဲ့ method call တစ်ခုချင်းရဲ့ local variable တွေနဲ့ return point ကို သိမ်းထားတဲ့ frame တွေရဲ့ stack ပါ။ call တိုင်းက frame တစ်ခု push လုပ်ပြီး return တိုင်းက frame တစ်ခု pop လုပ်တာမို့ မရပ်တဲ့ recursion က သူ့ကို overflow ဖြစ်စေပါတယ်။ Method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း မှာ သင်ပါတယ်
File processing (file တွေကို ဖတ်ခြင်းနဲ့ ရေးခြင်း)
- CSV
- comma နဲ့ ခြားထားတဲ့ စာသား file: Comma-Separated Values ပါ။ စာကြောင်း တစ်ကြောင်းစီက record တစ်ခုဖြစ်ပြီး field တွေကို comma တွေနဲ့ ခြားထားတဲ့ plain text file ပုံစံပါ။ File ထဲက ဒေတာကို ဖတ်ခြင်း မှာ သင်ပါတယ်
- BufferedReader
- file ကို ထိရောက်စွာ ဖတ်တဲ့ Java class: buffer သုံးပြီး file ထဲက စာသားကို ထိထိရောက်ရောက် ဖတ်ပေးတဲ့ Java class ပါ။ readLine() ကို သုံးပြီး file အဆုံး (end-of-file) ရောက်ရင် null ပြန်ပေးပါတယ်။ File ထဲက ဒေတာကို ဖတ်ခြင်း မှာ သင်ပါတယ်
- FileWriter
- file ထဲ စာရေးတဲ့ Java class: file ထဲကို စာသား ရေးပေးတဲ့ Java class ပါ။ default mode က ရှိပြီးသား စာတွေကို overwrite လုပ်ပါတယ်၊ append mode အတွက် ဒုတိယ argument အဖြစ် true ကို ပေးပါ။ File ထဲကို ဒေတာ ရေးခြင်း မှာ သင်ပါတယ်
- BufferedWriter
- file ထဲ ထိရောက်စွာ ရေးတဲ့ Java class: စာသား output ကို ထိရောက်အောင် buffer လုပ်ပေးပြီး newLine() ကို ထပ်ပေးတဲ့ Java class ပါ။ FileWriter ကို အုပ်ထားပြီး buffer ထဲက ဒေတာ disk ပေါ် ရောက်အောင် close လုပ်ရပါမယ် (ဒါမှမဟုတ် try-with-resources ထဲမှာ သုံးရပါမယ်)။ File ထဲကို ဒေတာ ရေးခြင်း မှာ သင်ပါတယ်
- Append mode
- ရှိပြီးသား file ရဲ့ နောက်မှာ ဆက်ရေးတဲ့ mode: ရှိပြီးသား စာတွေကို အစားမထိုးဘဲ နောက်မှာ ဒေတာ အသစ် ဆက်ထည့်အောင် file ကို ရေးဖို့ ဖွင့်တာပါ: Java မှာ new FileWriter(path, true)၊ Python မှာ mode 'a'။ File ထဲကို ဒေတာ ရေးခြင်း မှာ သင်ပါတယ်
- Try-with-resources
- file ကို အလိုအလျောက် ပိတ်ပေးတဲ့ try ပုံစံ: try (...) ထဲမှာ file object ကို ကြေညာတာပါ၊ ဒါမှ block ပြီးသွားတဲ့အခါ exception ဖြစ်ခဲ့ရင်တောင် Java က အလိုအလျောက် ပိတ်ပေးပါတယ်။ finally block ထဲမှာ close() ကို ကိုယ်တိုင် ခေါ်ရတာကို အစားထိုးပါတယ်။ File ထဲက ဒေတာကို ဖတ်ခြင်း မှာ သင်ပါတယ်
Object-oriented programming (object တွေကို အခြေခံပြီး program ရေးနည်း)
- Class
- object တွေ ဖန်တီးဖို့ ပုံစံခွက်: အဲဒီ အမျိုးအစား object အားလုံးမှာ ရှိတဲ့ attribute (ဒေတာ) တွေနဲ့ method (လုပ်ဆောင်ပုံ) တွေကို သတ်မှတ်ပေးတဲ့ blueprint ဒါမှမဟုတ် template ပါ။ Class နဲ့ object များ မှာ သင်ပါတယ်
- Object
- class တစ်ခုကနေ ဖန်တီးထားတဲ့ instance: new keyword နဲ့ ဖန်တီးထားပြီး ကိုယ်ပိုင် attribute တန်ဖိုးတွေ ရှိတဲ့ class တစ်ခုရဲ့ သီးခြား instance တစ်ခုပါ။ Class နဲ့ object များ မှာ သင်ပါတယ်
- Instantiation
- class ကနေ object အသစ် ဖန်တီးခြင်း: new keyword ကို သုံးပြီး class တစ်ခုကနေ object အသစ် ဖန်တီးတာပါ။ ဥပမာ: Student s = new Student("Alice", 90); Class နဲ့ object များ မှာ သင်ပါတယ်
- Constructor
- object ဖန်တီးချိန် attribute တွေကို စတင် သတ်မှတ်ပေးတဲ့ method: object ဖန်တီးတဲ့အခါ attribute တွေကို စတင် တန်ဖိုးသတ်မှတ်ဖို့ အလိုအလျောက် ခေါ်တဲ့ အထူး method ပါ (class နာမည်နဲ့ တူပြီး return type မရှိပါ)။ Object ဖန်တီးချိန် attribute တွေကို စတင် သတ်မှတ်ပေးတဲ့ method များ မှာ သင်ပါတယ်
- Encapsulation
- ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း: ဒေတာနဲ့ method တွေကို unit တစ်ခုတည်းထဲ စုထုပ်ပြီး attribute တွေကို private လုပ်ကာ public getter/setter တွေ ပေးခြင်းဖြင့် တိုက်ရိုက် ဝင်သုံးခွင့်ကို ကန့်သတ်တာပါ။ ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း မှာ သင်ပါတယ်
- Inheritance
- parent class ကနေ အမွေဆက်ခံခြင်း: child class (subclass) တစ်ခုက parent class (superclass) ရဲ့ attribute နဲ့ method တွေကို ပြန်သုံးတဲ့ နည်းလမ်းပါ။ is-a ဆက်နွယ်မှုကို ဖော်ပြပါတယ်။ Parent class ကနေ အမွေဆက်ခံခြင်း မှာ သင်ပါတယ်
- Polymorphism
- ပုံစံ အမျိုးမျိုး ယူနိုင်ခြင်း: parent type variable တစ်ခုက child type object အမျိုးမျိုးကို ကိုင်ထားနိုင်ပြီး Java က တကယ့် object ပေါ် မူတည်ကာ override လုပ်ထားတဲ့ method ရဲ့ မှန်ကန်တဲ့ version ကို အလိုအလျောက် ခေါ်ပေးပါတယ်။ ပုံစံ အမျိုးမျိုး ယူနိုင်ခြင်း မှာ သင်ပါတယ်
- Method overriding
- parent ရဲ့ method ကို child က အစားထိုး ရေးခြင်း: child class က parent ကနေ အမွေရထားတဲ့ method ကို ကိုယ်ပိုင် implementation နဲ့ ပြန်ရေးပြီး child object တွေအတွက် parent version ကို အစားထိုးတာပါ။ Parent ရဲ့ method ကို child က အစားထိုး ရေးခြင်း မှာ သင်ပါတယ်
- Abstract class
- object တိုက်ရိုက် မဖန်တီးနိုင်တဲ့ class: abstract keyword နဲ့ ကြေညာထားတဲ့ class ပါ။ instantiate လုပ်လို့ မရပါဘူး၊ subclass တွေ implement လုပ်ရမယ့် abstract method တွေ ပါနိုင်ပါတယ်။ Object တိုက်ရိုက် မဖန်တီးနိုင်တဲ့ class များ မှာ သင်ပါတယ်
- Interface
- class တစ်ခု implement လုပ်ရမယ့် method စာရင်း: class တစ်ခု implement လုပ်ရမယ့် method တွေကို သတ်မှတ်ထားတဲ့ စာချုပ်ပါ၊ method body တွေ မပါပါဘူး။ class တစ်ခုက interface အများကြီးကို implement လုပ်နိုင်ပါတယ်။ Class တစ်ခု implement လုပ်ရမယ့် method စာရင်းများ မှာ သင်ပါတယ်
- Aggregation
- သီးခြား ရှိနေနိုင်တဲ့ has-a ဆက်နွယ်မှု: object တစ်ခုထဲမှာ နောက် object တစ်ခု ပါဝင်ပေမဲ့ ပါဝင်နေတဲ့ object က သူ့ဘာသာ ရှိနေနိုင်တဲ့ has-a ဆက်နွယ်မှုပါ။ ဥပမာ: Kennel မှာ Dog ရှိပေမဲ့ Dog က Kennel မရှိဘဲ ရှိနေနိုင်ပါတယ်။ သီးခြား ရှိနေနိုင်တဲ့ has-a ဆက်နွယ်မှု မှာ သင်ပါတယ်
- Composition
- ပိုခိုင်မာတဲ့ has-a ဆက်နွယ်မှု: ပိုခိုင်မာတဲ့ has-a ဆက်နွယ်မှုပါ: တစ်ခုလုံးက သူ့ အစိတ်အပိုင်းတွေကို ကိုယ်တိုင် ဖန်တီးပြီး သူတစ်ခုတည်းကပဲ ကိုင်ထားတာမို့ အစိတ်အပိုင်းတွေက တစ်ခုလုံး ရှိနေသရွေ့ပဲ ရှိပါတယ်။ ဥပမာ: game Board က သူ့ Square တွေကို ကိုယ်တိုင် ဖန်တီးပြီး board မရှိတော့ရင် Square တွေလည်း မရှိတော့ပါဘူး။ Composition နဲ့ inheritance နှိုင်းယှဉ်ချက် မှာ သင်ပါတယ်
- Getter
- private attribute ရဲ့ တန်ဖိုးကို ပြန်ပေးတဲ့ method: private attribute တစ်ခုရဲ့ တန်ဖိုးကို မပြောင်းဘဲ ပြန်ပေးတဲ့ public method ပါ (accessor method)။ ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း မှာ သင်ပါတယ်
- Setter
- private attribute ရဲ့ တန်ဖိုးကို ပြောင်းတဲ့ method: private attribute တစ်ခုကို ပြောင်းလဲပေးတဲ့ public method ပါ။ တန်ဖိုးအသစ် မှန်ကန်ကြောင်း သေချာစေဖို့ validation ကို မကြာခဏ ထည့်ပါတယ် (mutator method)။ ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း မှာ သင်ပါတယ်
- Static method
- class ကိုယ်တိုင် ပိုင်တဲ့ method: instance တစ်ခုခု မဟုတ်ဘဲ class ကိုယ်တိုင် ပိုင်တဲ့ method ပါ။ instance variable တွေကို ဝင်သုံးလို့ မရသလို this ကိုလည်း သုံးလို့ မရပါဘူး။ Class ကိုယ်တိုင် ပိုင်တဲ့ member များ မှာ သင်ပါတယ်
- UML class diagram
- class တစ်ခုကို အကွက် သုံးကွက်နဲ့ ပြတဲ့ ပုံ: class ရဲ့ နာမည်၊ attribute တွေ (type နဲ့ visibility ပါ) နဲ့ method တွေကို ပြတဲ့ စံသတ်မှတ်ထားတဲ့ အပိုင်း သုံးပိုင်းပါ ပုံပါ။ Class တစ်ခုကို အကွက် သုံးကွက်နဲ့ ပြတဲ့ ပုံများ မှာ သင်ပါတယ်
- Access modifier
- ဘယ်ကနေ သုံးခွင့်ရလဲ သတ်မှတ်တဲ့ keyword: class member တစ်ခုကို ဘယ်ကနေ ဝင်သုံးလို့ရလဲ သတ်မှတ်ပေးတဲ့ keyword ပါ (private, default, protected, public)။ private ဆိုရင် ဒီ class ထဲမှာပဲ၊ public ဆိုရင် ဘယ်နေရာကမဆို သုံးလို့ရပါတယ်: encapsulation ကို လိုက်နာစေတဲ့ နည်းလမ်းပါ။ ဘယ်ကနေ သုံးခွင့်ရလဲ သတ်မှတ်တဲ့ keyword များ မှာ သင်ပါတယ်
- Information hiding
- object ရဲ့ အတွင်း ဒေတာကို ဖုံးထားခြင်း: object ရဲ့ အတွင်းပိုင်း ဒေတာကို private ထားပြီး public method တွေကနေပဲ ဖတ်၊ ပြောင်းလို့ရအောင် လုပ်တာပါ။ ခေါ်သုံးသူတွေက implementation ကို မဟုတ်ဘဲ interface ကိုပဲ မှီခိုတာမို့ object state ရဲ့ မှန်ကန်မှုကို ကာကွယ်ပေးပါတယ်။ ဒေတာနဲ့ method ကို တစ်စုတည်း ထုပ်ပိုးခြင်း မှာ သင်ပါတယ်
- Instance variable
- object တစ်ခုချင်းရဲ့ ကိုယ်ပိုင် variable: class ထဲမှာ ကြေညာထားတဲ့ non-static variable ပါ: object တိုင်းမှာ ကိုယ်ပိုင် copy တစ်ခုစီ ရှိပြီး အဲဒီ object ရဲ့ state ကို ကိုင်ထားပါတယ်။ attribute ဒါမှမဟုတ် field လို့လည်း ခေါ်ပါတယ်။ Class ကိုယ်တိုင် ပိုင်တဲ့ member များ မှာ သင်ပါတယ်
- Static variable
- class တစ်ခုလုံး မျှသုံးတဲ့ variable: static လို့ ကြေညာထားပြီး class ကိုယ်တိုင် ပိုင်တဲ့ variable ပါ: object ဘယ်နှခု ဖန်တီးဖန်တီး မျှသုံးတဲ့ copy တစ်ခုတည်းပဲ ရှိပါတယ်။ counter တွေနဲ့ မျှသုံးတဲ့ constant တွေအတွက် သုံးပြီး class variable လို့လည်း ခေါ်ပါတယ်။ Class ကိုယ်တိုင် ပိုင်တဲ့ member များ မှာ သင်ပါတယ်
- Superclass
- အမွေပေးတဲ့ parent class: inheritance မှာ parent class ပါ: သူ့ attribute နဲ့ method တွေက သူ့ကို extend လုပ်တဲ့ class တွေဆီ အမွေဆက်ပါတယ်။ parent class ဒါမှမဟုတ် base class လို့လည်း ခေါ်ပါတယ်။ Parent class ကနေ အမွေဆက်ခံခြင်း မှာ သင်ပါတယ်
- Subclass
- အမွေဆက်ခံတဲ့ child class: superclass ကို extend လုပ်တဲ့ child class ပါ၊ ဝင်သုံးခွင့်ရှိတဲ့ member တွေကို အမွေဆက်ခံပြီး လုပ်ဆောင်ပုံ အသစ် ထပ်ထည့်တာ ဒါမှမဟုတ် override လုပ်တာ လုပ်ပါတယ်။ is-a ဆက်နွယ်မှုကို ဖော်ပြပါတယ်: subclass object တိုင်းက superclass object တစ်ခုလည်း ဖြစ်ပါတယ်။ Parent class ကနေ အမွေဆက်ခံခြင်း မှာ သင်ပါတယ်
- Overloading
- နာမည်တူပြီး parameter မတူတဲ့ method များ: class တစ်ခုတည်းထဲမှာ နာမည်တူပေမဲ့ parameter list မတူတဲ့ method (ဒါမှမဟုတ် constructor) အများကြီး သတ်မှတ်တာပါ။ compiler က compile time မှာ ကိုက်ညီတဲ့ version ကို ရွေးပါတယ် (static polymorphism)။ overriding နဲ့ ယှဉ်ကြည့်ပါ၊ overriding မှာ subclass က အမွေရထားတဲ့ method ကို signature တူတူနဲ့ အစားထိုးပါတယ်။ Parent ရဲ့ method ကို child က အစားထိုး ရေးခြင်း မှာ သင်ပါတယ်
- Design pattern
- ထပ်ကြုံရတဲ့ ဒီဇိုင်း ပြဿနာအတွက် ဖြေရှင်းပုံစံ: ထပ်ခါထပ်ခါ ကြုံရတဲ့ ဒီဇိုင်း ပြဿနာ တစ်ခုအတွက် နာမည်ပေးထားပြီး ပြန်သုံးလို့ရတဲ့ ဖြေရှင်းနည်း template ပါ၊ ဥပမာ singleton, factory ဒါမှမဟုတ် observer။ pattern က အသင့်သုံး code ကို မဟုတ်ဘဲ ရည်ရွယ်ချက်နဲ့ ဖွဲ့စည်းပုံကို ပြောပြပါတယ်။ OOP ဝေါဟာရ ကိုးကားစာရင်း မှာ သင်ပါတယ်
- Singleton
- instance တစ်ခုတည်းပဲ ရှိတဲ့ class ပုံစံ: class တစ်ခုမှာ instance တစ်ခုတည်းပဲ ရှိအောင် သေချာစေပြီး အဲဒါကို ဘယ်ကမဆို ယူသုံးလို့ရတဲ့ နေရာ တစ်ခု ပေးတဲ့ design pattern ပါ (private constructor နဲ့ static getInstance() method)။ settings ဒါမှမဟုတ် database connection လို မျှသုံးရတဲ့ resource တွေအတွက် သုံးပါတယ်။ OOP ဝေါဟာရ ကိုးကားစာရင်း မှာ သင်ပါတယ်
- Factory pattern
- ဘယ် object ဖန်တီးမလဲ ဆုံးဖြတ်ပေးတဲ့ ပုံစံ: ဖန်တီးပေးတဲ့ method တစ်ခုက ဘယ် concrete subclass ကို instantiate လုပ်မလဲ ဆုံးဖြတ်ပြီး parent type အဖြစ် ပြန်ပေးတဲ့ design pattern ပါ။ object ဖန်တီးတဲ့ logic ကို နေရာ တစ်ခုတည်းမှာ စုပြီး ခေါ်သုံးသူဆီကနေ ဖုံးထားပါတယ်။ OOP ဝေါဟာရ ကိုးကားစာရင်း မှာ သင်ပါတယ်
- Observer pattern
- state ပြောင်းရင် အလိုအလျောက် အသိပေးတဲ့ ပုံစံ: one-to-many မှီခိုမှုကို သတ်မှတ်တဲ့ design pattern ပါ: observer တွေက subject တစ်ခုမှာ စာရင်းသွင်းထားပြီး subject ရဲ့ state ပြောင်းတဲ့အခါ အလိုအလျောက် အသိပေးခံရပါတယ်။ event ဖြစ်စေတဲ့ နေရာနဲ့ တုံ့ပြန်တဲ့ object တွေကို ခွဲထားပေးပြီး GUI တွေမှာ အသုံးများပါတယ်။ OOP ဝေါဟာရ ကိုးကားစာရင်း မှာ သင်ပါတယ်
Abstract data types (operation တွေနဲ့ သတ်မှတ်တဲ့ ဒေတာ အမျိုးအစားများ)
- Abstract data type
- operation တွေနဲ့ သတ်မှတ်တဲ့ ဒေတာ အမျိုးအစား: data structure တစ်ခုရဲ့ အဆင့်မြင့် ဖော်ပြချက်ပါ: implementation နဲ့ မဆိုင်ဘဲ ဘယ် operation တွေ ပေးလဲ၊ ဘယ်လို အလုပ်လုပ်လဲ ဆိုတာပါ။ stack ကို array ပေါ်မှာ ဆောက်ဆောက်၊ linked list ပေါ်မှာ ဆောက်ဆောက် push, pop, peek ပါပဲ။ ADT ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Linked list
- node တွေ ချိတ်ဆက်ထားတဲ့ list: node တွေနဲ့ ဖွဲ့ထားတဲ့ dynamic structure ပါ၊ node တစ်ခုစီမှာ ဒေတာနဲ့ နောက် node ကို ညွှန်းတဲ့ reference ပါပါတယ်။ node တစ်ခုချင်း ကြီးလာပြီး ထည့်တာ၊ ဖျက်တာ မြန်ပေမဲ့ အစဉ်လိုက်ပဲ ယူသုံးနိုင်ပါတယ် (indexing မရှိ)။ Node တွေ ချိတ်ဆက်ထားတဲ့ list များ မှာ သင်ပါတယ်
- Binary search tree
- ဘယ်ဘက် ငယ်၊ ညာဘက် ကြီးတဲ့ binary tree: node တိုင်းရဲ့ ဘယ်ဘက် subtree မှာ ပိုငယ်တဲ့ တန်ဖိုးတွေ၊ ညာဘက် subtree မှာ ပိုကြီးတဲ့ တန်ဖိုးတွေ ရှိတဲ့ binary tree ပါ။ ဒီ အစီအစဉ်ကြောင့် tree က balanced ဖြစ်နေသရွေ့ search, insert, delete တွေက O(log n) ဖြစ်ပါတယ်။ ဘယ်ဘက် ငယ်၊ ညာဘက် ကြီးတဲ့ binary tree များ မှာ သင်ပါတယ်
- In-order traversal
- ဘယ်၊ node၊ ညာ အစဉ်နဲ့ node တွေကို သွားကြည့်ခြင်း: binary search tree ရဲ့ node တွေကို ဘယ်ဘက် subtree၊ ပြီးရင် node၊ ပြီးရင် ညာဘက် subtree အစဉ်နဲ့ သွားကြည့်တာပါ၊ ဒါက တန်ဖိုးတွေကို ငယ်စဉ်ကြီးလိုက် ထုတ်ပေးပါတယ်။ pre-order က node ကို အရင် သွားပြီး post-order က နောက်ဆုံးမှ သွားပါတယ်။ Binary search tree ပေါ်မှာ လုပ်တဲ့ operation များ မှာ သင်ပါတယ်
- Hash table
- key-value တွေကို အမြန် ရှာနိုင်အောင် သိမ်းတဲ့ structure: key-value pair တွေကို bucket တွေရဲ့ array ထဲမှာ သိမ်းတဲ့ structure ပါ: hash function က key တစ်ခုစီကို index အဖြစ် ပြောင်းပေးတာမို့ lookup, insert, delete တွေက ပျမ်းမျှ O(1) ဖြစ်ပါတယ်။ collision တွေကို chaining ဒါမှမဟုတ် probing နဲ့ ဖြေရှင်းပါတယ်။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
- Hash function
- key ကို bucket index အဖြစ် ပြောင်းတဲ့ function: key တစ်ခုကို bucket index အဖြစ် ပြောင်းပေးတဲ့ function ပါ၊ ဥပမာ hashCode() mod array ရဲ့ အရှည်။ ကောင်းတဲ့ hash function က မြန်တယ်၊ deterministic ဖြစ်တယ် (input တူရင် ရလဒ် အမြဲ တူ)၊ key တွေကို bucket တွေမှာ ညီညီညာညာ ဖြန့်ပေးပါတယ်။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
- Collision resolution
- key နှစ်ခု index တူသွားရင် ဖြေရှင်းပုံ: key နှစ်ခုက index တစ်ခုတည်းကို hash ဖြစ်တဲ့အခါ hash table က လုပ်ပုံပါ: chaining က bucket တစ်ခုစီမှာ list ငယ် တစ်ခု သိမ်းပြီး open addressing (probing) က နောက်ထပ် လွတ်နေတဲ့ slot ကို ရှာပါတယ်။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
- Load factor
- hash table ဘယ်လောက် ပြည့်နေလဲ ဆိုတာ: hash table ဘယ်လောက် ပြည့်နေလဲ ဆိုတာပါ: entry အရေအတွက်ကို bucket အရေအတွက်နဲ့ စားတာပါ။ threshold (Java မှာ 0.75) ကို ကျော်ရင် collision တွေ ရှားနေအောင် table က အရွယ်အစား ပြန်ချဲ့ပြီး rehash လုပ်ပါတယ်။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
- HashMap
- Java ရဲ့ key-value hash table: key-value pair တွေအတွက် Java ရဲ့ hash-table implementation ပါ: put(key, value), get(key), containsKey()။ key တွေ မထပ်ရပြီး operation တွေက ပျမ်းမျှ O(1) ပါ။ Python မှာ ညီမျှတာက dict ပါ။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
- HashSet
- မထပ်တဲ့ element တွေ သိမ်းတဲ့ Java collection: မထပ်တဲ့ element တွေကို သိမ်းတဲ့ Java ရဲ့ hash-based collection ပါ: add(), contains(), remove() အားလုံး ပျမ်းမျှ O(1) ဖြစ်ပြီး ထပ်နေတာတွေကို ဘာမှ မပြောဘဲ လျစ်လျူရှုပါတယ်။ Python မှာ ညီမျှတာက set ပါ။ Set နဲ့ HashMap များ မှာ သင်ပါတယ်
Operating systems (ကွန်ပျူတာကို စီမံတဲ့ အဓိက software)
- Operating system
- ကွန်ပျူတာကို စီမံတဲ့ အဓိက software: ကွန်ပျူတာရဲ့ hardware ကို စီမံပြီး application တွေကို run ခွင့်ပေးတဲ့ software ပါ။ memory၊ file၊ လုံခြုံရေးနဲ့ စက်ပစ္စည်းတွေနဲ့ ဆက်သွယ်မှုကို ကိုင်တွယ်ပါတယ်။ Operating system ရဲ့ အခြေခံများ မှာ သင်ပါတယ်
- Scheduling
- ဘယ် process ကို CPU အချိန် ပေးမလဲ ဆုံးဖြတ်ခြင်း: ဘယ် process က CPU အချိန် ရမလဲ၊ ဘယ်လောက်ကြာကြာ ရမလဲဆိုတာ FCFS၊ Round Robin ဒါမှမဟုတ် Priority လို algorithm တွေနဲ့ ဆုံးဖြတ်ပေးတဲ့ OS ရဲ့ လုပ်ဆောင်ချက်ပါ။ ဘယ် process ကို CPU အချိန် ပေးမလဲ ဆုံးဖြတ်ခြင်း မှာ သင်ပါတယ်
- Interrupt
- CPU ကို ခဏ ရပ်ခိုင်းတဲ့ signal: CPU ကို လက်ရှိ လုပ်နေတာ ရပ်ပြီး အရေးပေါ် ဖြစ်ရပ်တစ်ခုကို (ဥပမာ key နှိပ်တာ ဒါမှမဟုတ် mouse နှိပ်တာ) ကိုင်တွယ်ကာ မူလ အလုပ်ဆီ ပြန်သွားခိုင်းတဲ့ signal ပါ။ Polling နဲ့ interrupt မှာ သင်ပါတယ်
- Polling
- စက်တွေကို အလှည့်ကျ စစ်ကြည့်ခြင်း: CPU က စက်ပစ္စည်း တစ်ခုချင်းကို အလှည့်ကျ ထပ်ခါထပ်ခါ စစ်ပြီး ကိုင်တွယ်ပေးဖို့ လိုမလို ကြည့်တဲ့ နည်းပါ။ ရိုးရှင်းပေမဲ့ CPU cycle တွေကို ဖြုန်းပါတယ်။ Polling နဲ့ interrupt မှာ သင်ပါတယ်
- Deadlock
- အချင်းချင်း စောင့်ရင်း ပိတ်မိနေခြင်း: process နှစ်ခု ဒါမှမဟုတ် ပိုများတဲ့ process တွေထဲက တစ်ခုစီက တခြား process ကိုင်ထားတဲ့ resource ကို စောင့်နေရင်း အမြဲတမ်း ရပ်တန့်နေတဲ့ အခြေအနေပါ။ အလုပ် အများကို တစ်ပြိုင်နက်လို လုပ်ခြင်း မှာ သင်ပါတယ်
- Virtual memory
- RAM ပြည့်ရင် disk နေရာကို memory အဖြစ် ချေးသုံးခြင်း: RAM ပြည့်သွားတဲ့အခါ hard drive နေရာကို ပိုလျှံနေရာအဖြစ် သုံးတဲ့ memory စီမံခန့်ခွဲမှု နည်းပါ။ physical RAM ထက် ကြီးတဲ့ program တွေကို run နိုင်စေပါတယ်။ ပင်မ မှတ်ဉာဏ် မှာ သင်ပါတယ်
- Multitasking
- အလုပ် အများကို တစ်ပြိုင်နက်လို လုပ်ခြင်း: CPU ကို task တွေကြား အမြန် လှည့်ပြောင်းပေးခြင်းဖြင့် (time slicing) task အများကို တစ်ပြိုင်နက် run နေသလို ဖြစ်စေတာပါ။ နောက် ဘယ် task run မလဲဆိုတာ OS scheduler က ဆုံးဖြတ်ပြီး မျှသုံး resource တွေအတွက် လုယက်မှုကို စီမံပါတယ်။ အလုပ် အများကို တစ်ပြိုင်နက်လို လုပ်ခြင်း မှာ သင်ပါတယ်
- Context switching
- process တစ်ခုကနေ တစ်ခုကို CPU ပြောင်းခြင်း: run နေတဲ့ process ရဲ့ state (register တွေ၊ program counter) ကို သိမ်းပြီး နောက် process တစ်ခုရဲ့ state ကို load လုပ်တာပါ၊ ဒါမှ CPU က task တွေကြား ပြောင်းနိုင်ပါတယ်။ multitasking ကို ဖြစ်စေပေမဲ့ switch တစ်ခါစီက အသုံးဝင်တဲ့ အလုပ် ဘာမှ မလုပ်ဘဲ အချိန် ကုန်စေပါတယ်။ အလုပ် အများကို တစ်ပြိုင်နက်လို လုပ်ခြင်း မှာ သင်ပါတယ်
- Round robin
- အလှည့်ကျ အချိန်ပေးတဲ့ scheduling: process တစ်ခုစီကို ပုံသေ time slice (quantum) တစ်ခုစီ စက်ဝိုင်းပုံ အလှည့်ကျ ပေးတဲ့ preemptive scheduling algorithm ပါ။ interactive စနစ်တွေအတွက် တရားမျှတပြီး တုံ့ပြန်မှု မြန်ပေမဲ့ context switch ခဏခဏ ဖြစ်တာက overhead ကို တိုးစေပါတယ်။ ဘယ် process ကို CPU အချိန် ပေးမလဲ ဆုံးဖြတ်ခြင်း မှာ သင်ပါတယ်
- FCFS
- အရင်ရောက် အရင်ရ scheduling: First-Come, First-Served ပါ။ process တွေကို ရောက်လာတဲ့ အစဉ်အတိုင်း တိတိကျကျ run ပေးတဲ့ non-preemptive scheduling algorithm ပါ။ ရိုးရှင်းပြီး ရောက်ချိန်အလိုက် တရားမျှတပေမဲ့ အလုပ်တိုတွေက အလုပ်ရှည်တွေ နောက်မှာ စောင့်ရနိုင်ပါတယ် (convoy effect)။ ဘယ် process ကို CPU အချိန် ပေးမလဲ ဆုံးဖြတ်ခြင်း မှာ သင်ပါတယ်
Databases (ဒေတာ သိမ်းဆည်းတဲ့ စနစ်များ)
- Object-relational impedance mismatch
- OOP object တွေနဲ့ relational table တွေကြား မကိုက်ညီမှု: OOP code က ဒေတာကို ဖော်ပြပုံ (တိုက်ရိုက် reference၊ inheritance နဲ့ collection တွေ ပါတဲ့ object တွေ) နဲ့ relational database က အဲဒီ ဒေတာကိုပဲ သိမ်းပုံ (join လုပ်ထားတဲ့ table တွေမှာ ခွဲထားတဲ့ flat row တွေ) ကြားက ကွာခြားမှုကြောင့် ဖြစ်တဲ့ အခက်အခဲပါ။ နှစ်ခုကြား ပြောင်းဖို့ glue code (Hibernate လို ORM တွေ) လိုပြီး class design ဒါမှမဟုတ် schema မှာ မကြာခဏ အလျှော့အတင်း လုပ်ရပါတယ်။ Relational database ရဲ့ အခြေခံများ မှာ သင်ပါတယ်
- Referential integrity
- foreign key တွေ မှန်ကန်စွာ ချိတ်ထားရမယ့် စည်းမျဉ်း: foreign key တန်ဖိုးတိုင်းက ညွှန်းထားတဲ့ table ထဲမှာ ရှိပြီးသား primary key တန်ဖိုး တစ်ခုနဲ့ ကိုက်ညီရမယ်ဆိုတဲ့ စည်းမျဉ်းပါ။ ဘာကိုမှ မညွှန်းတဲ့ orphan row တွေ ဖြစ်စေမယ့် update ဒါမှမဟုတ် insert တွေကို DBMS က ငြင်းပယ်ပါတယ်။ ဒေတာ အမျိုးအစားများနဲ့ key များ မှာ သင်ပါတယ်
- Normalisation
- ဒေတာ ထပ်မနေအောင် table တွေကို စီစဉ်ခြင်း: အချက် တစ်ခုချင်းကို နေရာ တစ်ခုတည်းမှာပဲ သိမ်းဖြစ်အောင် column တွေကို table တွေထဲ စီစဉ်တဲ့ လုပ်ငန်းစဉ်ပါ။ 1NF, 2NF, 3NF အဆင့်တွေက atomicity ချိုးဖောက်မှု၊ partial-key dependency နဲ့ transitive dependency တွေကို အဆင့်ဆင့် ဖယ်ရှားပေးပါတယ်။ ဒေတာ ထပ်မနေအောင် table တွေကို စီစဉ်ခြင်း မှာ သင်ပါတယ်
- Denormalisation
- ဖတ်တာ မြန်အောင် ထပ်နေမှုကို တမင် ပြန်ထည့်ခြင်း: ဖတ်တာများတဲ့ query တွေ ပိုမြန်အောင် normalise လုပ်ထားတဲ့ schema ထဲကို redundancy ကို တမင် ပြန်ထည့်တာပါ။ ရေးတဲ့ ကုန်ကျစရိတ် ပိုများတာနဲ့ မကိုက်ညီမှု ဖြစ်နိုင်ခြေကို လက်ခံပြီး ဖတ်တဲ့ စွမ်းဆောင်ရည်ကို ရယူပါတယ်။ ဒေတာ ထပ်မနေအောင် table တွေကို စီစဉ်ခြင်း မှာ သင်ပါတယ်
- Primary key
- row တစ်ခုချင်းကို ခွဲခြားပေးတဲ့ key: table တစ်ခုထဲက row တစ်ခုချင်းကို မထပ်အောင် ခွဲခြားသိစေတဲ့ column (ဒါမှမဟုတ် column အနည်းငယ် အစု) ပါ။ null ဖြစ်လို့ မရသလို ထပ်နေလို့လည်း မရပါဘူး။ ဒေတာ အမျိုးအစားများနဲ့ key များ မှာ သင်ပါတယ်
- Foreign key
- တခြား table ရဲ့ primary key ကို ညွှန်းတဲ့ column: table တစ်ခုထဲက column တစ်ခုပါ၊ သူ့ တန်ဖိုးတွေက တခြား table ထဲက primary key တန်ဖိုး တစ်ခုနဲ့ ကိုက်ညီရပါတယ်။ relational model က table တွေကို ချိတ်ဆက်တဲ့ နည်းလမ်းပါ။ ဒေတာ အမျိုးအစားများနဲ့ key များ မှာ သင်ပါတယ်
- Composite key
- column အများ ပေါင်းထားတဲ့ primary key: column နှစ်ခု ဒါမှမဟုတ် ပိုများတဲ့ column တွေ ပေါင်းထားတဲ့ primary key ပါ။ column တစ်ခုတည်းက ကိုယ့်ဘာသာ မထပ်တဲ့ တန်ဖိုး မဖြစ်တဲ့အခါ သုံးပါတယ်။ ပေါင်းထားတဲ့ တွဲက မထပ်ရပေမဲ့ column တစ်ခုချင်းကတော့ ထပ်နေလို့ ရပါတယ်။ ဒေတာ အမျိုးအစားများနဲ့ key များ မှာ သင်ပါတယ်
- ERD
- entity တွေနဲ့ ဆက်နွယ်မှုတွေကို ပြတဲ့ ပုံ: Entity-Relationship Diagram ပါ။ database က မှတ်သားထားတဲ့ entity (table) တွေ၊ သူတို့ရဲ့ attribute တွေနဲ့ သူတို့ကြား ဆက်နွယ်မှုတွေကို cardinality (1:1, 1:M, M:M) နဲ့ modality (မဖြစ်မနေ ဒါမှမဟုတ် ရွေးချယ်နိုင်) အပါအဝင် ပုံနဲ့ ဖော်ပြတဲ့ နည်းပါ။ Entity တွေနဲ့ ဆက်နွယ်မှုတွေကို ပြတဲ့ ပုံများ မှာ သင်ပါတယ်
- Cardinality
- ဆက်နွယ်မှု တစ်ဖက်စီရဲ့ အများဆုံး အရေအတွက်: ဆက်နွယ်မှု တစ်ဖက်စီမှာ ရှိနိုင်တဲ့ instance အများဆုံး အရေအတွက်ပါ: one-to-one (1:1), one-to-many (1:M) ဒါမှမဟုတ် many-to-many (M:M)။ Entity တွေနဲ့ ဆက်နွယ်မှုတွေကို ပြတဲ့ ပုံများ မှာ သင်ပါတယ်
- Modality
- ဆက်နွယ်မှုမှာ မဖြစ်မနေ ပါရမလား ဆိုတာ: ဆက်နွယ်မှု တစ်ခုမှာ ပါဝင်ခြင်းက မဖြစ်မနေ (instance က ပါဝင်ရမယ်) လား၊ ရွေးချယ်နိုင် (link တစ်ခုမှ မရှိဘဲ နေနိုင်) လား ဆိုတာပါ။ cardinality နဲ့ ပေါင်းလိုက်ရင် ဆက်နွယ်မှု တစ်ခုရဲ့ ပုံကို အပြည့်အစုံ ရပါတယ်။ Entity တွေနဲ့ ဆက်နွယ်မှုတွေကို ပြတဲ့ ပုံများ မှာ သင်ပါတယ်
- DDL
- database ဖွဲ့စည်းပုံကို သတ်မှတ်တဲ့ SQL အပိုင်း: Data Definition Language ပါ။ database ရဲ့ ဖွဲ့စည်းပုံကို သတ်မှတ်ပေးတဲ့ SQL အပိုင်းပါ: CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX။ SQL query များ မှာ သင်ပါတယ်
- DML
- ဒေတာကို ဖတ်၊ ပြင်တဲ့ SQL အပိုင်း: Data Manipulation Language ပါ။ ဒေတာကို ဖတ်ပြီး ပြင်ဆင်ပေးတဲ့ SQL အပိုင်းပါ: SELECT, INSERT, UPDATE, DELETE။ SQL query များ မှာ သင်ပါတယ်
- ACID
- transaction တစ်ခုရဲ့ အာမခံချက် လေးခု: Atomicity, Consistency, Isolation, Durability ပါ။ database transaction တစ်ခုက ဘာတွေ အာမခံလဲဆိုတာ အတူတူ ဖော်ပြတဲ့ ဂုဏ်သတ္တိ လေးခုပါ: အကုန်ဖြစ် ဒါမှမဟုတ် ဘာမှမဖြစ်၊ မှန်ကန်တဲ့ အခြေအနေကနေ မှန်ကန်တဲ့ အခြေအနေကိုပဲ ပြောင်း၊ တစ်ပြိုင်နက် run နေတဲ့ transaction တွေကြား အနှောင့်အယှက် မရှိ၊ commit လုပ်ပြီးသား ပြောင်းလဲမှုတွေက စနစ် ချို့ယွင်းသွားရင်တောင် ကျန်ရှိနေ။ Transaction နဲ့ View များ (HL) မှာ သင်ပါတယ်
- OLAP
- ဒေတာကို ခွဲခြမ်းစိတ်ဖြာဖို့ online စနစ်: Online Analytical Processing ပါ။ data warehouse ထဲက multi-dimensional ဒေတာကို analyst တွေက slice, dice, drill down, pivot လုပ်နိုင်အောင် ပေးတဲ့ interactive aggregation layer ပါ။ OLTP (နေ့စဉ် ဖတ်၊ ရေးတဲ့ transaction အလုပ်) နဲ့ ကွဲပြားပါတယ်။ ခွဲခြမ်းစိတ်ဖြာဖို့ ယခင် ဒေတာ သိုလှောင်ရုံများ (HL) မှာ သင်ပါတယ်
- Relational database
- table တွေ ချိတ်ဆက်ထားတဲ့ database: row နဲ့ column တွေပါတဲ့ table (relation) တွေမှာ ဒေတာ သိမ်းပြီး primary key နဲ့ foreign key တွေနဲ့ table တွေကို ချိတ်ကာ integrity စည်းမျဉ်းတွေကို လိုက်နာစေတဲ့ database ပါ။ SQL နဲ့ query လုပ်ပါတယ်။ Relational database ရဲ့ အခြေခံများ မှာ သင်ပါတယ်
- Database schema
- database ဖွဲ့စည်းပုံ ဖော်ပြချက်: database ရဲ့ ဖွဲ့စည်းပုံကို အဆင့် သုံးဆင့်နဲ့ တရားဝင် ဖော်ပြထားတာပါ: conceptual (လုပ်ငန်းက ဘယ်ဒေတာ လိုလဲ)၊ logical (table, key, type တွေ) နဲ့ physical (storage နဲ့ index တွေ)။ Database ဖွဲ့စည်းပုံ ဖော်ပြချက်များ မှာ သင်ပါတယ်
- Functional dependency
- column တစ်ခုက နောက်တစ်ခုကို ဆုံးဖြတ်ခြင်း: column A ရဲ့ တန်ဖိုး တစ်ခုစီက column B ရဲ့ တန်ဖိုး တစ်ခုတည်းကို အတိအကျ ဆုံးဖြတ်ရင် B က A ပေါ် functionally dependent ဖြစ်ပါတယ် (A -> B လို့ ရေးတယ်)။ normalisation က ဒီ dependency တွေကို ခွဲခြမ်းစိတ်ဖြာပြီး ဘယ် column က ဘယ် table မှာ ရှိရမလဲ ဆုံးဖြတ်ပါတယ်။ ဒေတာ ထပ်မနေအောင် table တွေကို စီစဉ်ခြင်း မှာ သင်ပါတယ်
- Data warehouse
- ခွဲခြမ်းစိတ်ဖြာဖို့ ယခင် ဒေတာ သိုလှောင်ရုံ: operational system အများကနေ ပေါင်းစည်းထားတဲ့ ယခင် ဒေတာတွေကို နေ့စဉ် transaction တွေအတွက် မဟုတ်ဘဲ ခွဲခြမ်းစိတ်ဖြာဖို့ (OLAP) ဖွဲ့စည်းထားတဲ့ ဗဟို သိုလှောင်ရာပါ။ subject-oriented, integrated, time-variant နဲ့ non-volatile ဖြစ်ပါတယ်။ ခွဲခြမ်းစိတ်ဖြာဖို့ ယခင် ဒေတာ သိုလှောင်ရုံများ (HL) မှာ သင်ပါတယ်
- Data mining
- ဒေတာ အများကြီးထဲက ပုံစံတွေကို ရှာဖွေခြင်း: စီးပွားရေး ဆုံးဖြတ်ချက်တွေကို ထောက်ပံ့ဖို့ classification, clustering, association rule နဲ့ anomaly detection လို နည်းတွေ သုံးပြီး ဒေတာ အစု ကြီးကြီးတွေထဲက အရင်က မသိခဲ့တဲ့ ပုံစံတွေကို အလိုအလျောက် ရှာဖွေတာပါ။ ခွဲခြမ်းစိတ်ဖြာဖို့ ယခင် ဒေတာ သိုလှောင်ရုံများ (HL) မှာ သင်ပါတယ်
- OLTP
- နေ့စဉ် transaction လုပ်ငန်း: Online Transaction Processing ပါ။ နေ့စဉ် လုပ်ငန်း workload ပါ: normalise လုပ်ထားတဲ့ database ပေါ်မှာ သေးငယ်ပြီး မြန်တဲ့ ဖတ်၊ ရေး အများကြီး (order, booking)။ ယခင် ဒေတာပေါ်က OLAP ရဲ့ ကြီးမားတဲ့ analytical query တွေနဲ့ ယှဉ်ကြည့်ပါ။ ခွဲခြမ်းစိတ်ဖြာဖို့ ယခင် ဒေတာ သိုလှောင်ရုံများ (HL) မှာ သင်ပါတယ်
- NoSQL
- ပုံသေ table ပုံစံ မသုံးတဲ့ database: ပုံသေ schema ရှိတဲ့ relational model ကို မသုံးတဲ့ database တွေပါ (document, key-value, graph နဲ့ column store)။ horizontal scale လုပ်ဖို့နဲ့ ဖွဲ့စည်းပုံ မရှိတဲ့ ဒါမှမဟုတ် မြန်မြန် ပြောင်းနေတဲ့ ဒေတာကို ကိုင်တွယ်ဖို့ပါ၊ အများအားဖြင့် strict consistency ကို လျှော့ပြီး availability ကို ရယူပါတယ်။ အခြား database နည်းလမ်းများ (HL) မှာ သင်ပါတယ်
- Transaction
- အကုန်ဖြစ် ဒါမှမဟုတ် ဘာမှမဖြစ်တဲ့ database လုပ်ဆောင်ချက် အစု: unit တစ်ခုတည်းအဖြစ် အကုန်ဖြစ် ဒါမှမဟုတ် ဘာမှမဖြစ် လုပ်ဆောင်တဲ့ database operation အစဉ်ပါ၊ ငွေလွှဲမှုမှာ debit နဲ့ credit လိုပါပဲ။ COMMIT က အမြဲတမ်း ဖြစ်စေ၊ ROLLBACK က ပြန်ဖျက်ပြီး ACID properties တွေက integrity ကို အာမခံပါတယ်။ Transaction နဲ့ View များ (HL) မှာ သင်ပါတယ်
- Materialised view
- ရလဒ်ကို သိမ်းထားတဲ့ view: result set ကို snapshot အဖြစ် physical သိမ်းထားပြီး အချိန်အပိုင်းအခြားအလိုက် refresh လုပ်တဲ့ view ပါ။ query လုပ်ရတာ မြန်ပေမဲ့ query တိုင်းမှာ အသစ် တွက်တဲ့ virtual view နဲ့ မတူဘဲ ဒေတာ အဟောင်း ပြနိုင်ပါတယ်။ Transaction နဲ့ View များ (HL) မှာ သင်ပါတယ်
- Aggregate function
- row အများကနေ တန်ဖိုး တစ်ခု တွက်တဲ့ SQL function: row အများကြီးကနေ တန်ဖိုး တစ်ခု တွက်ပေးတဲ့ SQL function ပါ: COUNT, SUM, AVG, MAX, MIN။ row အုပ်စု တစ်ခုချင်းကို အကျဉ်းချုပ်ဖို့ GROUP BY နဲ့ တွဲသုံးပါတယ်။ SQL query များ မှာ သင်ပါတယ်
- Distributed database
- နေရာ အများမှာ ခွဲသိမ်းထားတဲ့ database: ဒေတာကို physical နေရာ အများမှာ ခွဲသိမ်းထားပေမဲ့ logical database တစ်ခုတည်း ဖြစ်တာပါ။ သူ့ feature တွေမှာ replication, data partitioning, concurrency control, data consistency, distribution and location transparency, fault tolerance, global query processing, data security နဲ့ scalability ပါဝင်ပါတယ်။ နေရာ အများမှာ ခွဲသိမ်းထားတဲ့ database များ (HL) မှာ သင်ပါတယ်
- Replication
- ဒေတာ copy တွေကို နေရာ အများမှာ ထားခြင်း: စနစ်က node ပျက်တာကို ခံနိုင်ပြီး ဖတ်တာကို local မှာ ဆောင်ရွက်နိုင်အောင် ဒေတာ copy တွေကို နေရာ အများမှာ ညီညွတ်အောင် ထားတာပါ။ ကုန်ကျစရိတ်က ရေးပြီးတိုင်း copy တိုင်းကို ကိုက်ညီအောင် ထားရတာပါ။ နေရာ အများမှာ ခွဲသိမ်းထားတဲ့ database များ (HL) မှာ သင်ပါတယ်
- Partitioning
- database ကို အပိုင်းတွေ ခွဲသိမ်းခြင်း: database ကို အပိုင်းတွေ ခွဲပြီး မတူတဲ့ နေရာတွေမှာ သိမ်းတာပါ၊ row အလိုက် (horizontal) ဒါမှမဟုတ် column အလိုက် (vertical) ခွဲတာမို့ နေရာ တစ်ခုစီက ဒေတာနဲ့ load ရဲ့ တစ်စိတ်တစ်ပိုင်းကို ကိုင်တွယ်ပါတယ်။ နေရာ အများမှာ ခွဲသိမ်းထားတဲ့ database များ (HL) မှာ သင်ပါတယ်
- Sharding
- row တွေကို server အများမှာ ခွဲသိမ်းခြင်း: horizontal partitioning ပါ: shard တစ်ခုစီက row အစုခွဲ တစ်ခုကို ကိုင်ထားတာမို့ (ဥပမာ customer A-M) database အကြီးကြီးကို server အများကြီးပေါ် scale လုပ်နိုင်ပါတယ်။ နေရာ အများမှာ ခွဲသိမ်းထားတဲ့ database များ (HL) မှာ သင်ပါတယ်
- Concurrency control
- transaction တွေ တစ်ပြိုင်နက် မှန်ကန်စွာ run အောင် ထိန်းခြင်း: transaction အများကြီး တစ်ပြိုင်နက် run နေရင်း ဒေတာ မပျက်စီးအောင် locking နဲ့ timestamp လို နည်းလမ်းတွေပါ: lost update နဲ့ dirty read တွေကို တားဆီးပြီး isolation ကို ထိန်းပေးပါတယ်။ Transaction နဲ့ View များ (HL) မှာ သင်ပါတယ်
Machine learning (ဒေတာကနေ သင်ယူတဲ့ စနစ်)
- Machine learning
- ဒေတာကနေ သင်ယူတဲ့ စနစ်: programmer က ကိုယ်တိုင် ရေးထားတဲ့ စည်းမျဉ်းတွေကို လိုက်မယ့်အစား ဒေတာကနေ ပုံစံတွေ သင်ယူပြီး အတွေ့အကြုံနဲ့အမျှ တိုးတက်လာတဲ့ စနစ်တွေ တည်ဆောက်တာပါ။ လုပ်ဆောင်ပုံက တိုက်ရိုက် program ရေးထားတာကနေ မဟုတ်ဘဲ ဥပမာတွေနဲ့ train လုပ်တာကနေ လာပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Training data
- model သင်ယူဖို့ ပေးတဲ့ ဒေတာ: train လုပ်စဉ် model က သင်ယူတဲ့ ဥပမာတွေပါ၊ supervised learning မှာ တစ်ခုစီကို အဖြေမှန်နဲ့ label တပ်ထားပါတယ်။ သူ့ရဲ့ အရည်အသွေးနဲ့ ဖုံးလွှမ်းမှုက model ရဲ့ အရည်အသွေးကိုရော bias တွေကိုပါ အများကြီး ဆုံးဖြတ်ပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Test data
- model ကို စမ်းစစ်ဖို့ ချန်ထားတဲ့ ဒေတာ: train မလုပ်ဘဲ ချန်ထားပြီး model က မမြင်ဖူးတဲ့ ဥပမာတွေမှာ ဘယ်လောက် ကောင်းကောင်း generalise လုပ်နိုင်လဲ တိုင်းဖို့ပဲ သုံးတဲ့ ဒေတာပါ။ train/test split က overfitting ကို ကာကွယ်တဲ့ အခြေခံ နည်းလမ်းပါ။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Supervised learning
- label တပ်ထားတဲ့ ဥပမာတွေကနေ သင်ယူခြင်း: model က ဒေတာ အသစ်အတွက် label ကို ခန့်မှန်းနိုင်အောင် label တပ်ထားတဲ့ ဥပမာတွေ (input နဲ့ အဖြေမှန်) ကနေ သင်ယူတာပါ။ သီးခြား အမျိုးအစားတွေ (discrete category) အတွက် classifier တွေနဲ့ ဆက်တိုက် တန်ဖိုးတွေ (continuous value) အတွက် regression model တွေကို ထုတ်ပေးပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Unsupervised learning
- label မပါတဲ့ ဒေတာကနေ သင်ယူခြင်း: label မပါတဲ့ ဒေတာကနေ သင်ယူတာပါ: algorithm က ဆင်တူတဲ့ item တွေကို အုပ်စုဖွဲ့ (clustering) ဒါမှမဟုတ် အတူတူ ပေါ်လေ့ရှိတဲ့ ပုံစံတွေ ရှာ (association rule) ပြီး ဖွဲ့စည်းပုံကို ကိုယ်တိုင် ရှာပါတယ်။ အဖြေမှန် ဘာမှ မပေးထားပါဘူး။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Reinforcement learning
- ဆုနဲ့ ဒဏ်ကနေ သင်ယူခြင်း: agent တစ်ခုက environment နဲ့ ထိတွေ့ရင်း သင်ယူတာပါ: လုပ်ဆောင်ချက် လုပ်တယ်၊ reward ဒါမှမဟုတ် penalty ရတယ်၊ ပြီးရင် စုစုပေါင်း reward အများဆုံး ရအောင် သူ့ policy ကို update လုပ်ပါတယ်၊ လုပ်ဆောင်ချက် အသစ်တွေကို စမ်းကြည့်တာ (exploration) နဲ့ ကောင်းမှန်း သိပြီးသားကို သုံးတာ (exploitation) ကို ချိန်ညှိရင်းပါ။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Deep learning
- အလွှာ အများပါတဲ့ neural network နဲ့ သင်ယူခြင်း: အလွှာ အများကြီးပါတဲ့ neural network တွေနဲ့ machine learning လုပ်တာပါ၊ raw ဒေတာရဲ့ feature တွေကို တဖြည်းဖြည်း ပို abstract ဖြစ်လာအောင် သင်ယူပါတယ် (အနားသတ်တွေ၊ ပြီးရင် ပုံသဏ္ဌာန်တွေ၊ ပြီးရင် အရာဝတ္ထုတွေ)။ ခေတ်သစ် ပုံနဲ့ ဘာသာစကား စနစ်တွေရဲ့ နောက်ကွယ်မှာ ရှိပြီး ဒေတာ အများကြီးနဲ့ တွက်ချက်နိုင်စွမ်း (compute) အများကြီး လိုပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Transfer learning
- train ပြီးသား model ကို ပြန်သုံးခြင်း: ယေဘုယျ အလုပ်ကြီး တစ်ခုမှာ train ပြီးသား model ကနေ စပြီး ဆက်စပ်တဲ့ သီးသန့် အလုပ် တစ်ခုအတွက် fine-tune လုပ်တာပါ။ အစကနေ train လုပ်တာနဲ့ ယှဉ်ရင် ဒေတာ၊ အချိန်နဲ့ စွမ်းအင် သက်သာပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Perceptron
- အရိုးရှင်းဆုံး neuron အတု: အရိုးရှင်းဆုံး artificial neuron ပါ: input တစ်ခုစီကို weight နဲ့ မြှောက်၊ bias နဲ့ ပေါင်းပြီး activation function ကို သုံးကာ output ထုတ်ပါတယ်။ train လုပ်တဲ့အခါ error လျော့အောင် weight တွေကို ညှိပါတယ်။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Neural network
- အလွှာလိုက် စီထားတဲ့ neuron အတု network: အလွှာတွေ (input, hidden, output) အဖြစ် စီထားတဲ့ artificial neuron တွေရဲ့ network ပါ၊ ချိတ်ဆက်မှုတိုင်းမှာ သင်ယူထားတဲ့ weight ရှိပါတယ်။ အလွှာတွေ ထပ်လိုက်ရင် ရှုပ်ထွေးတဲ့ non-linear ပုံစံတွေကို သင်ယူနိုင်ပြီး multi-layer perceptron က အခြေခံ ပုံစံပါ။ Machine learning ဆိုတာ ဘာလဲ မှာ သင်ပါတယ်
- Data cleaning
- train မလုပ်ခင် ဒေတာကို သန့်ရှင်းအောင် ပြင်ခြင်း: train မလုပ်ခင် ဒေတာကို ပြင်ဆင်တာပါ: ထပ်နေတာတွေကို ဖယ် ဒါမှမဟုတ် ပေါင်း၊ မှားနေတဲ့ တန်ဖိုးတွေကို ရှာပြီး ပြင်၊ outlier တွေကို ဘာလုပ်မလဲ ဆုံးဖြတ် (ပြင်၊ ဖယ်၊ ထား ဒါမှမဟုတ် ကန့်သတ်ချက်အထိ ဖြတ်)၊ မဆိုင်တဲ့ ဒေတာကို စစ်ထုတ်၊ format တွေကို ပြင်ပြီး ပျောက်နေတဲ့ တန်ဖိုးတွေကို ကိုင်တွယ်တာပါ။ model က ပေးသမျှကနေ သင်ယူတာမို့ ဒေတာ ညံ့ရင် model ညံ့ပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Feature selection
- model သင်ယူမယ့် input တွေကို ရွေးခြင်း: filter, wrapper ဒါမှမဟုတ် embedded method တွေကို သုံးပြီး model က ဘယ် input variable တွေကနေ သင်ယူသင့်လဲ ရွေးတာပါ။ feature နည်းပြီး ပိုသက်ဆိုင်ရင် train တာ ပိုမြန်ပြီး overfitting နည်းပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Dimensionality reduction
- အရေးကြီးတာ မပျောက်ဘဲ feature အရေအတွက် လျှော့ခြင်း: feature တွေကို ပေါင်းခြင်း ဒါမှမဟုတ် ပြောင်းလဲခြင်းဖြင့် အရေးကြီးတဲ့ အချက်အလက်ကို ထိန်းထားရင်း feature အရေအတွက်ကို လျှော့တာပါ။ ပုံစံတွေကို သင်ယူရ ပိုလွယ်စေပြီး ဒေတာကို ပုံဖော်ကြည့်ရ ပိုလွယ်စေပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Linear regression
- ဒေတာကြား မျဉ်းဖြောင့် ဆွဲပြီး ခန့်မှန်းခြင်း: ဆက်တိုက် တန်ဖိုး (continuous) ရလဒ် တစ်ခုကို ခန့်မှန်းဖို့ ဒေတာကြား မျဉ်းဖြောင့် တစ်ကြောင်း fit လုပ်တဲ့ supervised နည်းပါ။ train လုပ်တာက မျဉ်းနဲ့ အမှတ်တွေကြား စုစုပေါင်း prediction error ကို အနည်းဆုံး ဖြစ်အောင် လုပ်တာပါ။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Overfitting
- training ဒေတာကို အလွတ်ကျက်သလို သင်ယူမိခြင်း: model က training data ကို noise ပါ မကျန် အလွန် တိတိကျကျ သင်ယူမိလို့ training data မှာ score မြင့်ပေမဲ့ မမြင်ဖူးတဲ့ test data မှာ ညံ့တာပါ။ training နဲ့ test စွမ်းဆောင်ရည်ကြား ကွာဟချက် ကြီးတာကနေ သိနိုင်ပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Underfitting
- model ရိုးလွန်းလို့ ပုံစံကို မဖမ်းမိခြင်း: model က ရိုးလွန်းလို့ အခြေခံ ပုံစံကို မဖမ်းမိဘဲ training data မှာတောင် ညံ့တာပါ။ ပိုရှုပ်ထွေးတဲ့ model ဒါမှမဟုတ် အချက်အလက် ပိုပေးနိုင်တဲ့ feature တွေနဲ့ ပြင်ပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Hyperparameter
- train မလုပ်ခင် ရွေးထားရတဲ့ setting: ဒေတာကနေ သင်ယူတာ မဟုတ်ဘဲ train မလုပ်ခင် ရွေးထားတဲ့ setting ပါ၊ ဥပမာ k-NN မှာ k ဒါမှမဟုတ် decision tree ရဲ့ depth။ တန်ဖိုး မတူတာတွေမှာ model စွမ်းဆောင်ရည်ကို နှိုင်းယှဉ်ပြီး ညှိပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- F1 score
- precision နဲ့ recall ကို ချိန်ညှိတဲ့ အမှတ်: precision နဲ့ recall ရဲ့ harmonic mean ပါ: false positive နဲ့ false negative ကို ချိန်ညှိပေးတဲ့ score တစ်ခုတည်းပါ။ class တွေ အရေအတွက် မညီမျှတဲ့အခါ ရိုးရိုး accuracy ထက် ပိုသုံးကြပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- Confusion matrix
- ခန့်မှန်းချက်နဲ့ အမှန်ကို ယှဉ်ပြတဲ့ ဇယား: ခန့်မှန်းထားတဲ့ class နဲ့ တကယ့် class ကို ယှဉ်ပြီး true/false positive နဲ့ negative တွေကို ရေတွက်ထားတဲ့ ဇယားပါ။ accuracy, precision နဲ့ recall အားလုံးကို ဒီကနေ တွက်ပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- CNN
- ပုံတွေအတွက် deep network: Convolutional Neural Network ပါ။ ပုံတွေအတွက် deep network ပါ: convolutional layer တွေက feature တွေ ရှာဖို့ filter သေးသေးလေးတွေကို ပုံပေါ် ရွှေ့ကြည့်တယ်၊ pooling layer တွေက map တွေကို ချုံ့တယ်၊ fully connected layer တွေက classify လုပ်ပါတယ်။ အနားသတ်တွေကနေ အရာဝတ္ထုတွေအထိ နေရာအလိုက် အဆင့်ဆင့် (spatial hierarchy) ကို သင်ယူပါတယ်။ Model ကို train လုပ်ခြင်းနဲ့ အကဲဖြတ်ခြင်း မှာ သင်ပါတယ်
- K-NN
- အနီးဆုံး k ခုနဲ့ ဆုံးဖြတ်ခြင်း: k-Nearest Neighbours ပါ။ point အသစ် တစ်ခုကို အကွာအဝေးနဲ့ တိုင်းပြီး အနီးဆုံး label တပ်ထားတဲ့ ဥပမာ k ခုရဲ့ အများစု မဲနဲ့ classify လုပ်ပါတယ်။ ရိုးရှင်းပြီး training မလိုပေမဲ့ ခန့်မှန်းချိန်မှာ နှေးပြီး k ကို ဘယ်လို ရွေးလဲဆိုတာပေါ် အများကြီး မူတည်ပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- Decision tree
- ဟုတ်/မဟုတ် မေးခွန်းတွေနဲ့ ခန့်မှန်းတဲ့ သစ်ပင်ပုံ: feature တွေအကြောင်း ဟုတ်/မဟုတ် မေးခွန်း အစဉ်လိုက် မေးပြီး ခန့်မှန်းတဲ့ supervised model ပါ၊ အရွက်တွေက ခန့်မှန်းချက်တွေ ဖြစ်တဲ့ သစ်ပင်ပုံ ဆွဲပါတယ်။ နားလည်ရ၊ ရှင်းပြရ လွယ်ပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- Clustering
- ဆင်တူတာတွေကို အုပ်စုဖွဲ့ခြင်း: cluster တစ်ခုထဲက item တွေ အချင်းချင်း ဆင်တူပြီး တခြား cluster တွေနဲ့ မတူအောင် ဒေတာကို unsupervised နည်းနဲ့ အုပ်စုဖွဲ့တာပါ။ label မရှိတဲ့အခါ customer segmentation နဲ့ ပုံစံ ရှာဖွေဖို့ သုံးပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- K-means
- centroid k ခုနဲ့ အုပ်စုဖွဲ့တဲ့ algorithm: clustering algorithm တစ်ခုပါ: centroid k ခု ရွေးတယ်၊ point တိုင်းကို အနီးဆုံး centroid ဆီ သတ်မှတ်တယ်၊ centroid တွေကို ပြန်တွက်တယ်၊ ပြီးရင် မပြောင်းတော့တဲ့အထိ ထပ်လုပ်ပါတယ်။ k ကို ကြိုရွေးထားရပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- Association rule
- X ဝယ်ရင် Y ပါ ဝယ်တတ်တယ်ဆိုတဲ့ ပုံစံ: ဒေတာထဲကနေ ရှာထုတ်ထားတဲ့ if-then ပုံစံပါ (X ဝယ်တဲ့ customer တွေက Y ကိုပါ ဝယ်လေ့ရှိတယ်)၊ support နဲ့ confidence နဲ့ အမှတ်ပေးပါတယ်။ market basket analysis နောက်ကွယ်က လူသိများတဲ့ နည်းပါ။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- Genetic algorithm
- ဆင့်ကဲဖြစ်စဉ်ကို အတုယူတဲ့ ရှာဖွေနည်း: ဆင့်ကဲဖြစ်စဉ် (evolution) ကနေ အတုယူထားတဲ့ optimisation နည်းပါ: ဖြေရှင်းချက် အလားအလာ population ကို fitness function နဲ့ အမှတ်ပေးပြီး အကောင်းဆုံးတွေကို ရွေး (selection)၊ ပေါင်း (crossover) ပြီး ကျပန်း ပြင်ကာ (mutation) termination ရောက်တဲ့အထိ မျိုးဆက်တွေ ဆက်လုပ်ပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
- Fitness function
- ဖြေရှင်းချက် ဘယ်လောက် ကောင်းလဲ တိုင်းတဲ့ function: genetic algorithm မှာ ဖြေရှင်းချက် အလားအလာ တစ်ခုစီ ဘယ်လောက် ကောင်းလဲ တိုင်းတဲ့ scoring function ပါ။ နောက်မျိုးဆက်အတွက် fitness မြင့်တဲ့ candidate တွေကို ပိုရွေးတာကနေ selection pressure ဖြစ်လာပါတယ်။ သင်ယူမှု အမျိုးအစားများ မှာ သင်ပါတယ်
Networks (ကွန်ရက်များ)
- LAN
- နေရာ သေးသေးကို ဖုံးတဲ့ network: Local Area Network ပါ။ အဆောက်အအုံ တစ်ခု ဒါမှမဟုတ် campus တစ်ခုလို ပထဝီ နယ်မြေ သေးသေးလေးကို ဖုံးတဲ့ network ပါ။ Network အခြေခံများ မှာ သင်ပါတယ်
- WAN
- နယ်မြေ ကျယ်ကျယ်ကို ဖုံးတဲ့ network: Wide Area Network ပါ။ ပထဝီ နယ်မြေ ကျယ်ကျယ်ကို ဖုံးပြီး LAN အများကြီးကို ချိတ်ဆက်ပေးတဲ့ network ပါ။ Network အခြေခံများ မှာ သင်ပါတယ်
- TCP
- ဒေတာကို စိတ်ချရအောင် ပို့တဲ့ protocol: Transmission Control Protocol ပါ။ ဒေတာကို စိတ်ချရပြီး အစဉ်လိုက် ရောက်အောင် သေချာစေတဲ့ connection-oriented protocol ပါ။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- UDP
- အမြန်ပို့ပြီး ရောက်ဖို့ အာမမခံတဲ့ protocol: User Datagram Protocol ပါ။ ဒေတာ ရောက်မရောက် အာမမခံဘဲ ပို့ပေးတဲ့ connectionless protocol ပါ။ အမြန်နှုန်း အရေးအကြီးဆုံး ဖြစ်တဲ့အခါ သုံးပါတယ်။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- IP address
- network ပေါ်က စက်တစ်ခုရဲ့ လိပ်စာ: network ပေါ်က စက်ပစ္စည်း တစ်ခုချင်းကို ပေးထားတဲ့ မထပ်တဲ့ ဂဏန်း လိပ်စာပါ (ဥပမာ 192.168.1.1)။ စက်ကို ခွဲခြားသိဖို့နဲ့ ရှာဖို့ သုံးပါတယ်။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- DNS
- domain နာမည်ကို IP လိပ်စာ ပြောင်းပေးတဲ့ စနစ်: Domain Name System ပါ။ လူဖတ်လို့ရတဲ့ domain နာမည်တွေ (ဥပမာ google.com) ကို IP address တွေအဖြစ် ပြောင်းပေးပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- HTTP
- ဝဘ်စာမျက်နှာ ပို့တဲ့ protocol: HyperText Transfer Protocol ပါ။ browser တွေနဲ့ server တွေကြား ဝဘ်စာမျက်နှာတွေ ပို့ပေးတဲ့ application-layer protocol ပါ။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- HTTPS
- encrypt လုပ်ထားတဲ့ HTTP: HTTP Secure ပါ။ client နဲ့ server ကြား သွားနေတဲ့ ဒေတာကို ကာကွယ်ဖို့ TLS/SSL နဲ့ encrypt လုပ်ထားတဲ့ HTTP ပါ။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- Firewall
- network အဝင်အထွက်ကို စစ်ထုတ်တဲ့ အကာအကွယ်: ကြိုသတ်မှတ်ထားတဲ့ စည်းမျဉ်းတွေအတိုင်း အဝင်/အထွက် traffic ကို စောင့်ကြည့် စစ်ထုတ်ပေးတဲ့ network လုံခြုံရေး စက်ပစ္စည်း ဒါမှမဟုတ် software ပါ။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Packet
- network ပေါ် ပို့တဲ့ ဒေတာ အစိတ်အပိုင်းငယ်: network ပေါ်မှာ ပို့တဲ့ ဒေတာ အစိတ်အပိုင်းငယ် တစ်ခုပါ။ header (ပို့တဲ့နေရာ၊ ရောက်ရမယ့်နေရာ၊ sequence number) နဲ့ payload ပါဝင်ပါတယ်။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Protocol
- ဒေတာ ပို့ပုံအတွက် သဘောတူ စည်းမျဉ်း: network ပေါ်မှာ ဒေတာကို ဘယ်လို ပုံစံချ၊ ပို့၊ လက်ခံရမလဲဆိုတာ သတ်မှတ်ထားတဲ့ သဘောတူ စည်းမျဉ်းတွေပါ။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- MAC address
- network စက်ရဲ့ hardware လိပ်စာ: Media Access Control address ပါ။ network စက်ပစ္စည်းတိုင်းထဲ ထည့်သွင်းထားတဲ့ မထပ်တဲ့ hardware သတ်မှတ်နံပါတ်ပါ (serial number လိုပါပဲ)။ local network ပေါ်က စက်တွေကို ခွဲခြားသိဖို့ သုံးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Encryption
- ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း: algorithm နဲ့ key ကို သုံးပြီး ဖတ်လို့ရတဲ့ ဒေတာ (plaintext) ကို ဖတ်လို့မရတဲ့ ပုံစံ (ciphertext) အဖြစ် ပြောင်းတဲ့ လုပ်ငန်းစဉ်ပါ။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
- Symmetric encryption
- key တစ်ခုတည်း သုံးတဲ့ encryption: encrypt လုပ်ဖို့ရော decrypt လုပ်ဖို့ပါ secret key တစ်ခုတည်းကို သုံးတဲ့ encryption ပါ။ မြန်ပေမဲ့ key ကို လုံလုံခြုံခြုံ ဖလှယ်ဖို့ လိုပါတယ်။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
- Asymmetric encryption
- key နှစ်ခု သုံးတဲ့ encryption: key နှစ်ခု သုံးတဲ့ encryption ပါ။ encrypt လုပ်ဖို့ public key (လူတိုင်းကို ပေးထား) နဲ့ decrypt လုပ်ဖို့ private key (လျှို့ဝှက်ထား) ကို သုံးပါတယ်။ ပိုနှေးပေမဲ့ စတင် ချိတ်ဆက်ရာမှာ ပိုလုံခြုံပါတယ်။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
- VPN
- public network ပေါ်က လုံခြုံတဲ့ ကိုယ်ပိုင် လမ်းကြောင်း: Virtual Private Network ပါ။ public network ပေါ်မှာ encrypt လုပ်ထားတဲ့ tunnel တစ်ခု ဖန်တီးပြီး private network ကို အဝေးကနေ လုံလုံခြုံခြုံ ဝင်သုံးခွင့် ပေးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- PAN
- လူတစ်ယောက် ပတ်ဝန်းကျင်က network: Personal Area Network ပါ။ လူတစ်ယောက် ပတ်ဝန်းကျင် မီတာ အနည်းငယ်ကို ဖုံးတဲ့ network ပါ၊ အများအားဖြင့် ဖုန်း၊ earbuds နဲ့ နာရီကြား Bluetooth ချိတ်ဆက်မှုတွေပါ။ အကွာအဝေး အလွန်တိုပြီး ပါဝါ နည်းနည်းပဲ သုံးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Edge computing
- ဒေတာ ထွက်တဲ့ နေရာအနီးမှာ စီမံဆောင်ရွက်ခြင်း: ဒေတာ အားလုံးကို အဝေးက cloud server တွေဆီ ပို့မယ့်အစား ဒေတာ ထွက်တဲ့ နေရာအနီး (စက်ပေါ်မှာ ဒါမှမဟုတ် စက်အနီး) မှာ စီမံဆောင်ရွက်တာပါ။ latency နဲ့ bandwidth သုံးစွဲမှုကို လျှော့ပေးပြီး IoT နဲ့ real-time စနစ်တွေအတွက် အရေးကြီးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Distributed system
- ကွန်ပျူတာ အများ ပေါင်းပြီး အလုပ်လုပ်တဲ့ စနစ်: network ချိတ်ထားတဲ့ ကွန်ပျူတာ အများကြီး အတူ အလုပ်လုပ်ပေမဲ့ အသုံးပြုသူတွေအတွက် စနစ် တစ်ခုတည်းလို ထင်ရတာပါ။ scalability နဲ့ fault tolerance ပေးပေမဲ့ ညှိနှိုင်းရတာ ရှုပ်ထွေးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Router
- network တွေကြား packet ကို လမ်းကြောင်းပြတဲ့ စက်: မတူတဲ့ network တွေကြား packet တွေကို ဆက်ပို့ပေးတဲ့ စက်ပစ္စည်းပါ၊ IP address တွေနဲ့ routing table ကို သုံးပြီး packet တစ်ခုစီရဲ့ နောက် hop ကို ရွေးပါတယ်။ LAN ကို အင်တာနက်နဲ့ ချိတ်ပေးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Switch
- LAN ထဲက စက်တွေကို ချိတ်ပေးတဲ့ စက်: LAN တစ်ခုထဲက စက်ပစ္စည်းတွေကို ချိတ်ပေးပြီး လေ့လာမှတ်သားထားတဲ့ MAC address တွေကို သုံးကာ ရည်ရွယ်ထားတဲ့ လက်ခံသူရဲ့ port ဆီကိုပဲ ဒေတာ ပို့ပေးတဲ့ network စက်ပစ္စည်းပါ။ port တိုင်းဆီ broadcast လုပ်တဲ့ hub ထက် ပိုထိရောက်ပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Modem
- digital နဲ့ analogue signal ကို အပြန်အလှန် ပြောင်းပေးတဲ့ စက်: Modulator-demodulator ပါ။ telephone ဒါမှမဟုတ် cable line တွေပေါ်ကနေ ပို့ဖို့ digital signal တွေကို analogue အဖြစ် ပြောင်းပြီး တစ်ဖက်မှာ ပြန်ပြောင်းပေးပါတယ်: အိမ် network နဲ့ ISP ကြားက တံတားပါ။ Network အခြေခံများ မှာ သင်ပါတယ်
- NIC
- စက်ကို network နဲ့ ချိတ်ပေးတဲ့ card: Network Interface Card ပါ။ စက်ပစ္စည်းကို ကြိုးနဲ့ဖြစ်ဖြစ် ကြိုးမဲ့ဖြစ်ဖြစ် network နဲ့ ချိတ်ပေးပြီး သူ့ရဲ့ မထပ်တဲ့ MAC address ကို ကိုင်ထားတဲ့ hardware ပါ။ Network အခြေခံများ မှာ သင်ပါတယ်
- Gateway
- protocol မတူတဲ့ network တွေကို ဆက်ပေးတဲ့ စက်: protocol မတူတဲ့ network တွေကို ချိတ်ပြီး သူတို့ကြား ဘာသာပြန်ပေးတဲ့ စက်ပစ္စည်းပါ။ အိမ် network တွေမှာ အများအားဖြင့် router နဲ့ ပေါင်းထားပါတယ်: default gateway က LAN ရဲ့ ထွက်ပေါက်ပါ။ Network အခြေခံများ မှာ သင်ပါတယ်
- Wireless access point
- Wi-Fi signal ထုတ်ပေးတဲ့ စက်: ကြိုးမဲ့ စက်ပစ္စည်းတွေ ကြိုး network ထဲ ဝင်နိုင်အောင် Wi-Fi signal ထုတ်လွှင့်ပေးတဲ့ စက်ပစ္စည်းပါ။ network ရနိုင်တဲ့ နေရာကို ချဲ့ပေးပြီး switch ဆီ ကြိုးနဲ့ ပြန်ချိတ်ပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- DHCP
- IP address ကို အလိုအလျောက် ခွဲပေးတဲ့ protocol: Dynamic Host Configuration Protocol ပါ။ network ထဲ ဝင်လာတဲ့ စက်ပစ္စည်း တစ်ခုချင်းကို IP address နဲ့ network settings တွေကို အလိုအလျောက် ငှားပေး (lease) ပြီး ကိုယ်တိုင် သတ်မှတ်ရတာနဲ့ address ထပ်တိုက်တာတွေကို ရှောင်ပေးပါတယ်။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- TCP/IP model
- network အလွှာ လေးလွှာ model: network အလွှာ လေးလွှာ model ပါ: application, transport, internet, network interface။ အလွှာ တစ်ခုစီက ကိုယ်ပိုင် header ထည့်ပြီး (encapsulation) သူ့အပေါ်က အလွှာကို ဝန်ဆောင်မှု ပေးပါတယ်။ Protocol များနဲ့ network အလွှာများ မှာ သင်ပါတယ်
- IPv4
- 32-bit IP လိပ်စာ စနစ်: 0-255 ဂဏန်း လေးလုံး (ဥပမာ 192.168.1.10) နဲ့ ရေးတဲ့ 32-bit IP addressing စနစ်ပါ။ address က 4.3 billion ခန့်ပဲ ရှိတာမို့ NAT ကို သုံးလာကြပြီး IPv6 ကို ပြောင်းလာကြတာပါ။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- IPv6
- 128-bit IP လိပ်စာ စနစ်: hexadecimal ဂဏန်း အုပ်စု ရှစ်စုနဲ့ ရေးတဲ့ 128-bit IP addressing စနစ်ပါ။ လက်တွေ့မှာ အကန့်အသတ် မရှိသလောက် address တွေ ပေးနိုင်တာမို့ NAT မလိုတော့ပါဘူး။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- NAT
- private IP ကို public IP အဖြစ် ပြောင်းပေးခြင်း: Network Address Translation ပါ။ router က private IP address တွေကို သူ့ရဲ့ public address တစ်ခုတည်းအဖြစ် ပြန်ရေးပြီး connection တစ်ခုစီကို မှတ်ထားပါတယ်၊ ဒါကြောင့် စက်အများကြီးက public IPv4 address တစ်ခုကို မျှသုံးနိုင်ပြီး အတွင်း address တွေကို အပြင်ကနေ ဖုံးထားပေးပါတယ်။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Packet switching
- packet တွေကို သီးခြား လမ်းကြောင်းနဲ့ ပို့ခြင်း: message တစ်ခုကို packet တွေအဖြစ် ခွဲပြီး network ပေါ်မှာ သီးခြားစီ လမ်းကြောင်းရွေး ပို့ကာ ရောက်ရာမှာ sequence number တွေ သုံးပြီး အစဉ်လိုက် ပြန်စုတာပါ။ ထိရောက်ပြီး (link တွေကို မျှသုံးလို့) fault-tolerant ဖြစ်ပါတယ် (packet တွေက ချို့ယွင်းနေတဲ့ နေရာကို ရှောင်ပတ်သွားနိုင်လို့)။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Static routing
- ကိုယ်တိုင် သတ်မှတ်ထားတဲ့ ပုံသေ လမ်းကြောင်း: administrator က ကိုယ်တိုင် ထည့်သွင်းထားပြီး သူ့ဘာသာ ဘယ်တော့မှ မပြောင်းတဲ့ route တွေပါ။ ကြိုသိနိုင်ပြီး overhead နည်းပေမဲ့ link ပျက်တဲ့အခါ လိုက်မပြောင်းနိုင်ပါဘူး၊ သေးငယ်ပြီး တည်ငြိမ်တဲ့ network တွေနဲ့ သင့်တော်ပါတယ်။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Dynamic routing
- router တွေက လမ်းကြောင်းကို အလိုအလျောက် ပြောင်းခြင်း: router တွေက အချက်အလက် ဖလှယ်ပြီး routing table တွေကို အလိုအလျောက် update လုပ်ကာ ချို့ယွင်းမှုနဲ့ traffic ပိတ်ဆို့မှုတွေနဲ့ လိုက်လျောညီထွေ ဖြစ်အောင် လုပ်ပါတယ်။ static routing ထက် ပိုခံနိုင်ရည် ရှိပေမဲ့ overhead နဲ့ ရှုပ်ထွေးမှု ပိုများပါတယ်။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Bandwidth
- တစ်စက္ကန့်မှာ ပို့နိုင်တဲ့ ဒေတာ အများဆုံး: connection ဒါမှမဟုတ် channel တစ်ခုက တစ်စက္ကန့်မှာ ပို့နိုင်တဲ့ ဒေတာ အများဆုံး ပမာဏပါ၊ bits per second နဲ့ တိုင်းပါတယ်။ bandwidth မြင့်ရင် တစ်ကြိမ်မှာ ဒေတာ ပိုများများ ပို့နိုင်ပေမဲ့ bit တစ်ခုချင်းရဲ့ ခရီးကိုတော့ မတိုစေပါဘူး။ ဒေတာ ပို့လွှတ်ခြင်း မှာ သင်ပါတယ်
- Latency
- တောင်းဆိုမှုနဲ့ တုံ့ပြန်မှုကြား နှောင့်နှေးချိန်: လုပ်ဆောင်ချက် ဒါမှမဟုတ် တောင်းဆိုမှု တစ်ခုနဲ့ သူ့ တုံ့ပြန်မှုကြား နှောင့်နှေးချိန်ပါ၊ millisecond နဲ့ တိုင်းပါတယ်။ network မှာ အကွာအဝေး၊ hop အရေအတွက်နဲ့ traffic ပိတ်ဆို့မှုပေါ် မူတည်ပြီး ဖုန်းခေါ်တာနဲ့ game ဆော့တာအတွက် latency နည်းဖို့ အရေးကြီးပါတယ်။ Network အခြေခံများ မှာ သင်ပါတယ်
- Star topology
- ဗဟို switch နဲ့ ချိတ်တဲ့ ကြယ်ပုံ network: စက်ပစ္စည်းတိုင်းက ဗဟို switch တစ်ခုနဲ့ ချိတ်ပါတယ်။ စီမံရလွယ်ပြီး ကြိုးတစ်ချောင်း ပျက်ရင် အဲဒီ စက်တစ်ခုပဲ ထိခိုက်ပေမဲ့ ဗဟို စက်ပစ္စည်း ပျက်ရင်တော့ network တစ်ခုလုံး ထိခိုက်ပါတယ် (single point of failure)။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Mesh topology
- node တွေ အပြန်အလှန် ချိတ်ထားတဲ့ ပိုက်ကွန်ပုံ network: node တစ်ခုစီက တခြား node အများနဲ့ ချိတ်တာမို့ (full mesh မှာဆိုရင် အားလုံးနဲ့) အပို လမ်းကြောင်း အများကြီး ရပါတယ်။ fault-tolerant အလွန်ဖြစ်ပေမဲ့ ကြိုးသွယ်ဖို့နဲ့ စီမံဖို့ စျေးကြီးပါတယ်၊ backbone တွေနဲ့ Wi-Fi mesh စနစ်တွေမှာ သုံးပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Client-server
- server က ဝန်ဆောင်ပြီး client က တောင်းတဲ့ model: သီးသန့် server တွေက ဝန်ဆောင်မှု ပေးပြီး client တွေက တောင်းဆိုတဲ့ network model ပါ။ ဗဟိုကနေ ထိန်းချုပ်နိုင်ပြီး လုံခြုံရေးနဲ့ backup ပိုလွယ်ပေမဲ့ server က bottleneck ဖြစ်နိုင်ပြီး server ပျက်ရင် စနစ်တစ်ခုလုံး ထိခိုက်ပါတယ် (single point of failure)။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Peer-to-peer
- စက်တိုင်း တန်းတူ မျှဝေတဲ့ network model: စက်ပစ္စည်းတိုင်းက client ရော server ပါ လုပ်ပြီး resource တွေကို တိုက်ရိုက် မျှဝေတဲ့ network model ပါ။ စျေးသက်သာပြီး ဗဟိုကို မမှီခိုတာမို့ ခံနိုင်ရည် ရှိပေမဲ့ ဗဟိုကနေ လုံခြုံအောင် လုပ်ဖို့နဲ့ စီမံဖို့ ပိုခက်ပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Subnetting
- network ကို network ငယ်တွေ ခွဲခြင်း: IP network တစ်ခုကို ပိုသေးတဲ့ sub-network တွေအဖြစ် ခွဲတာပါ။ broadcast traffic ကို လျှော့ပေးတယ်၊ အုပ်စုတွေကို သီးခြား ခွဲထားလို့ လုံခြုံရေး ပိုကောင်းတယ်၊ ပြီးတော့ address တွေကို (အထပ်၊ ဌာန ဒါမှမဟုတ် လုပ်ငန်းအလိုက်) စနစ်တကျ စီပေးပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- VLAN
- switch ပေါ်မှာ သတ်မှတ်တဲ့ virtual LAN: Virtual LAN ပါ။ switch တွေပေါ်မှာ configure လုပ်ထားတဲ့ logical စက်ပစ္စည်း အုပ်စု တစ်ခုပါ၊ physical နေရာ ဘယ်မှာပဲ ရှိရှိ သီးခြား LAN တစ်ခုလို အလုပ်လုပ်ပါတယ်။ ကြိုး ပြန်မသွယ်ဘဲ traffic ကို ခွဲထားပေးပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- Proxy server
- client နဲ့ အင်တာနက်ကြားက ကြားခံ server: client တွေနဲ့ အင်တာနက်ကြား request တွေကို ဆက်ပို့ပေးတဲ့ server ပါ။ bandwidth သက်သာအောင် page တွေကို cache လုပ်တာ၊ content ကို စစ်ထုတ်တာ၊ လုပ်ဆောင်မှုတွေကို log မှတ်တာနဲ့ အတွင်း address တွေကို ဖုံးတာ လုပ်နိုင်ပါတယ်။ Network ဖွဲ့စည်းပုံ မှာ သင်ပါတယ်
- DDoS
- စက်အများကနေ traffic အလျှံပယ် ပို့ပြီး တိုက်ခိုက်ခြင်း: Distributed Denial of Service ပါ။ ထိန်းချုပ်ခံထားရတဲ့ စက်အများကြီး (botnet) ကနေ ပစ်မှတ်ဆီ traffic တွေ အလျှံပယ် ပို့ပြီး သူ့ bandwidth ဒါမှမဟုတ် resource တွေ ကုန်သွားအောင် လုပ်ကာ တရားဝင် အသုံးပြုသူတွေကို ဝန်ဆောင်မှု မရအောင် လုပ်တာပါ။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Malware
- အန္တရာယ်ပေးတဲ့ software: စနစ်တစ်ခုကို ပျက်စီးစေဖို့၊ နှောင့်ယှက်ဖို့ ဒါမှမဟုတ် ခွင့်မရှိဘဲ ဝင်ရောက်ဖို့ ဒီဇိုင်းလုပ်ထားတဲ့ အန္တရာယ်ပေး software ပါ။ virus, worm, trojan, ransomware နဲ့ spyware တွေ ပါဝင်ပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Phishing
- လိမ်ညာ message တွေနဲ့ အချက်အလက် ခိုးခြင်း: ယုံကြည်ရတဲ့ အဖွဲ့အစည်းတွေအဖြစ် ဟန်ဆောင်ထားတဲ့ လိမ်ညာ message တွေနဲ့ အသုံးပြုသူတွေကို login အချက်အလက် ပေးမိအောင် ဒါမှမဟုတ် malware ထည့်မိအောင် လှည့်စားတာပါ။ နည်းပညာကို မဟုတ်ဘဲ လူကို တိုက်ခိုက်တာမို့ အသုံးပြုသူတွေကို သင်တန်းပေးခြင်းနဲ့ MFA နဲ့ ကာကွယ်ပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Man-in-the-middle
- ကြားက ခိုးယူပြီး ပြင်နိုင်တဲ့ တိုက်ခိုက်မှု: တိုက်ရိုက် ဆက်သွယ်နေတယ်လို့ ထင်နေတဲ့ နှစ်ဖက်ကြား traffic ကို တတိယလူက လျှို့ဝှက်စွာ ကြားဖြတ်ယူပြီး ပြင်ဆင်နိုင်တဲ့ တိုက်ခိုက်မှုပါ။ စစ်မှန်ကြောင်း အတည်ပြုထားတဲ့ certificate တွေနဲ့ encryption က အဓိက ကာကွယ်ရေးပါ။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- SQL injection
- input ထဲ SQL ထည့်ပြီး တိုက်ခိုက်ခြင်း: input field တွေထဲကို SQL အပိုင်းအစတွေ ထည့်ပြီး database ပေါ်မှာ run စေကာ ဒေတာကို ပေါက်ကြားစေတာ ဒါမှမဟုတ် ဖျက်ဆီးတာပါ။ input validation နဲ့ parameterised query တွေနဲ့ ကာကွယ်ပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- XSS
- ဝဘ်ဆိုက်ထဲ အန္တရာယ်ပေး script ထည့်ခြင်း: Cross-Site Scripting ပါ။ ယုံကြည်ရတဲ့ ဝဘ်ဆိုက်ထဲကို အန္တရာယ်ပေး script ထည့်ပြီး တခြား အသုံးပြုသူတွေရဲ့ browser မှာ run စေကာ session ဒါမှမဟုတ် ဒေတာ ခိုးယူတာပါ။ အသုံးပြုသူ input ကို validate လုပ်ပြီး escape လုပ်ခြင်းဖြင့် ကာကွယ်ပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Zero-day
- ပြင်ဆင်ချက် မထွက်ခင် အသုံးချခံရတဲ့ အားနည်းချက်: software vendor မသိသေးတဲ့ အားနည်းချက် (vulnerability) ပါ၊ patch မရှိခင်မှာ အသုံးချခံရပါတယ် (vendor မှာ ပြင်ဖို့ ရက် သုည ရက်ပဲ ရခဲ့တယ်)။ ကာကွယ်ရေးက သိပြီးသား signature တွေထက် လုပ်ဆောင်ပုံကို ကြည့်ပြီး ရှာတဲ့ နည်း (behaviour-based detection) ကို မှီခိုပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Intrusion detection system
- သံသယဖြစ်ဖွယ် traffic ကို ရှာပြီး သတိပေးတဲ့ စနစ်: IDS က network traffic ထဲမှာ သံသယဖြစ်ဖွယ် ပုံစံတွေကို စောင့်ကြည့်ပြီး administrator တွေကို သတိပေးပါတယ်။ ရှာတွေ့ပေမဲ့ မပိတ်ပါဘူး၊ traffic လမ်းကြောင်းထဲမှာ ရှိပြီး traffic ကို ရပ်နိုင်တဲ့ IPS နဲ့ ယှဉ်ကြည့်ပါ။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- Intrusion prevention system
- တိုက်ခိုက်မှုကို အလိုအလျောက် ပိတ်ပေးတဲ့ စနစ်: IPS က traffic လမ်းကြောင်းထဲမှာ ရှိပြီး ရှာတွေ့တဲ့ တိုက်ခိုက်မှုတွေကို real time မှာ အလိုအလျောက် ပိတ်ပါတယ်: တုံ့ပြန် လုပ်ဆောင်နိုင်တဲ့ IDS ပါပဲ၊ ဒါပေမဲ့ false positive ဖြစ်ရင် တရားဝင် traffic ကို ပိတ်မိနိုင်ပါတယ်။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- MFA
- အထောက်အထား အမျိုးအစား အများနဲ့ စစ်ခြင်း: Multi-Factor Authentication ပါ။ မတူတဲ့ အမျိုးအစားတွေကနေ (သိထားတဲ့အရာ၊ ကိုင်ထားတဲ့အရာ ဒါမှမဟုတ် ကိုယ်တိုင် ဖြစ်နေတဲ့အရာ) သီးခြား အထောက်အထား နှစ်ခု ဒါမှမဟုတ် ပိုများပြီး ကိုယ်ဘယ်သူလဲ သက်သေပြခိုင်းတာပါ၊ ဒါကြောင့် ခိုးထားတဲ့ password တစ်ခုတည်းနဲ့ မလုံလောက်ပါဘူး။ Network လုံခြုံရေး မှာ သင်ပါတယ်
- TLS
- အင်တာနက် traffic ကို encrypt လုပ်တဲ့ protocol: Transport Layer Security ပါ၊ SSL ရဲ့ နောက်ဆက်ခံပါ။ အင်တာနက် traffic ကို encrypt လုပ်ပေးတဲ့ protocol ပါ (HTTPS ထဲက S): handshake က certificate နဲ့ server ကို authenticate လုပ်ပြီး symmetric session key တစ်ခုကို သဘောတူပါတယ်။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
- Digital certificate
- public key ကို ပိုင်ရှင်နဲ့ ချိတ်ပေးတဲ့ အီလက်ထရွန်နစ် စာရွက်: ယုံကြည်ရတဲ့ Certificate Authority က လက်မှတ်ထိုးထားပြီး public key ကို ဝဘ်ဆိုက်လို identity တစ်ခုနဲ့ ချိတ်ပေးတဲ့ အီလက်ထရွန်နစ် စာရွက်စာတမ်းပါ။ encrypt မလုပ်ခင် browser က server အစစ်နဲ့ ဆက်သွယ်နေတာ ဟုတ်မဟုတ် စစ်ဆေးနိုင်စေပါတယ်။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
- Digital signature
- ပို့သူကို သက်သေပြတဲ့ digital လက်မှတ်: ပို့သူရဲ့ private key နဲ့ encrypt လုပ်ထားတဲ့ message ရဲ့ hash ပါ။ ကိုက်ညီတဲ့ public key နဲ့ ဘယ်သူမဆို စစ်ဆေးနိုင်ပြီး message ကို ဘယ်သူ ပို့တယ်ဆိုတာ (authenticity) နဲ့ ပြင်ဆင်ထားခြင်း မရှိဘူးဆိုတာ (integrity) ကို သက်သေပြပါတယ်။ ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း မှာ သင်ပါတယ်
Computational thinking (ကွန်ပျူတာ သိပ္ပံ နည်းနဲ့ ပြဿနာကို စဉ်းစားခြင်း)
- Abstraction
- မလိုတဲ့ အသေးစိတ်ကို ဖယ်ပြီး အဓိကကိုပဲ ကြည့်ခြင်း: ပြဿနာကို ရိုးရှင်းအောင် အရေးကြီးတဲ့ အချက်အလက်ကိုပဲ အာရုံစိုက်ပြီး မလိုအပ်တဲ့ အသေးစိတ်တွေကို ချန်ထားတာပါ။ Computational thinking ရဲ့ အခြေခံ သဘောတရားများ မှာ သင်ပါတယ်
- Decomposition
- ပြဿနာကို အပိုင်းငယ်တွေ ခွဲခြင်း: ရှုပ်ထွေးတဲ့ ပြဿနာတစ်ခုကို သီးခြားစီ ဖြေရှင်းနိုင်ပြီး ကိုင်တွယ်ရလွယ်တဲ့ ပြဿနာငယ်တွေအဖြစ် ခွဲထုတ်တာပါ။ Computational thinking ရဲ့ အခြေခံ သဘောတရားများ မှာ သင်ပါတယ်
- Pattern recognition
- တူညီတဲ့ ပုံစံတွေကို ရှာဖွေခြင်း: ပြဿနာတွေ ဒါမှမဟုတ် ဒေတာတွေကြားမှာ တူညီချက်တွေ၊ အလားအလာတွေ ဒါမှမဟုတ် ထပ်ခါထပ်ခါ ပေါ်လာတဲ့ ဖွဲ့စည်းပုံတွေကို ရှာဖွေ ဖော်ထုတ်တာပါ။ Computational thinking ရဲ့ အခြေခံ သဘောတရားများ မှာ သင်ပါတယ်
- Algorithmic thinking
- အဆင့်ဆင့် ဖြေရှင်းနည်းကို စဉ်းစားခြင်း: ပြဿနာတစ်ခုကို ဖြေရှင်းဖို့ ရှင်းလင်းတဲ့ ညွှန်ကြားချက်တွေကို အဆင့်ဆင့် စီစဉ်ပြီး ဒီဇိုင်းဆွဲတာပါ။ Computational thinking ရဲ့ အခြေခံ သဘောတရားများ မှာ သင်ပါတယ်
- Problem specification
- ပြဿနာကို တိတိကျကျ ဖော်ပြချက်: ပြဿနာတစ်ခုကို စနစ်တကျ ဖော်ပြထားတာပါ။ ပြဿနာ ဖော်ပြချက်၊ ကန့်သတ်ချက်တွေ၊ ရည်မှန်းချက်တွေ၊ ပန်းတိုင်တွေ၊ input တွေ၊ output တွေနဲ့ အကဲဖြတ် စံနှုန်းတွေ ပါဝင်ပါတယ်။ ပြဿနာကို တိတိကျကျ ဖော်ပြချက် မှာ သင်ပါတယ်
- Flowchart
- လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ: algorithm တစ်ခုရဲ့ အဆင့်တွေကို စံ သင်္ကေတတွေ (ဘဲဥပုံ၊ စတုဂံ၊ စိန်ပုံ၊ အနားပြိုင်စတုဂံ) သုံးပြီး ဆွဲပြတဲ့ ပုံပါ။ လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံများ မှာ သင်ပါတယ်
- Pseudocode
- program ပုံစံ ရိုးရိုးစာနဲ့ ရေးတဲ့ algorithm: program ပုံစံ ဖွဲ့စည်းပုံ (sequence, selection, iteration) ကို သုံးပေမဲ့ ဘယ် programming language ရဲ့ syntax အတိအကျကိုမှ မသုံးဘဲ algorithm ကို ရိုးရိုးစာနဲ့ ဖော်ပြတာပါ။ code မရေးခင် logic ကို စီစဉ်ဖို့နဲ့ တခြားသူတွေကို ပြောပြဖို့ သုံးပါတယ်။ program ပုံစံ ရိုးရိုးစာနဲ့ ရေးတဲ့ algorithm မှာ သင်ပါတယ်
- Algorithm
- အယ်လ်ဂိုရီသမ်၊ ပြဿနာကို အဆင့်ဆင့် ဖြေရှင်းတဲ့ နည်းလမ်း: ပြဿနာ တစ်ခုကို ဖြေရှင်းပေးတဲ့ အဆုံးရှိ၊ အစဉ်လိုက်ဖြစ်ပြီး အဓိပ္ပာယ် နှစ်မျိုး မထွက်တဲ့ အဆင့်တွေပါ။ algorithm တစ်ခုတည်းကို pseudocode, flowchart ဒါမှမဟုတ် ဘယ် programming language နဲ့မဆို ဖော်ပြနိုင်ပါတယ်။ Computational thinking ရဲ့ အခြေခံ သဘောတရားများ မှာ သင်ပါတယ်
- Trace table
- variable တန်ဖိုးတွေကို အဆင့်ဆင့် မှတ်တဲ့ ဇယား: program ရဲ့ အဆင့်တိုင်း ပြီးတိုင်း variable တိုင်းရဲ့ တန်ဖိုး (နဲ့ output ရှိရင်) ကို မှတ်တမ်းတင်တဲ့ ဇယားပါ။ program run ပုံကို ကွန်ပျူတာ မသုံးဘဲ ကိုယ်တိုင် လိုက်ကြည့်ဖို့၊ output ကို ကြိုခန့်မှန်းဖို့နဲ့ logic error တွေ ရှာဖို့ သုံးပါတယ်။ Debugging နည်းလမ်းများ မှာ သင်ပါတယ်
- Sentinel value
- ဒေတာ ထည့်တာ ပြီးပြီလို့ ပြတဲ့ အထူး တန်ဖိုး: ဒေတာ ထည့်တာ ပြီးဆုံးကြောင်း မှတ်သားပေးတဲ့ အထူး input တန်ဖိုးပါ (ဥပမာ -1 ဒါမှမဟုတ် STOP)၊ conditional loop က ဘယ်အချိန် ရပ်ရမလဲ သိစေပါတယ်။ မှန်ကန်တဲ့ ဒေတာ အပိုင်းအခြား ပြင်ပကနေ ရွေးပါတယ်။ လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံများ မှာ သင်ပါတယ်
Ethics (ကျင့်ဝတ်ဆိုင်ရာ အချက်များ)
- Digital divide
- နည်းပညာ ရနိုင်သူနဲ့ မရနိုင်သူကြား ကွာဟချက်: စက်ပစ္စည်း၊ အင်တာနက် ချိတ်ဆက်မှုနဲ့ digital ကျွမ်းကျင်မှု ရှိသူတွေနဲ့ မရှိသူတွေကြား ကွာဟချက်ပါ။ ကွန်ပျူတာရဲ့ အကျိုးကျေးဇူးတွေက ဝင်ငွေ၊ ပထဝီနဲ့ အသက်အရွယ်အလိုက် မညီမျှ ဖြန့်ဝေနေတာမို့ တရားမျှတမှု မေးခွန်းတွေ ပေါ်လာပါတယ်။ နေ့စဉ်ဘဝထဲက ကွန်ပျူတာ မှာ သင်ပါတယ်
- Quantum computing
- qubit သုံးတဲ့ ကွန်ပျူတာ နည်းပညာ: superposition နဲ့ entanglement ကို သုံးပြီး ဖြစ်နိုင်ခြေ အများကြီးကို တစ်ပြိုင်နက် စူးစမ်းတဲ့ qubit တွေနဲ့ တွက်ချက်တာပါ။ simulation မှာ တိုးတက်မှုကြီးတွေ ပေးနိုင်မယ့်အပြင် လက်ရှိ encryption ကိုလည်း ခြိမ်းခြောက်ပါတယ်၊ လက်တွေ့ စက်တွေကတော့ အကန့်အသတ် ရှိနေသေးပါတယ်။ နေ့စဉ်ဘဝထဲက ကွန်ပျူတာ မှာ သင်ပါတယ်
- Augmented reality
- အစစ်အမှန် ကမ္ဘာပေါ် digital အချက်အလက် ထပ်ပြခြင်း: ဖုန်း ဒါမှမဟုတ် headset ကနေ အစစ်အမှန် ကမ္ဘာပေါ်မှာ digital အချက်အလက်တွေ ထပ်ပြတာပါ၊ လမ်းပေါ်က လမ်းညွှန် မြှားတွေလိုပါပဲ။ စက်က အသုံးပြုသူ မြင်သမျှကို မှတ်တမ်းတင်နိုင်တာမို့ ကိုယ်ရေးလုံခြုံမှု (privacy) မေးခွန်းတွေ ပေါ်လာပါတယ်။ နေ့စဉ်ဘဝထဲက ကွန်ပျူတာ မှာ သင်ပါတယ်
- Virtual reality
- headset နဲ့ ဝင်ရောက်ရတဲ့ ကွန်ပျူတာ ကမ္ဘာ: အသုံးပြုသူရဲ့ အစစ်အမှန် ကမ္ဘာ မြင်ကွင်းကို အစားထိုးတဲ့ headset ကနေ ခံစားရတဲ့ ကွန်ပျူတာ အပြည့်အဝ ဖန်တီးထားတဲ့ ပတ်ဝန်းကျင်ပါ။ လေ့ကျင့်ရေး၊ game နဲ့ ကုထုံးမှာ သုံးပါတယ်။ နေ့စဉ်ဘဝထဲက ကွန်ပျူတာ မှာ သင်ပါတယ်
ကိုက်ညီတဲ့ ဝေါဟာရ မတွေ့ပါဘူး။ စကားလုံး ပိုတိုတိုနဲ့ ရှာကြည့်ပါ၊ ဒါမှမဟုတ် ခေါင်းစဉ်အားလုံးကို ကြည့်ပါ။