Առարկայական ծրագրի չափորոշիչ

Ալգորիթմներ և տվյալների կառուցվածքներ

CS-111 դասընթացը սովորեցնում է գնահատել ալգորիթմների ժամանակային և տարածական բարդությունը, ընտրել օպտիմալ տվյալների կառուցվածք ցանկացած խնդրի համար, և պատրաստվել տեխնիկական հարցազրույցների՝ Leetcode-յան պրակտիկայի միջոցով։

Կուրս11-րդ դասարան (2-րդ կուրս)
Կիսամյակ2026, աշնանային
ԿատեգորիաCore · Քննական
Ընդհանուր ժամեր32
ԴասախոսԱրմեն Մարջինյան
01

Ընդհանուր տվյալներ

Ֆակուլտետ
Համակարգչային գիտություն
Ժամկետ
2026, աշնանային կիսամյակ
Ուսումնական տարի
11-րդ դասարան (2-րդ կուրս)
Տեսակ
Քննական
Կատեգորիա
Core
Դասախոս
Արմեն Մարջինյան
Ծրագրի հեղինակ
Արմեն Մարջինյան
Ժամաքանակ
32
Նախադրյալներ
Python ծրագրավորման լեզու, Համակարգչային ճարտարապետություն
02

Դասախոսի տվյալներ

ԱՄ

Արմեն Մարջինյան

marjinyan95@gmail.com

Կրթություն, գիտական աստիճան՝ ՀՊՃՀ, ԵՊՀ։ Ընդունելության ժամեր՝ չորեքշաբթի, ուրբաթ 15:00–18:00։

Քոլեջում կարդացվող դասընթացներ՝ Համակարգչային գիտության ներածություն, Համակարգչային ճարտարապետություն, Ալգորիթմներ և տվյալների կառուցվածքներ, IB Diploma Program – CS, IB Diploma Program – Theory of Knowledge (TOK)։

