Arrakis ծրագրի նկարագրությունը

Picsart Academy-ի կրթական մոդելը աշխատանքով գերծանրաբեռնված դիմորդների համար

Վարդան Գրիգորյան
Picsart Academy
8 min readOct 26, 2023

--

Arrakis-ը յուրահատուկ ծրագիր է, որը երբեք մտադրություն չենք ունեցել սկսել Ակադեմիայում։ Այս ծրագրի կարիքն ու սկիզբը սկսվեց այն բանից հետո, երբ Sandbox դեպարտամենտում մենք բախվեցինք աշխատող ուսանողների կրթվելու մեծ ձգտմանը, բայց միևնույն ժամանակ` ժամանակի սղությանը։ Ուսանողներից պահանջելով օրական 4–6 ժամ ժամանակ` մենք սիրով ծանրաբեռնում էինք գրքերով ու հանձնարարություններով, ինչպես նաև զուգահեռ կազմակերպվող դասընթացներով, սակայն հաճախակի էին դեպքերը, երբ ուսանողները չէին հասցնում տեմպի հետ, որովհետև միաժամանակ աշխատում էին մեկ կամ ավել աշխատավայրերում։ Սա իհարկե հանգեցնում էր հերթական քննությունից արագ կտրվելուն, որովհետև չտրամադրելով բավարար ժամանակ՝ երբեք և ոչ մի դեպքում հնարավոր չէ հաղթահարել Ակադեմիայի բարձր անցողիկ շեմը։ Մենք պահանջում և հորդորում ենք լուրջ տրամադրվել կատարված ընտրությանն ու ներդնել նվազագույն անհրաժեշտ ժամանակը։ Arrakis ծրագիրը ծնվեց այն գերծանրաբեռնված ուսանողների համար, որոնք հնարավորություն չունեն հրաժարվել աշխատելուց, չունեն ժամանակի ճոխություն, բայց շատ մեծ ձգտում ունեն դառնալ լավագույն ինժեներ-ծրագրավորողը։

Ինչու՞ ընտրել Arrakis

Մենք պարզեցրեցինք ուսման ընթացակարգը, նվազեցրեցինք հանդիպումների քանակը, շեշտադրեցինք գործնական աշխատանքները, ինչպես նաև հնարավորություն տվեցինք մասնակցել դասերին կամ կատարել տնային հանձնարարությունները՝ օրական տրամադրելով գոնե 2 ժամ։ Սա, իհարկե, ի տարբերություն Atlas-ի, որտեղ ինտենսիվ դասերի արդյունքում, 13 ամիս անց ուսանողը դառնում է պատրաստ՝ փորձնակի կամ կրտսեր ծրագրավորողի հաստիքի համար և կարող է արագ գտնել աշխատանք, Arrakis-ում պրոցեսը երկարում է ընդհուպ մինչև երեք անգամ։ Այն ուսանողները, որոնք շատ մեծ ցանկություն ու ձգտում ունեն դառնալ լավագույն մասնագետը, բայց չունեն հավելյալ ժամանակի ճոխություն և միաժամանակ պատրաստ են հաճախել Ակադեմիա ոչ թե 13 ամիս, այլ մինչև 3–3.5 տարի, ապա ազատ կարող են դիմել Arrakis ծրագրին։ Մենք հստակ ու թափանցիկ ներկայացնում ենք ծրագրի էությունը, տևողությունը և արդյունքները. դիմորդն ազատ է կատարել իր լավագույն ընտրությունը։ Picsart Academy-ն հայտնի է իր պարզությամբ և անկեղծությամբ։ Մենք եզակի ուսումնահետազոտական կենտրոն ենք, որտեղ երբեք չի ներկայացվել ծրագրավորումը՝ որպես հեշտ և արագ ընկալվող մասնագիտություն։ Մենք նույնիսկ ծրագրավորմանը չենք մոտենում որպես մասնագիտություն, փոխարենը՝ դիտարկում ենք այն որպես արվեստ։ Արվեստը չունի ժամկետներ, այլ ունի ներդրում, եռանդ ու ստեղծարարություն։ Եթե դուք պատրաստ եք ներդնել ձեր առանց այն էլ քիչ ազատ ժամանակը, տարիներ այցելելով Ակադեմիա՝ լավագույն ծրագրավորողը դառնալու համար, ապա Arrakis ծրագիրը լավագույնս մատուցում է բոլոր առարկաները, որոնք Sandbox դեպարտամենտում դասավանդվում են տարբեր մոդելներով՝ ավելի ընդլայնված և պարզեցված մատուցմամբ։

