ပြဿနာဖြေရှင်းခြင်းရည်ရွယ်ချက်အတွက် ပရိုဂရမ်မင်းကို ကျွန်ုပ်တို့အသုံးပြုသောအခါ ဒေတာကို  Data Structures တွင် သိမ်းဆည်းရမည်ဖြစ်ပြီး၊ သို့မှသာ ဒေတာပေါ်ရှိလုပ်ဆောင်မှုများသည် တိကျသော output အမျိုးအစားကို ထုတ်ပေးနိုင်မည်ဖြစ်ပါသည်။ ဥပမာအားဖြင့် အကျိုးအမြတ်မယူသောသူတစ်ဦးသည် ရန်ပုံ‌ငွေအတွက် အခက်အခဲရှိနေကာ အလှူငွေများ တိုးလာရန် လိုအပ်သည်ဟု မြင်ယောင်ကြည့်ပါ။ ဘယ်သူက အလှူငွေထည့်ဝင်သလဲ ဆိုတာကို အဖြေရှာနိုင်ဖို့ အစီအစဉ်တစ်ခုမှာ သူ့ရဲ့အလှူရှင်တွေကို ခြေရာခံချင်တယ်လို့ ဆုံးဖြတ်ပါတယ်။ အလှူရှင်အမည်၊ နေရပ်လိပ်စာ၊ လှူဒါန်းသည့်ပမာဏ၊ လှူဒါန်းသည့်နေ့စွဲစသည်ဖြင့် သတ်မှတ်ပေးမည့် ပိုင်ဆိုင်မှုများကို ဦးစွာ သတ်မှတ်ရန် လိုအပ်ပါသည်။ ထို့နောက် အကျိုးအမြတ်မယူသောအဖွဲ့အစည်းသည် ၎င်း၏အလှူရှင်များထံ မည်သို့အကောင်းဆုံးဆက်သွယ်ရမည်ကို ဆုံးဖြတ်လိုသောအခါ ၎င်းသည် အကျိုးအမြတ်မယူသည့်အတွက် ပံ့ပိုးပေးသည့် ပျမ်းမျှအလှူရှင်၏ပုံစံတစ်ခုကို ဖန်တီးနိုင်ပါသည်။ ဥပမာအားဖြင့် လှုူဒါန်းငွေ ၏အရွယ်အစားနှင့် ပမာဏအပေါ်အခြေခံ၍ ပြောခြင်း၊  တည်နေရာ – ၎င်း၏တာဝန်ကို မည်သူက လက်ခံမှုအရှိဆုံးဖြစ်ကြောင်း ပိုမိုကောင်းမွန်စွာ ဆုံးဖြတ်နိုင်စေရန်  လှုူဒါန်းငွေ  ၏အရွယ်အစားနှင့် တည်နေရာသည် အလှူရှင်မော်ဒယ်၏ "ဒေတာ" ဖြစ်ပါသည်။ အကျိုးအမြတ်မယူသောသူများသည် ဤပုံစံကိုအသုံးပြုပါက abstract donor အလှူရှင်ကို ဦးစွာထုတ်ပေးခြင်းဖြင့် အလှူရှင်အစစ်အမှန်များကို ခွဲခြားသတ်မှတ်မည်ဖြစ်သည်။ ဤသည်မှာ Abstract Data အမျိုးအစားများကို အသုံးပြုခြင်း၏ ဥပမာတစ်ခုဖြစ်ပါသည်။ Abstract Data Types နှစ်ခုစလုံးသည် Data Structure (အလှူရှင်များဆိုင်ရာ အချက်အလက်များကို သိမ်းဆည်းသည့်နည်းလမ်း) ကို ထည့်သွင်းစဉ်းစားပြီး ထိုဖွဲ့စည်းပုံအတွက် လိုအပ်သော လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးပါသည်။ ဤ Course တွင် algorithms နှင့် Data Structures တို့၏ သီအိုရီနှင့် လက်တွေ့ ရှုထောင့်များကို ဆွေးနွေးပါမည်။ C/C++ တွင် Data Structures နှင့် algorithms များကို အကောင်အထည်ဖော်ရန်၊ ထို algorithms များကို ပိုင်းခြားစိတ်ဖြာပြီး ၎င်းတို့၏ အဆိုးရွားဆုံး ရှုပ်ထွေးမှုနှင့် လက်တွေ့ကျသော ထိရောက်မှုတို့ကို ထည့်သွင်းစဉ်းစားရန်လည်း လေ့လာပါမည်။