Մասնագիտական հոդվածներ, աշխատություններ՝ «JavaScript Ultimate» (մենագրություն, 620 էջ, 2025թ.), «React, Next.js» (մենագրություն, 620 էջ, 2024թ.), հոդվածներ mjs lab-ում (mjs.am

03

Ծրագրի նկարագրություն

«Ալգորիթմների և տվյալների կառուցվածքներ» առարկան թույլ կտա ուսանողներին վերլուծել և հասկանալ՝ ի՞նչ է նշանակում գրել օպտիմալ, արագ աշխատող և որակյալ կոդ։ Ինչպես ենք հասկանում՝ որ կոդն է օպտիմալ, կամ ինչպես ենք չափում հիշողության օգտագործումը։ Առարկան նպատակ ունի ուսանողներին ծանոթացնել արդյունավետ հաշվողական մտածողության (computational thinking) և խնդիրների լուծման ալգորիթմների մշակման հիմնարար սկզբունքներին։

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

04

Առարկայի դերը «Համակարգչային գիտություն» ծրագրում

«Ալգորիթմների և տվյալների կառուցվածքներ» առարկան հանդիսանում է ամբողջ կրթական ծրագրի առանցքային և հիմնարար բաղադրիչը. այն ծառայում է որպես կամուրջ տեսական մաթեմատիկական մոդելների և արդյունավետ ծրագրային լուծումների միջև։

01

Հաշվողական մտածելակերպի ձևավորում

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

02

Բազային հենք հաջորդող դասընթացների համար

Ծրագրում ներառված թեմաները (ռեկուրսիվ կապեր, hashing, ծառեր և գրաֆներ) անմիջական նախապայման և հիմք են հանդիսանում այնպիսի բարդ առարկաների յուրացման համար, ինչպիսիք են՝ «Տվյալների բազաներ», «Մեքենայական ուսուցում» և այլն։

03

Ծրագրավորման լեզուների ներքին դետալների ընկալում

Տվյալների կառուցվածքների խորը ուսումնասիրությունը թույլ է տալիս հասկանալ, թե ինչպես են ժամանակակից ծրագրավորման լեզուներն ու framework-երն աշխատում ներսից. ուսանողն արդեն գիտակցում է, թե ինչ է կատարվում հիշողության մեջ դինամիկ զանգված, Map, Dict կամ Set հայտարարելիս։

04

Տեխնիկական հարցազրույցների պատրաստվածություն

Դասընթացը հանդիսանում է գլխավոր նախապայմանը միջազգային և տեղական առաջատար տեխնոլոգիական ընկերությունների Technical Interviews / Coding Challenges հաջողությամբ հանձնելու համար՝ զարգացնելով pattern recognition հմտությունը։

05

Ամփոփիչ գնահատման կարգ

Առարկան քննական է, ենթախումբը՝ core։ Առաջին երկու միջանկյալ քննությունը տեղի կունենա portal-ով (Multiple Choice հարցեր, Leetcode-յան խնդիրների լուծում, տրված Data Structure-ի ամբողջական կամ մասնակի իմպլեմենտացիա)։ Երրորդ ամփոփիչ քննությունը տեղի կունենա տեխնիկական հարցազրույցի ֆորմատով. ուսանողը կընտրի տոմսը՝ տեսական հարցերով, իմպլեմենտացիայի առաջադրանքներով և leetcode-յան խնդիրներով։

25%
Միջանկյալ քննություն 1 · Portal
25%
Միջանկյալ քննություն 2 · Portal
50%
Ամփոփիչ · Տեխնիկական հարցազրույց
06

Գնահատման սանդղակ

C կարգ50 – 70
Տիրապետել
Տվյալների կառուցվածքների դերին ու նշանակությանը, հասկանալ դրանց կիրառման դաշտը և առանձնահատկությունները։
Կիրառել
Պատրաստի տվյալների կառուցվածքներ խնդրի լուծման համար։
Իրականացնել
Պարզ տվյալների կառուցվածքների լրիվ կամ մասնակի մշակում։
Լուծել
Պարզագույն ալգորիթմական խնդիրներ։
B կարգ71 – 90
Տիրապետել
Տվյալների կառուցվածքների և ալգորիթմների բարդությունների վերլուծության սխեմաներին։
Կիրառել
Պատրաստի տվյալների կառուցվածքներ խնդրի լուծման համար։
Իրականացնել
Տարբեր բարդության տվյալների կառուցվածքների մշակում։
Լուծել
Պարզ և միջին բարդության ալգորիթմական խնդիրներ։
A կարգ91 – 100
Տիրապետել
Տվյալների կառուցվածքների և ալգորիթմների բարդությունների վերլուծության սխեմաներին, բարդությունների ապացույցին։
Կիրառել
Պատրաստի տվյալների կառուցվածքներ և խնդիրների լուծման մեթոդներ։
Իրականացնել
Բարդ տվյալների կառուցվածքների մշակում։
Լուծել
Միջինից բարդ ալգորիթմական խնդիրների լուծման կարողություն։
07

Նվազագույն վերջնարդյունքներ

Ուսանողը պետք է իմանա

01

Ասիմպտոտիկ վերլուծության հիմունքները — ինչ է Big O notation-ը, և ինչպես են գնահատվում ալգորիթմների ժամանակային (Time) ու տարածական (Space) բարդությունները։

02

Ռեկուրսիվ կապերի լուծման մեթոդները — ինչպես գնահատել ռեկուրսիվ ալգորիթմների բարդությունը Master Theorem-ի և recursion tree-ի միջոցով։

03

Տվյալների հիմնարար կառուցվածքների ներքին դետալները — գծային (Linked Lists, Stack, Queue) և ոչ գծային (Trees, Hash Tables) կառուցվածքների աշխատանքի սկզբունքները։

04

Տեսակավորման և որոնման հիմնական մեթոդները — տարբեր բարդության ալգորիթմների աշխատանքի տրամաբանությունը և կիրառության սահմանները։

05

Ալգորիթմական խնդիրների լուծման մոտեցումները — Divide and Conquer, Sliding Window, Two Pointers…

Ուսանողը պետք է կարողանա

01

Ընտրել օպտիմալ տվյալների կառուցվածքը — ճիշտ որոշել՝ որտեղ կիրառել array, linked list, priority queue, stack, queue, hash table, Binary Tree, AVL, RB-Tree։

02

Իրականացնել և օպտիմալացնել ալգորիթմներ — ինքնուրույն գրել տեսակավորման, որոնման և ծառերի շրջանցման (BFS, DFS) ալգորիթմները։

03

Ճանաչել խնդիրների pattern-ները — տեխնիկական հարցազրույցների ժամանակ ճիշտ կողմնորոշվել և անծանոթ պահանջը վերածել ստանդարտ ալգորիթմական լուծման։

04

Վերլուծել պատրաստի կոդի արդյունավետությունը — հասկանալ ներկառուցված ֆունկցիաների (Map, դինամիկ զանգվածի resize) ներքին աշխատանքը և խուսափել ոչ արդյունավետ լուծումներից։

08

Գրականություն և այլ նյութեր

PrimaryIntroduction to Algorithms — Cormen
SecondaryGrokking Algorithms — Aditya Bhargava
09

Դասերի ձևաչափ

Ձևաչափ

1. Տեսական դասախոսություններ
2. Գործնական դասեր՝ խնդիրների լուծման կենտրոնացմամբ

Քննության ձևաչափ

Առաջին երկու քննությունը՝ portal, երրորդը՝ տեխնիկական հարցազրույցի ֆորմատով, տոմսի ընտրությամբ։

10

Նախնական գիտելիքներ

Առարկան սովորելուց առաջ ակնկալվում է.

Python-ով պարզագույն ֆունկցիաներ գրելու հմտություններ
List, tuple, dict, set-ի հետ վարժ աշխատելու հմտություններ
Կլասների մշակման հմտություններ
Ծրագրի աշխատանքի դետալների հիմունքային ընկալում՝ օպերացիոն համակարգի և hardware-ի տեսակետից
11

Ակադեմիական օրացույց

32Ընդհանուր ժամեր
2Քննական ժամեր
30Վերջնական դասաժամեր
12

Դասընթացի շարունակականություն

Առարկան շարունակվում է նաև երկրորդ կիսամյակում, որտեղ անդրադարձ է արվելու հետևյալ թեմաներին.

Սեգմենտային և պրեֆիքս ծառերԲալանսավորված ծառեր B-Tree, B+Tree Գրաֆների տեսությունՊրիմ, Կրասկալ, Բելման Ֆորդ, Ֆլոյդ Վարշալ, Տարջան, Կոսարաջու BacktrackingGreedy և Dynamic Programming P և NP complete խնդիրներՀաշվարկման տեսություն, վերջավոր ավտոմատներ, Թյուրինգի մեքենա, բարդության տեսություն
13

Եզրակացություն

CS-111 առարկայական ծրագիրը տպավորիչ է թե՛ ակադեմիական խորությամբ, թե՛ մանրամասնությամբ։ Ծրագիրն ակնհայտորեն նախապատրաստում է աշակերտներին միջազգային խոշոր ծրագրավորման ընկերությունների հարցազրույցներին, քանի որ այնտեղ մշտապես առկա են competitive programming-ի տարրեր, օրինակ Leetcode-յան խնդիրների տեսքով։

Ըստ իս՝ թեմաների հաջորդականությունը ճիշտ է ընտրված, վերջնարդյունքները բավական իրատեսական են։ Թեև որոշ դասեր զգալիորեն ծանրաբեռնվածություն ունեն, այնուամենայնիվ վստահ եմ (հաշվի առնելով նաև դասախոսի հանգամանքը), որ այս խնդիրները հաղթահարվելու են։

Ես կառաջարկեի՝ առարկան դասավանդել որևէ ստատիկ տիպավորված լեզվով (C, C++, C#, Java…), բայց ենթադրում եմ Python-ի ընտրությունն այստեղ արդարացված պատճառներ ունի։

ՀՀ
Հ. Հովհաննիսյան, USA
Senior Software Engineer (C#)