Ծրագրի մանրամասները

Arrakis ծրագիրը ներառում է բոլոր առարկաները, որոնք ուսուցանվում են Sandbox դեպարտամենտում և, մասնավորապես՝ Atlas ծրագրի շրջանակներում։ Arrakis ծրագրի տարբերությունը տևողությունն է և նյութի համեմատաբար պարզեցված մատուցման մոդելը, որը բաշխվում է 12 փոքր փուլերի.

  • Փուլ 1. Linux և C ծրագրավորման լեզու
  • Փուլ 2. Համակարգչային ճարտարապետություն և խորացված C ծրագրավորում
  • Փուլ 3. Համակարգչային ցանցեր և ցանցային ծրագրավորում
  • Փուլ 4. Համակարգային ծրագրավորում (System Programming)
  • Փուլ 5. Բազմահոսքություն (Multithreading)
  • Փուլ 6. Բարձր մակարդակի ծրագրավորման լեզու
  • Փուլ 7. Ծրագրավորման պարադիգմների ներածություն (Introduction to Programming Paradigms)
  • Փուլ 8. Օբյեկտ-կողմնորոշված վերլուծություն և նախագծում (Object-Oriented Analysis and Design)
  • Փուլ 9. Ծրագրավորման պարադիգմաներ. Ֆունկցիոնալ և մետածրագրավորում
  • Փուլ 10. Ընտրված ծրագրավորման լեզվի ստանդարտ գրադարանի տարրերն ու իրականացման դետալները (The Standard Library and Its Implementation Details)
  • Փուլ 11. Տվյալների մոդելավորում և տվյալների ճարտարապետություն
  • Փուլ 12. Ծրագրային ապահովման նախածգում (Software Design)

Ավելի փոքր բաժանված փուլերը հնարավորություն են տալիս ուսանողներին ավելի օպտիմալ և պարզեցված մոդելով նվաճել համակարգչային գիտության և ծրագրավորման անհրաժեշտ և բավարար հիմունքները։

Փուլ 1. Linux և C ծրագրավորման լեզու

Առաջին փուլի ընթացքում ուսանողները ձեռք են բերում Linux միջավայրի հետ աշխատանքի բազային հմտություններ։ Սկսելով ամենապարզ թեմաներից՝ ինչպիսիք են տերմինալի հետ աշխատանքը, բազային հրամաններն ու vim տեքստային խմբագիրը, ուսանողներն անցնում են C ծրագրավորման լեզվի հիմունքներին։ Ծանոթանալով C լեզվի կարևոր բաղկացուցիչներին՝ ինչպիսիք են փոփոխականները, զանգվածները, ցուցիչները, պայմանական գործողությունները, ցիկլերն ու ֆունկցիաները, ուսանողները շարունակում են ուսումը՝ ցածր մակարդակի դետալների մեջ թաթախվելով երկրորդ փուլում։

Փուլ 2. Համակարգչային ճարտարապետություն և խորացված C ծրագրավորում

Այս փուլում ուսանողները խորանում են համակարգչային ճարտարապետության հիմունքների մեջ, միաժամանակ դիտարկելով C լեզվի առաջին փուլում բոլոր անցած թեմաների ցածր մակարդակի ներկայացումների հետ։ Ավարտելով թեմաները՝ ուսանողները շարունակում են խորացնել գիտելիքները C լեզվի այլ թեմաներում՝ ստրուկտուրաներ, union-ներ, դինամիկ երկչափ զանգվածներ, հիշողության կազմակերպման մեխանիզմներ և այլն։

