ARRAKIS

Arrakis-ը յուրահատուկ ծրագիր է, որը երբեք մտադրություն չենք ունեցել սկսել Ակադեմիայում։ Այս ծրագրի կարիքն ու սկիզբը սկսվեց այն բանից հետո, երբ Sandbox դեպարտամենտում մենք բախվեցինք աշխատող ուսանողների կրթվելու մեծ ձգտմանը, բայց միևնույն ժամանակ` ժամանակի սղությանը։

Futuristic digital landscape with floating islands labeled 'Computer Science', 'Land of Fundamentals', and 'Harbor of Mastery', surrounded by spaceships, floating text messages, and digital towers.
Ամենաերկար ծրագիրը
2 ժամ օրական

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

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

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

Arrakis

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

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)

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