ဒီ Course မှာ ကွန်ပြူတာသိပ္ပံဘာသာရပ်နဲ့ ကွန်ပြူတာ ပရိုဂရမ်ရေးသားခြင်းရဲ့ အခြေခံအကြောင်းတွေကို မိတ်ဆက်ပေးမှာ ဖြစ်ပါတယ်။ CS101 သည် ယခင်ပရိုဂရမ်းမင်းအတွေ့အကြုံမရှိသော ကျောင်းသားများအတွက် အထူးဒီဇိုင်းထုတ်ထားပြီး အခြေခံကျသော အကြောင်းအရာအမျိုးမျိုးကို ထိထိရောက်ရောက် အသုံးပြုနိုင်မည်ဖြစ်ပါသည်။ ဤအကြောင်းအရာများကို သရုပ်ပြရန် ဤ Course သည် Java ကို အသုံးပြုပါသည်။ Java သည် Sun Microsystems (ယခု Oracle) မှ ဖန်တီးထားသော high-level, portable, and well-constructed computer programming language ကွန်ပျူတာပရိုဂရမ်းမင်းဘာသာစကားဖြစ်သည်။ ဆော့ဖ်ဝဲလ်ဖွံ့ဖြိုးတိုးတက်မှုသမိုင်းအကျဉ်းဖြင့် ဤ Course ကို စတင်ပြီး လူသားတို့၏ တွေးခေါ်မှုနှင့် ကွန်ပျူတာပရိုဂရမ်းမင်း၏ ဆက်စပ်ပုံကို ပြသပါသည်။ objects, classes, inheritance, and polymorphism ကဲ့သို့သော object-oriented programming terminology ပရိုဂရမ်းမင်းဝေါဟာရများကို ရှင်းပြထားပါတယ်။ ဤလုပ်ငန်းစဉ်အတွင်း၊ ကျွန်ုပ်တို့သည် ထိုအခြေခံများကို စစ်မှန်သော ပရိုဂရမ်းမင်းဘာသာစကားဖြင့် မည်သို့အကောင်အထည်ဖော်ကြောင်းပြသရန် Java ကို အသုံးပြုပါသည်။ Java ၏ primitive data types, relational operators, control statements, exception handling, and file input/output အကြောင်းအရာများ ပါဝင်ပါသည်။ သင်တန်းပြီးဆုံးပါက ကွန်ပြူတာသိပ္ပံ၏ အခြေခံများနှင့် Java ပရိုဂရမ်းမင်းဘာသာစကားကို သင်နားလည်မည်ဖြစ်သည်။ 

ဤ Course သည် Python 3 ပရိုဂရမ်းမင်းဘာသာစကားဖြင့် အခြေခံပရိုဂရမ်းမင်းသဘောတရားများကို မိတ်ဆက်ခြင်းဖြစ်ပါသည်။ Python 3 သည် ဖတ်ရလွယ်ကူပြီး ရေးရလွယ်ကူသော syntax နှင့် အပိုလုပ်ဆောင်ချက်များကို ပေးစွမ်းနိုင်သော အစွမ်းထက်သော Library Module အပါအဝင် အကျိုးကျေးဇူးများစွာပါရှိသော အဆင့်မြင့် Interpretation Programming Language ဘာသာစကားတစ်ခုဖြစ်သည်။ Python 3 သည် စတင်သူများအတွက် ကောင်းမွန်သော ပရိုဂရမ်ဘာသာစကားတစ်ခုဖြစ်သော်လည်း အင်ဂျင်နီယာနှင့် ဒေတာသိပ္ပံတွင် လက်တွေ့အသုံးချမှုများအတွက်လည်း ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုထားပါသည်။ ဤသင်တန်းသည် ယခင်က ပရိုဂရမ်းမင်းအတွေ့အကြုံ မရှိသူ သို့မဟုတ် အလွန်နည်းသောသူများအတွက် ရည်ရွယ်ပါသည်။ ၎င်းသည် ဒေတာအမျိုးအစားများ(data types)၊ ထိန်းချုပ်စီးဆင်းမှု (control flow)၊ လုပ်ဆောင်ချက်များ(functions)၊ ဖိုင်လုပ်ဆောင်မှုများ(file operations) နှင့်  object-oriented programming ဆန်သော ပရိုဂရမ်ရေးဆွဲခြင်းကဲ့သို့သော အကြောင်းအရာများစွာကို အကျုံးဝင်ပါသည်။ သင်အနေနဲ့ ဤသင်တန်းပြီးဆုံးသောအခါ သင်သည် application အမျိုးမျိုးအတွက် Python ပရိုဂရမ်များကိုဖန်တီးနိုင်ပါလိမ့်မည်။