Փուլ 3. Համակարգչային ցանցեր և ցանցային ծրագրավորում

Համակարգչային ցանցերի բազային գիտելիքներն առանցքային կարող են դառնալ այնպիսի նախագծերում, որտեղ ցանցային հաղորդակցությունը կենտրոնական է։ Օրինակ՝ ցանկացած հաղորդակցման ծրագիր (Telegram, Messenger, WhatsApp), ֆայլերի սինխրոնիզացիայի համակարգեր (Dropbox, Google Drive), Multiplayer համակարգչային խաղեր և այլն։ Համակարգչային ցանցերի բազային գիտելիքները հնարավորություն են տալիս շատ արագ թաթախվել նմանատիպ նախագծերում և կարողանալ ինքնուրույն ստեղծել համակարգեր, որոնք ակտիվ շահագործում են համացանցը։

Փուլ 4. Համակարգային ծրագրավորում (System Programming)

Անկախ ընտրված մասնագիտացումից և ծրագրավորման լեզվից՝ գրեթե բոլոր ծրագրավորողներն այս կամ այն չափով առնչվում են օպերացիոն համակարգի և ցածր մակարդակի հասկացությունների հետ։ Համակարգային ծրագրավորումը հնարավորություն է տալիս հստակ պատկերացնել ոչ միայն աբստրակտ համակարգերի կատարման դետալները, այլև փոփոխել կամ ընդլայնել նման համակարգերը։ Համակարգային ծրագրավորում ուսումնասիրելիս՝ ծրագրավորողները սկսում են հստակ պատկերացնել, թե ինչ են իրենցից ներկայացնում ֆայլերը, ինչպես է օպերացիոն համակարգը կատարում ծրագրերը, ինչպես է հաջողվում միաժամանակ աշխատել մի քանի ծրագրի հետ, ինչ աբստրակցիաներ են կիրառվում ցանցային հաղորդակցությունն ապահովելու համար և շատ այլ համակարգային դետալներ։

Փուլ 5. Բազմահոսքություն (Multithreading)

Բազմահոսք ծրագրավորումը հնարավորություն է տալիս օպտիմիզացնել ծրագրի աշխատանքը՝ ներդնելով տվյալների մշակման և ինստրուկցիաների կատարման մշակման լրացուցիչ հոսքեր։ Սա հնարավորություն է տալիս զուգահեռ կատարել մի քանի գործողություններ։ Որոշ ծրագրերում բազմահոսքությունն առանցքային է, օրինակ՝ գրաֆիկական ինտերֆեյս պարունակող ծրագրերը։

Փուլ 6. Բարձր մակարդակի ծրագրավորման լեզու

Այս փուլի ընթացքում ուսանողներն ընտրում են մեկ կամ մի քանի բարձր մակարդակի ծրագրավորման լեզուներ՝ խորացված ուսումնասիրելու համար։ Ուսանողները կարող են ընտրել C++, Java, Kotlin, JavaScript, Python, Swift լեզուներից մեկը կամ մի քանիսը՝ ըստ ցանկության։

Փուլ 7. Ծրագրավորման պարադիգմների ներածություն (Introduction to Programming Paradigms)

Ծրագրավորման լեզվի ուսումնասիրությունն առավելապես օգտակար է անմիջապես նախագծերի վրա կիրառման, ինչպես նաև ծրագրային ապահովման նախագծման կարևոր բաղկացուցիչների և մոտեցումների ուսումնասիրության հետ մեկտեղ։ Այս փուլի ընթացքում կատարվում է պարզ ներածություն դեպի ծրագրավորման պարադիգմաներ, որը նախապատրաստում է ուսանողներին հաջորդ փուլի համար։

Փուլ 8. Օբյեկտ-կողմնորոշված վերլծություն և նախագծում (Object-Oriented Analysis and Design)

Մեծ ծրագրեր ստեղծելիս՝ միայն ծրագրավորման լեզվի իմացությունը բավարար չէ։ Բարձր մակարդակի ծրագրավորման լեզվի տիրապետելով՝ ուսանողները կկարողանան լուծել պարզ խնդիրներ, բայց երբ հերթը հասնում է մեծ ծրագրեր ստեղծելուն, անհրաժեշտ է լինում կիրառել նախագծողական մտածելակերպ, կարողանալ ամբողջ նախագիծը բաժանել առանձին անկախ բաղկացուցիչների, սահմանել ճիշտ ինտերֆեյսներ։ Բարձր մակարդակի ծրագրավորման լեզուներից շատերը օբյեկտ-կողմնորոշված են, հետևաբար լեզուներն օգտագործելու համար՝ առանցքային է հասկանալ, թե ինչ է օբյեկտ-կողմնորոշված ծրագրավորումը։ Բացի դա, օբյեկտ-կողմնորոշված նախագծումը սովորեցնում է խնդիրների լուծման մեխանիզմներ, որոնք կենտրոնական են մեծ նախագծերի իրականացման ժամանակ։ Շատ դեպքերում, օբյեկտ-կողմնորոշված նախագծման հմտությունների շնորհիվ, ծրագրավորողները կարողանում են ստեղծել վերաօգտագործվող մոդուլներ և ստիպված չեն լինում կրկնել նույն լուծումները մեկ կամ մի քանի նախագծերի տարբեր կտորներում։

Փուլ 9. Ծրագրավորման պարադիգմաներ. Ֆունկցիոնալ և մետածրագրավորում

Այս փուլում ուսանողներն արդեն պատկերացնում են ծրագրավորման պարադիգմաների հիմնական տարբերությունները և սկսում են խորանալ կոնկրետ պարադիգմաների մեջ՝ դիտարկելով գործնական օրինակներ ֆունկցիոնալ և մետածրագրավորման պարադիգմաներում։ Տարատեսակ մոտեցումներն ու պարադիգմաները ընդլայնում են ուսանողների մտածելակերպը և հնարավորություն տալիս լուծել ավելի բազմաշերտ խնդիրներ՝ ստեղծելով կոմպլեքս ծրագրային համակարգեր։

Փուլ 10. Ընտրված ծրագրավորման լեզվի ստանդարտ գրադարանի տարրերն ու իրականացման դետալները (The Standard Library and Its Implementation Details)

Ծրագրավորման լեզվի ստանդարտ գրադարանը պարունակում է մի շարք գործիքներ և տվյալների կառուցվածքներ, որոնց ուսումնասիրությունն այս փուլում կատարվում է ոչ միայն ճանաչողական նպատակով, այլև դիտարկվում է դրանց իրականացման դետալները։

Փուլ 11. Տվյալների մոդելավորում և տվյալների ճարտարապետություն

Գրեթե բոլոր ծրագրերն օգտվում են տվյալների բազաների կազմակերպման համակարգերից, օրինակ՝ MySQL, MongoDB, PostgreSQL։ Սրանք համակարգեր են, որոնք հնարավորություն են տալիս առավելագույնս էֆեկտիվ պահպանել և մշակել տվյալները, որոնք ակտիվ օգտագործվում են ծրագրերի կողմից։ Տվյալների բազաների պահպանման մեխանիզմները, տվյալների մոդելավորման հիմունքներն ու տվյալների արագ մշակումը կարևոր բաղկացուցիչներ են ծրագրավորողների կարիերայում։ Այս թեմաները պատկերացնելը կարևոր դեր կարող է խաղալ կարիերայի հետագա զարգացման համար, ինչպես նաև հնարավորություն է տալիս ավելի ճկուն լինել տվյալների պահպանման համակարգի ընտրության հարցում։ Այս փուլի ընթացքում ուսանողները ոչ միայն ծանոթանում են տարատեսակ տվյալների բազաների համակարգերին, այլև խորանում են տվյալների մոդելավորման և ընդհանուր ճարտարապետության հիմունքներում։

Փուլ 12. Ծրագրային ապահովման նախագծում (Software Design)

Ծրագրային ապահովման նախագծումը ներառում է գրեթե բոլոր թեմաները, որոնց բախվել են ուսանողները նախորդ փուլերին։ Այս փուլի ընթացքում ուսանողները ծանոթանում են ծրագրային ապահովման նախագծման մոտեցումներին, կիրառում են ծրագրավորման պարադիգմաները, աշխատում իրական նախագծերի վրա։

Լեկցիաներ և գործնական աշխատանք

Քանի որ Arrakis-ում ուսանողները սովորում են համեմատաբար ընդլայնված ծրագրով, լեկցիաներին հաջորդում են գործնական հանդիպումները, իսկ որոշ դեպքերում՝ լեկցիան և գործնականը համաձուլված են մեկ հանդիպման ընթացքում։ Սա հնարավորություն է տալիս ուսանողներին տեղում ծանոթանալ նյութին և անմիջապես հմտանալ գործնական առաջադրանքների կատարմամբ։

Հանդիպումները միջինում տևում են երկու ժամ. այստեղ հաշվի է առնվում, որ ուսանողները մոտենում են Ակադեմիա աշխատանքից հետո, որի արդյունքում դասին կենտրոնանալը ոչ միշտ է արագ ստացվում։ Դասախոսները կամ պրակտիկայի ղեկավարները փորձում են հնարավորինս ակտիվ պահել դասապրոցեսը։ Լեկցիայի ընթացքում դասախոսը փոխանցում է նյութի հիմունքային և առանցքային կտորները։ Լեկցիային ուսանողները ներկայանում են տետրերով, որտեղ կատարում են անհրաժեշտ նշումները։

Գործնական աշխատանքին դասախոսը կամ պրակտիկայի ղեկավարը ներկայացնում է խնդիրը, բացատրում հիմնական դրույթները և տալիս նախապես սահմանված ժամանակ այն լուծելու համար։ Որոշ ուսանողների մոտ արագ է ստացվում լուծելը, որոշների մոտ ընդհանրապես չի ստացվում, ինչը ընկճվելու առիթ չէ, այլ ընդհակառակը՝ պրակտիկայի ղեկավարի նպատակը խնդրի լուծման մոտեցումներն ու ընդհանուր լուծումը դուրս բերելը բացատրելն է։ Տրված ժամանակը լրանալուն պես, պրակտիկայի ղեկավարը սկսում է բացատրել խնդրի լուծման մոտեցումները՝ երբեմն կարճ լեկցիա կարդալով տրված թեմայի շուրջ, ցուցադրելով օրինակներ պրոյեկտորի կամ գրատախտակի միջոցով։ Լուծման մոտեցումները բացատրելուց հետո կրկին տրվում է ժամանակ, որպեսզի ուսանողները սկսեն կիրառել մոտեցումները՝ խնդիրը լուծելու համար։ Ուսանողներին խորհուրդ է տրվում կատարել նշումներ, որոնցից կօգտվեն հետագայում՝ կրկնության համար։

Թեստեր և քննություններ

Arrakis ծրագրի շրջանակներում թեստավորումները տեղի են ունենում ուսանողների ինքնաստուգման համար։ Թեստավորումների հաճախականությունը հստակ սահմանված չէ և սովորաբար կազմակերպվում է ըստ դասախոսի որոշման։ Օրինակ՝ երբ ուսանողները շարունակաբար անցել են մի քանի նոր թեմաներ, դասախոսը փորձում է թեստավորման միջոցով դուրս բերել նյութի յուրացման մակարդակը և ըստ անհրաժեշտության կազմակերպել նյութի ամփոփման դասեր։

Քննությունները կազմակերպվում են յուրաքանչյուր փուլի ավարտին։ Փուլից փուլ անցնելը կազմակերպվում է քննությունների միջոցով, որտեղ բարձր անցողիկ շեմը հաղթահարելու դեպքում ուսանողները տեղափոխվում են հաջորդ փուլ։ Անցողիկը չհաղթահարելու դեպքում ուսանողները կրկնում են նույն փուլը կամ ձևավորում են նոր ենթախումբ, որտեղ սկսում են համեմատաբար ավելի արագ կրկնել փուլի առանցքային թեմաները։ Բացառիկ սցենարները, երբ ուսանողները քննությունից հավաքում են շատ ցածր միավոր, կազմակերպվում է անհատական հանդիպում ուսանողի հետ։ Հանդիպման ընթացքում կրթական անձնակազմը փորձում է դուրս բերել պատճառները կամ ըստ անհրաժեշտության՝ մատնանշել ուսանողին, թե որքան կարևոր է չբացակայել ու առանց շեղվելու կատարել առաջադրանքները։ Մենք երբեմն հանդիպում ենք եզակի ուսանողների մոտ ոչ նպատակասլաց տրամադրվածություն, հաճախակի բացակայություններ կամ ընթերցանության և գործնական աշխատանքների ոչ պատշաճ կատարում։ Նման դեպքերում հնարավորինս հիմնավորված նշվում է բոլոր հետևանքները, որոնց կբախվի ուսանողը նույն տեմպով շարունակելու դեպքում։ Կարևոր է հիշել, որ կատարելով ընտրություն և ընդունվելով Ակադեմիա՝ անհրաժեշտ է կենտրոնանալ ուսման վրա և ներդնել անհրաժեշտ ժամանակը՝ նպատակին հասնելու համար, առավել ևս, երբ այդ ժամանակը շատ ավելի քիչ է ի համեմատություն այլ ծրագրերի։ Եթե ուսանողը չի գիտակցում կարևորությունն ու խստությունը, ինչը պատահում է, երբ ոլորտի մասին ունենում են սխալ պատկերացումներ կամ ծրագրավորման ուսումը ընտրում են միայն՝ շուկայում արծարծվող և շահարկվող բարձր աշխատավարձը ստանալու համար։

Քննության անցողիկ շեմը բարձր է, որովհետև Ակադեմիան հավատարիմ է իր արժեքներին և բացառում է կեղծ կրթությունը։ Մեզ համար կարևորագույն է թեմայի ամբողջական յուրացումը՝ առանց բացթողումների։ Ակադեմիայում գերազանց արդյունքը համարվում է բավարար արդյունք։ Շրջանավարտներն ավարտելով Ակադեմիան և մուտք գործելով ոլորտ՝ ներկայացնում են խորը հիմունքային կրթություն ստացած, գործնական հմտություններով հարուստ սկսնակ մասնագետներ, որոնք շատ դեպքերում չեն զիջում ոլորտում աշխատող նույնիսկ փորձառու ծրագրավորողներին։ Նման արդյունքի հասնում ենք միայն հետևողական, խիստ և ամբողջական կրթության արդյունքում։

Picsart Academy-ն բացառիկ է կրթական աշխարհում, իսկ Arrakis ծրագիրը այն միակ փարոսն է, որը հնարավորություն է տալիս նույնիսկ աշխատանքով ամենածանրաբեռնված ուսանողներին ստանալ որակյալ կրթություն։ Այստեղ միակ բացասական կտորը ծրագրի տևողությունն է։ Քանի որ ուսանողները հնարավորություն չունեն օրական շատ ժամանակ տրամադրել դասերին, ստիպված են ավելի երկար տևող ծրագրով սովորել։ Մենք կենտրոնանում ենք հիմունքային կրթության վրա, մեզ համար կենտրոնական է Computer Science-ը, մենք ահռելի մեծ ներդրում ենք անում ուսանողի գործնական հմտությունների վրա՝ միաժամանակ աշխատելով նրանց նախագծողական և ստեղծարարական մտածելակերպի վրա։ Այս ամենին ավելանում է նաև արդար և անկեղծ մոտեցումը, ըստ որի՝ լավագույն մասնագետը ոչ թե բավարար միավորներ ստացած և արհեստական ժամկետներում ավարտած ուսանողն է, այլ բոլոր դասընթացները գերազանց ավարտած սուպերծրագրավորողը։ Այս է պատճառը, որ մենք անվանում ենք Picsart Academy-ն նոր սերնդի համալսարան։

--

--