Profound բաժին 3 (Փոփոխականներ և ամբողջ թվեր) - լրիվ
Ոչ պարտադիր - կարող եք անանուն հայտնել Ձեր կարծիքը դասի վերաբերյալ այստեղ
Տնայինի հետ կապված նշումներ
Տնայինը անելիս մոտեցեք են սկզբունքով որ x խնդիրը լուծելիս դուք մենակ գիտեք են ամենինչը ինչ profound-ը մինչև x-ին հասնելը ներկայացրելա ա։ Երբեմն օգտագործող գործիքները սահմանափակելու դեպքում ա խնդիրը իսկականից օգուտ տալիս։ Օրինակի համար եթե խնդիր լինի որտեղ պետք ա սորտավորել թվերը ու դուք գիտեք sort հրամանի մասին՝ է հա, կարաք օգտագործեք էդ հրամանը, խնդիրը լուծվի՝ բայց արդյունքում նորմալ չեք սովորի էլի։
Եթե քիչ ժամանակ ունեք կարաք բաց թողեք Բաժին 1 - 5, 6, 14 խնդիրները
Բաժին 3 13-ում պետք ա զուտ ցանկացած թիվ տպեք
Բաժին 3-ի վերջին երկու խնդիրները լիքը բզբզալու են, խորհուրդ կտանք շատ ժամանակ տրամադրեք իրենց
Սովորում ենք ինչպես աշխատացնել տարբեր ծրագրեր կախված որոշ պայմաններից։ Նախ ծանոթանում ենք boolean տվյալների տեսակին (True, False արժեքները ընդունող), ապա որոշ համեմատության գործողություններին (==, >, is, …), հետո ծանոթանում ենք if (եթե) բլոկին ու իրա հետ եկող elif, else կտորներին։ Վերջում նայում ենք ներդրված պայմանները (if-ի մեջ if) ու համեմատաբար նոր գրելաձև match-ով։
Գործնական դասերին (հիմիկվա, ու 2023-ի) նայում ենք լրիվ տարբեր խնդիրներ, նենց որ կարող եք երկու դասն էլ նայել։ Նաև հասանելի ա տնայինների քննարկման տեսագրություն 2023-ից։ ### 📺 Տեսանյութեր 1. Տեսադասը 2. Գործնական դաս 3. Տնայինների քննարկում (2023)
Բաժին 5-ը գրելիս կարելի ա օգտվել մենակ if-ից ու else-ից (elif ենթադրեք որ չգիտեք)
Դժվար պայմաններ (7.14)-ը լուծելիս եթե շատ երկար լինի Ձեր լուծումը, մի հատ էլ հետո մտածեք ոնց կարաք ավելի կարճ ու կոկիկ դարձնեք bool փոփոխականներ սահմանելով
Եթե կուզեք կարաք Բաժին 9-ը փորձեք մինչև վերջ անել՝ հաջորդ տնայինում դա լինելու ա
🟡 03 String, list, range, functions on floats/lists
OpenAI-ը ChatGPT-ն ստեղծող կամպանյան ա։ էսօր սովորելու ենք թե ինչ բան ա API-ը ու ոնց կարանք request-ներ անենք (էս թեմային մի քիչ առնչվել ենք deepl-ով թարմանություններ անելիս): Նաև սովորում ենք environment variable-ների գաղափարը (տերմինալի հրամանակ աշխատացնելով ենք անում դասի ժամանակ, ավելի լավ ա dotenv-ով անել, տես վիդեոն)։
OpenAI-ով նայում ենք թե ոնց ա կարելի տեքստեր/նկարներ/աուդիո գեներացնել ու ոնց ա կարելի ֆիքսել թե ինչ կառուցվածքով պատասխանի մեզ api-ը (մի քիչ էլ առնչվում ենք pydantic-ի հետ, որը հետո ենք անցնելու)։
Որպես կիրառություն սարքում ենք ծրագիր որը youtube-ի վիդեո ստանալով քաշում ա իրա տռանսրիպտը (արել էինք նախորդ դասին) ու գենեռացնում ա timestamp-եր (կարևոր թեմաները որ վարկյաններին են սկսվում)
Կրեատիվությունն ա միակ լիմիտը։ Մի աշխարհ բան ա կարելի անել OpenAI-ով (հայերենի համար ավելի լավ ա Claude-ով անել բայց), կարաք գլխից նաև Streamlit app սարքեք։
NumPy-ը հաշվարկներ անելու համար հիմնարար գրադարաններից ա։ Լիքը ուրիշ գրադարաններ որ հետագայում կանցնենք՝ օրինակի համար աղյուսակների հետ աշխատելու համար նախատեսված pandas-ը տակից օգտագործում են numpy-ը հաշվարկային կտորների համար։ Դասին ծանոթանում ենք լիքը ֆունկցիաների, ու հիմնական գաղափարներից սովորում ենք թե ինչ են տրամաբանական ինդեքսավորումը ու broadcasting-ը։ Նաև պի թիվը մոտարկելու այ էս մինի պրոեկտը վերարտադրում ենք numpy-ով ու տեսնում որ ամպի չափ ավելի արագ ա աշխատում ծրագիրը։
Հիմնական նյութում GPT-ի առաջարկած միկրովարժություններ կան որ կարաք անեք զուտ որ ձեռքը բացվի, բայց ավելի կարևոր ա նախորդ տնայինների/պրոեկտների պարտքերը զրոյացնել որ հաջորդ դասից արդեն pandas-ով լիքը պրոեկտներ անելու ժամանակ լինի
Նշում․ Եթե NumPy-ին դեռ չեք ծանոթացել՝ սկզբում դա արեք, նոր եկեք pandas:
Pandas-ը NumPy-ի հիմքով գրված ամենատարածված գրադարաններից ա աղյուսակային տվյալների (պարզ ասած՝ որ տողերով, սյուներով տվյալներ ունենք) հետ աշխատելու համար։ Տեսությունը բաժանված ա երկու մասի, էսօրվա դասին անցնում ենք․
թե ինչ բան են Series-ը ու DataFrame-ը
ի՞նչ ա CSV ֆայլը
ոնց ֆիլտրել տվյալները
ոնց խմբավորել
ինչ ա pivot table-ը
ինչ անել բացակայող արժեքների հետ
ինչ են հրաշք parquet ֆայլերը
էլի մանր մունր մի քանի բան
Որպես օրինակ աշխատում ենք Հայաստանի ընտրողների տվյալների հետ՝ մոտ 3 միլիոն տող ու ինֆորմացիա՝ անուն, ազգանուն, հայրանուն, ծննդյան օր, գրանցման հասցե ․․․։
Չոր ու տխուր աղյուսակները փոխարիներում ենք աչք ուրախացնող գրաֆիկներով։ 1. Նայում ենք մի քանի սլայդ մոտիվացնող վիզուալիզացիայի կարևորությունը ու նրբությունները 2. Ուրախանում ենք լրատվականների խայտառակ վատ տվյալների վիզուալիզացիաներով 3. Վայելում ենք լավ վիզուալիզացիաների օրինակներ, հատկապես Ինֆոքոմի կողմից սարքած 4. Սովորում ենք matplotlib գրադարանը - սկզբում մի քանի հիմնական գրաֆիկ, հետո ոնց իրանց դզել-փչել մեր ուզածով, հետո ոնց ունենալ մի քանի գրաֆիկ ու վերջում արագ անցնում ենք անիմացիաների թեմայի վրայով 5. Plotly - ինտերակտիվ հզոր գրաֆիկներ սարքել ենք սովորում 6. WordCloud - Թումանյանի պոեմի ու Կոմիտասի նամակների տեքստերը փորձում ենք իմի բերել մի նկարի մեջ
Էլ ինչ դատա վերլուծել եթե ոչ կարգին դատա։ ՄԵՄ-ի օգնությամբ (ToDo - անուններով նշել մարդկանց, նաև ՄԵՄ-ից դուրս) կա հավաքած տվյալներ որտեղ 600+ կարգինի տեքստերն են, ու որոշ metadata` վայր, լուսավորություն, դերասաններ, լեզուներ և այլն։
Էսօրվա դասին թեթև վերլուծում ենք էդ տվյալները ու մինի search սարքում։ Կրկնում ենք pandas-ով Excel կարդալը, նախնական տվյալների մաքրման քայլերը, plotly-ի barplot, histogram, density plot-երը, ու նայում ենք ոնց կարանք օգտագործենք ամենալավ անուններից մեկը ունեցող գրադարանը՝ fuzzywuzzy-ն տվյալ տեքստին մոտ տեքստ պարունակող կարգին գտնելու համար։
📌 Նկարագիր Մեր առաջին սովորած ֆունկցիան՝ print-ը։ Շատ լավ օրեր ենք անցկացրել իրա հետ, բայց հիմա ժամանակն ա անցնել իրա պռոֆեսինոլ տարբերակին՝ logging-ին։ Սովորում ենք ՝ 1. ոնց նշել logging-ի մակարդակը 2. մեր ուզած ձևով ֆոռմատավորել log-երը 3. գրել log-երը ֆայլի մեջ, ինչպես նաև կոնսոլում 4. json ֆորմատով պահել լոգերը 5. exception-ներ log անել
Հետո անցնում ենք Command Line Interface(CLI)-եր սարքելու գրադարաններին։ CLI-ների շնորհիվ ա որ կարանք գրենք ուղղակի pip install panir ու ինքը գնա ավտոմատ քաշի բերի մեր ուզած գրադարանը, ոչ թե մենք բացենք կոդը որտեղ install հրամանը օգտագործվում ա ու կոդի մեջ նշենք որ արգումենտ որպես մեր գրադարանի անունը գնա։ Սովորում ենք՝ 1. Argparse-ը (ներկառուցված գրադարան) 2. Fire (ֆունկցիաներին CLI-ով դիմելու համար 1-2 տողանոց լուծում) 3. Click (դեկորատորներով աշախտող ուժեղ գրադարն) 4. Typer (FastAPI-ենց գրադարանը type hint-երի վրա հիմնված)
📺 2023 թվականից տեսագրություն unittest գրադարանը ներկայացնող
Testing
Եթե ուզում ենք կարողանալ մեեեծ պրոեկտների վրա աշխատել, կամ թեկուզ փոքր պրոեկտներում չկորենք կամ պանիկայի մատնվենք երբ նոր մարդիկ սկսեն կոդի վրա աշխատել, շատ կարևոր ա որ ունենանք ամուր ենթակառուցված որը չի թողի կոդում սխալները մուղամով իրանց չար գործը անեն։ Կոդ գրելիս պետք ա մտածենք թե ինչ մուտքերի դեպքում ինչ ելք պետք ա տա, երբ պետք ա էռոռ բարձացնի և այլն, և այլն։ Եթե էդ ամենինչը ֆիքսվի կարող ենք հարմար ստուգել արդյոք էդ մեր դրած պայմանները բավարավում են թե չէ։ Դասին սովորում ենք հենց դա կազմակերպել՝ PyTest գրադարանով (մի քանի րոպե էլ unittest-ին ենք անդրադառնում, 23 թվից ավելի մանրամասն վիդեո կա)։ Սովորում ենք ոնց՝
Սարքել թեստեր
Parametrize: Պարամետրացնել, միանգամից լիքը input-output զույգեր փորձարկելու համար
Fixture: Ոնց նշել ինչ կոդ պետք ա աշխատացվի թեստի աշխատելուց առաջ ու հետո
Mocking: Որոշ ֆունկցիաներ կանցելը փոխարեն ձևացնել որ իրենց ենք օգտագործում որ երկար չսպասենք կամ էլ ուրիշ կոդի սխալի պատճառով մեր թեստը ձախողի
Coverage: Ստուգել թե կոդի որ տոկոսն ա մեր աչքից պլստացել ու առանց թեստի մնացել
CLI Argument-ներով ոնց ընդգծել կոնկրետ ինչ թեստեր/ոնց աշխատացվեն
Ոնց VS Code-ով աշխատացնել թեստերը
Ինչ տեսակներ կան testing-ի (end-to-end, integration, unit test)
Debugging
Վերջում էլ մի քանի րոպեով անդրադառնում ենք VS Code-ի debugger-ից օգվելուց, ու ընդհանուր debugging-ի տեսակներին (ռեզինե բադ, ․․․)։ print-եր շարելը լավ բան ա իհարկե, բայց breakpoint-երին ծանոթանալը կարա հետագայում շատ ժամանակ խնայի։
Աղյուսակային տվյալները csv-ով պահելը երբեմն աշխարհի ամենալավ միտքը չի։ Ոչ էլ parquet պահելն ա միշտ լավագույն տարբերակը։ ՄԼ-ի կոնտեքստում երբ-որ ինչ-որ տվյալներ արդեն կան ու իրանց պետք ա վերլուծենք՝ բան չունեմ ասելու, ընտիր ֆորմատներ են, բայց եթե գնանք ավելի շատ դեպի backend development որտեղ որ պահվում են օրինակի համար կայքում գրանցված մարդկանց տվյալներ՝ այ ըտեղ արդեն կարիք ա գալիս դինամիկ համակարգերի որ թույլ կտան արագ ու էժան պահել ու ստանալ մեր ուզած տվյալները։
Էս նյութում ծանոթանում ենք SQL (Structured Query Language)-ի հետ, ու սովորում հիմնական գրադարանները տվյալների բազաների հետ փոխազդելու։
Ծանոթանում ենք` Select, Where, Order by, Limit, Group by, Join, Subqueries, Having հրամանների հետ ու խառը ֆունկցիաների հետ։
Նշում
Չենք ծանոթանում բազաների տեսակներին, կամ նրան թե ոնց ճիշտ դիզայն անել բազան։ Ուղղակի թեթև ծանոթացում SQL-ին։
🏡 Տնայինի առաջարկ
Բռաուզեռի պատմությունը բազայով ա պահվում ու լոկալ հասանելիություն ունենք իրանց։ Կարաք կարդաք աղյուսակները, վերլուծեք հենց ձեր պատմությունը, եթե հավեսի ընկնեք նույնիսկ կարաք AI API-ի request անեք, հղումները տաք ասեք դնի ինչ-որ կատեգորիայի մեջ (աշխատանք, հանգիստ, Աստված գիտի ինչ ․․․)
Ավելի մանրամասն կարաք նյութի ներքևում (գործնական սեկցիայում) ծանոթանաք միկրո օրինակի ու հղումների համար
---title: "Python, Math, Machine Learning Course" author: "[Metric.am](https://metric.am/)"date: 01/01/2025date-format: "YYYY"---::: {.callout-note}📺 Վիդեոներ՝ [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy) \ 🔗 Դասընթացին միանալու [հղում](https://t.me/metric_academy)Կարգավիճակ (21.08.25) - Python-ը վերջացրեցինք, ամսի 26-ին դաս կունենաք մաքուր կոդ/արխիտեկտուրա թեմայով ու անցնենք մաթեմի։Լեգենդ։- 🟡 Տեսագրությունը ու նյութը կա, բայց մշակման կարիք ունեն (հիմնականում ուղղակի կարճ նկարագիրն ա պակասում)- 🔴 Դեռ չենք արել դասը- ոչմի բան - Ամենինչ վերջնական ա (կամ համարյա վերջնական ա) **Նշում**։ Կայքը ու նյութը պատրաստման փուլում են, հնարավոր է որոշ տեղերում լինեն սխալներ կամ ժամանակավոր նշումներ։:::::: links1. Վիդեոները՝ [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy)2. Դասընթացին միանալու տելեգրամը՝ [Հղում](https://t.me/metric_academy) (կարաք երբ ուզում եք, ինչքան ժամանակով ուզում եք միանալ, ու դե անվճար ա իհարկե)3. Տնայինը՝ [Profound Academy Python Introduction](https://profound.academy/hy/python-introduction)4. Լուծումները՝ [կոդ/նշումներ](https://metric-academy.notion.site/), [վիդեոներ](https://www.youtube.com/watch?v=I7DWIpcTUtc&list=PLfLD2TpGxVUxjP7WnHxAWfbd8LWSY-pix)5. Python-ի խառը լրացուցիչ [նյութեր](https://hayktarkhanyan.notion.site/Python-resources-330beea6e8624afea06ee17485a58c40?pvs=74)6. Ամեն տեսության վերջում դրած [հղումները](https://docs.google.com/spreadsheets/d/1kaA6NjaeiulfkFGeDLhR8ksPT94Rjb8BbrusTJdkUnI/edit?usp=sharing)7. Տնայինի խնդիր առաջարկել որից կուզեք վիդեո սարքենք՝ [հղում](https://forms.gle/hm558vdjmZu7QSjTA)8. Դասընթացի վերաբերյալ կարծիք ու առաջարկներ՝ [հղում](https://docs.google.com/forms/d/e/1FAIpQLSdNKMw-yUTJcFj2fPWuRyCbpO73hndI6aAhLxwFF1_58Nqe7w/viewform?usp=sharing&ouid=101440322298080198570)9. [հղում](https://www.youtube.com/watch?v=OQlByoPdG6c):::::: python# Python::: python## 01 Intro[📚 Ամբողջական նյութը](python/01_intro.ipynb)Առաջին ծանոթություն Python-ի հետ։ 1. Ինչպես արժեքներ տպել - `print`, `sep`, `end`, 2. մեկնաբանութուններ (`comments`) ավելացնել, 3. փոփոխականներ ստեղծել, 4. թվեր և թվաբանական գործողություններ կատարել, 5. մուտք (`input`) ստանալ։ Նաև ծանոթանում ենք տնային անելու հարթակի՝ [Profound](https://profound.academy) հետ:Գործնական դասի ժամանակ էլ արել ենք հետևյալ խնդիրները՝1. Կիսամյակային գնահատականի հաշվիչ2. Քառակուսի հավասարման արմանտների գտնում3. հեշտ էր չէ՞ (2.1)4. ուսանողներ և խնձորներ 2 (4.3)5. թվաբանական պրոգրեսիա (4.1)Դասերի վերաբերյալ կարող եք անանուն հայտնել Ձեր կարծիքը [այստեղ](https://forms.gle/K616aM5cpXsnJmbAA)### 📺 Տեսանյութեր1. [Տեսադասը](https://youtu.be/_C3sP0X7U_E)2. [Profound-ից օգտվելու վիդեո](https://youtu.be/BaQ0-hrcRtI)3. [Գործնական դաս](https://youtube.com/watch?v=Xdb7ivwWqxE)2023 (կարելի ա բաց թողել)1. [Դասախոսությունը](https://youtube.com/watch?v=M5ur3GqsLh0) (մեծամասամբ իմաստ չկա նայելու)2. [Գործնականը](https://youtube.com/watch?v=Fwk1PyLotOg) (մեծամասամբ իմաստ չկա նայելու)### 🏡 Տնային1. Profound [բաժին 1](https://profound.academy/hy/python-introduction/t-python-qWPtjbycGqzmt41dkWyP) (Մուտք և ելք) - լրիվ2. Profound [բաժին 3](https://profound.academy/hy/python-introduction/t-python-qWPtjbycGqzmt41dkWyP) (Փոփոխականներ և ամբողջ թվեր) - լրիվ3. Ոչ պարտադիր - կարող եք անանուն հայտնել Ձեր կարծիքը դասի վերաբերյալ [այստեղ](https://forms.gle/K616aM5cpXsnJmbAA)::: {.callout-note collapse="true" title="Տնայինի հետ կապված նշումներ"}- Տնայինը անելիս մոտեցեք են սկզբունքով որ x խնդիրը լուծելիս դուք մենակ գիտեք են ամենինչը ինչ profound-ը մինչև x-ին հասնելը ներկայացրելա ա։ Երբեմն օգտագործող գործիքները սահմանափակելու դեպքում ա խնդիրը իսկականից օգուտ տալիս։ Օրինակի համար եթե խնդիր լինի որտեղ պետք ա սորտավորել թվերը ու դուք գիտեք `sort` հրամանի մասին՝ է հա, կարաք օգտագործեք էդ հրամանը, խնդիրը լուծվի՝ բայց արդյունքում նորմալ չեք սովորի էլի։- Եթե քիչ ժամանակ ունեք կարաք բաց թողեք Բաժին 1 - 5, 6, 14 խնդիրները- Բաժին 3 13-ում պետք ա զուտ ցանկացած թիվ տպեք- Բաժին 3-ի վերջին երկու խնդիրները լիքը բզբզալու են, խորհուրդ կտանք շատ ժամանակ տրամադրեք իրենց- Profound-ը ներկայացնող [վիդեո](https://youtu.be/BaQ0-hrcRtI)- Շուտ եմ ասել GPT ու նման գործիքներից օգտվել չկա- Եթե հարցեր լինի՝ անպայման խաբար արեք (կառալյոկի պահը հիշեք):::### 📚 Լրացուցիչ նյութեր1. Ինչու՞ Python սովորել [սլայդեր](https://docs.google.com/presentation/d/1c7DJ-SEYtBsLXVWkmWrNnTyEo-bg2BYbmJtFPYq-Q1Y/edit?usp=sharing) \2. Colab-ում կոդը աշխատացնել [հղում](https://hayktarkhanyan.github.io/python_math_ml_course/misc/google_colab.html) \3. Python-ի խառը լրացուցիչ [նյութեր](https://hayktarkhanyan.notion.site/Python-resources-330beea6e8624afea06ee17485a58c40?pvs=74):::::: python## 02 Conditions / Պայմաններ[📚 Ամբողջական նյութը](python/02_conditions.ipynb)Սովորում ենք ինչպես աշխատացնել տարբեր ծրագրեր կախված որոշ պայմաններից։ Նախ ծանոթանում ենք `boolean` տվյալների տեսակին (True, False արժեքները ընդունող), ապա որոշ համեմատության գործողություններին (==, >, is, ...), հետո ծանոթանում ենք `if` (եթե) բլոկին ու իրա հետ եկող `elif`, `else` կտորներին։ Վերջում նայում ենք ներդրված պայմանները (if-ի մեջ if) ու համեմատաբար նոր գրելաձև `match`-ով։ Գործնական դասերին (հիմիկվա, ու 2023-ի) նայում ենք լրիվ տարբեր խնդիրներ, նենց որ կարող եք երկու դասն էլ նայել։ Նաև հասանելի ա տնայինների քննարկման տեսագրություն 2023-ից։### 📺 Տեսանյութեր1. [Տեսադասը](https://youtube.com/watch?v=PsTB0hj95OM)2. [Գործնական դաս](https://youtube.com/watch?v=2GMufITVgt4)3. [Տնայինների քննարկում (2023)](https://youtube.com/watch?v=6Aktg75ZquA)**2023**1. [Դասախոսությունը](https://youtube.com/watch?v=UZ6lVl0kOlo) (նյութը նույնն ա, դասը անցկացնողները տարբեր)2. [Գործնականը](https://youtube.com/watch?v=wx3wn5SPt3g) (խնդիրները լրիվ տարբեր են)3. [Տնայինների քննարկում](https://youtube.com/watch?v=6Aktg75ZquA)### 🏡 Տնային1. Profound [բաժին 5](https://profound.academy/hy/python-introduction/b-vE3xZikKFjcgaFdTsGvg) (Պայմաններ) - լրիվ2. Profound [բաժին 7](https://profound.academy/hy/python-introduction/n-if-8uPJetpgIBlFPXCTxvEp) (Ներդրված պայմաններ) - լրիվ3. Profound [բաժին 9](https://profound.academy/hy/python-introduction/flszat-nMh1l21kkviihZwWp6kf) (Փոփոխականներ և տիպեր) - 1 - 10 (ներառյալ)::: {.callout-note title="Տնայինի հետ կապված նշումներ" collapse="true"}- Բաժին 5-ը գրելիս կարելի ա օգտվել մենակ `if`-ից ու `else`-ից (`elif` ենթադրեք որ չգիտեք)- [Դժվար պայմաններ](https://profound.academy/hy/python-introduction/d-tNWtCx4NdIhu2lDVRR6I) (7.14)-ը լուծելիս եթե շատ երկար լինի Ձեր լուծումը, մի հատ էլ հետո մտածեք ոնց կարաք ավելի կարճ ու կոկիկ դարձնեք bool փոփոխականներ սահմանելով- Եթե կուզեք կարաք Բաժին 9-ը փորձեք մինչև վերջ անել՝ հաջորդ տնայինում դա լինելու ա::::::::: python## 🟡 03 String, list, range, functions on floats/lists::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/03_str_range_list_some_funcs.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 04 Loops / Ցիկլեր::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/04_loops.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 05 List/String Methods + Ternary Operators, List Comprehensions::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/05_lst_str_methods_one_line_if_for.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 06 Tuple, Set, Dictionary::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/06_tuple_set_dictionary.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 07 Functions 1::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/07_functions_1.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 08 Functions 2::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/08_functions_2.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 09 Terminal, Working with multiple files, file I/O, Packages (os, random, time, tqdm)::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/09_files_packages_terminal.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 10 Git / GitHub, Venvs, Anaconda + PEP8::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/10_git_conda_pep8.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 11 Exception Handling::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/11_exception_handling.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 12 Streamlit, Recursions, leftover material::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/12_streamlit_recursion.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 13 Decorators::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/13_decorators.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 14 OOP 1: Classes::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/14_classes.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 15 OOP 2: Inheritance, Polymorphism::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/15_inheritance_polymorphism.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 16 OOP 3: Encapsulation, Abstraction::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/16_encapsulation_abstraction.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 17 Data Classes, Generators, Iterators, Context Managers::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/17_dataclass_iterator_generator_context_manager.ipynb)Նկարագիր - ToDo::::::::: python## 🟡 18 Final Project: YouTube + Translator::: {.python collapse="false"}[📚 Ամբողջական նյութը](python/18_youtube_translator.ipynb)Նկարագիր - ToDo::::::::: <!-- closing Python -->::: libs# Libraries / Գրադարաններէմոջիում տուփ ա որովհետև նաև package ա կարելի անվանել թեմային։::: libs## 01 OpenAI (timestamp generator project)::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/01_openai_api_timestamp_generator.ipynb)`OpenAI`-ը ChatGPT-ն ստեղծող կամպանյան ա։ էսօր սովորելու ենք թե ինչ բան ա *API*-ը ու ոնց կարանք *request*-ներ անենք (էս թեմային մի քիչ առնչվել ենք [deepl-ով թարմանություններ](python/18_youtube_translator.ipynb) անելիս): Նաև սովորում ենք *environment variable*-ների գաղափարը (տերմինալի հրամանակ աշխատացնելով ենք անում դասի ժամանակ, ավելի լավ ա dotenv-ով անել, տես [վիդեոն](https://youtu.be/tqR3DhSkNlQ))։ `OpenAI`-ով նայում ենք թե ոնց ա կարելի տեքստեր/նկարներ/աուդիո գեներացնել ու ոնց ա կարելի ֆիքսել թե ինչ կառուցվածքով պատասխանի մեզ api-ը (մի քիչ էլ առնչվում ենք `pydantic`-ի հետ, որը հետո ենք անցնելու)։ Որպես կիրառություն սարքում ենք ծրագիր որը youtube-ի վիդեո ստանալով քաշում ա իրա տռանսրիպտը (արել էինք [նախորդ դասին](../python/18_youtube_translator.ipynb)) ու գենեռացնում ա timestamp-եր (կարևոր թեմաները որ վարկյաններին են սկսվում):::### 📺 Տեսանյութեր1. [Տեսություն](https://youtu.be/ZOOWqchxETU)2. [Python-Dotenv վիդեո](https://youtu.be/tqR3DhSkNlQ)### 🏡ՏնայինԿրեատիվությունն ա միակ լիմիտը։ Մի աշխարհ բան ա կարելի անել `OpenAI`-ով (հայերենի համար ավելի լավ ա [`Claude`](https://www.anthropic.com/api)-ով անել բայց), կարաք գլխից նաև [Streamlit app](python/12_streamlit_recursion.ipynb) սարքեք։:::::: libs## 02 NumPy (numerical python) ::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/02_numpy.ipynb)`NumPy`-ը հաշվարկներ անելու համար հիմնարար գրադարաններից ա։ Լիքը ուրիշ գրադարաններ որ հետագայում կանցնենք՝ օրինակի համար աղյուսակների հետ աշխատելու համար նախատեսված `pandas`-ը տակից օգտագործում են `numpy`-ը հաշվարկային կտորների համար։ [Դասին](https://youtu.be/7XsIyFTImwk) ծանոթանում ենք լիքը ֆունկցիաների, ու հիմնական գաղափարներից սովորում ենք թե ինչ են *տրամաբանական ինդեքսավորումը* ու *broadcasting-ը*։ Նաև պի թիվը մոտարկելու այ [էս](https://youtu.be/fzujbMd4j30) մինի պրոեկտը վերարտադրում ենք `numpy`-ով ու տեսնում որ ամպի չափ ավելի արագ ա աշխատում ծրագիրը։:::### 📺 Տեսանյութեր1. [Տեսություն](https://youtu.be/TIWU_bjFuUc)2. [Մինի պրոկետը որ `numpy`-ացնում ենք](https://youtu.be/fzujbMd4j30)3. [2023-ի տեսություն որը հավանաբար անիմաստ ա նայելը](https://youtu.be/FKYAAikM56M)### 🏡 Տնային[Հիմնական նյութում](python_libs/02_numpy.ipynb) GPT-ի առաջարկած միկրովարժություններ կան որ կարաք անեք զուտ որ ձեռքը բացվի, բայց ավելի կարևոր ա նախորդ տնայինների/պրոեկտների պարտքերը զրոյացնել որ հաջորդ դասից արդեն `pandas`-ով լիքը պրոեկտներ անելու ժամանակ լինի:::::: libs## 03 Pandas (panel data) 1 ::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/03_pandas_1.ipynb)**Նշում․** Եթե [`NumPy`](python_libs/02_numpy.ipynb)-ին դեռ չեք ծանոթացել՝ սկզբում դա արեք, նոր եկեք `pandas`:`Pandas`-ը `NumPy`-ի հիմքով գրված ամենատարածված գրադարաններից ա աղյուսակային տվյալների (պարզ ասած՝ որ տողերով, սյուներով տվյալներ ունենք) հետ աշխատելու համար։ Տեսությունը բաժանված ա երկու մասի, էսօրվա դասին անցնում ենք․1. թե ինչ բան են *Series*-ը ու *DataFrame*-ը 2. ի՞նչ ա *CSV* ֆայլը3. ոնց ֆիլտրել տվյալները 4. ոնց խմբավորել 5. ինչ ա *pivot table*-ը6. ինչ անել բացակայող արժեքների հետ7. ինչ են հրաշք *parquet* ֆայլերը8. էլի մանր մունր մի քանի բանՈրպես օրինակ աշխատում ենք Հայաստանի ընտրողների տվյալների հետ՝ մոտ 3 միլիոն տող ու ինֆորմացիա՝ անուն, ազգանուն, հայրանուն, ծննդյան օր, գրանցման հասցե ․․․։ ::: ### 📺 Տեսանյութեր1. [Տեսություն](https://youtu.be/2YD9tbQg1Hk)2. [2023-ի տեսություն որը հավանաբար անիմաստ ա նայելը](https://youtu.be/aFgZVLVjQAs)3. [2023-ից ընտրողների տվյալների հետ կապված պրոեկտ Streamlit ու տվյալների վիզուալիզացիա օգտագործող](https://youtu.be/-HC6RJ6cNT0)4. [(ձեռի հետ եմ սա ավելացնում) Ընտրողների տվյալների շուրջ Barcamp ելույթ](https://www.youtube.com/watch?v=vOUHofyk17U)### 🏡ՏնայինՎերցնել ցանկացած դատասեթ ու փորփրել։ Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից:::::: libs## 04 Pandas (panel data) 2::: {.libs collapse="false"}# 📌 Նկարագիր[📚 Ամբողջական նյութը](python_libs/04_pandas_2.ipynb)**Նշում․** Եթե [`Pandas 1`](python_libs/03_pandas_1.ipynb)-ին դեռ չեք ծանոթացել՝ սկզբում դա արեք, նոր եկեք `pandas 2`:Շարունակում ենք մեր պանդաների ուսումնասիրությունը։ Էս անգամ խոսում ենք՝1. Մի քանի `df`-ներ միավորելուց (`concat`, `merge`, `join`), ու իրենց տեսակներից (inner, outer, left, right)2. `Excel` ֆայլերի հետ աշխատանքից - ոնց կարդալ/save անել կոնկրետ sheet ․․․3. Կայքերից տվյալներ քաշելուց՝ `read_html`-ի օգնությամբ ([Armstat](https://armstat.am/am/?nid=12&id=19044&submit=%D5%93%D5%B6%D5%BF%D6%80%D5%A5%D5%AC)-ի օրինակով)4. *Long*, *wide* աղյուսակների ֆորմատներից ու ոնց հալացնել (`melt`) մեր `df`-ն5. `Dask`-ով գոյատևելուց երբ տվյալները ամպի չափ մեծ են ու չենք էլ կարա աշխատանքային հիշողության (*RAM*) մեջ տեղավորենք6. Ամսաթվերի հետ աշխատանքից `Datetime` օբյեկտների միջոցով7. `Numpy vectorization` vs `.apply` vs `for loop`-ի համեմատումից8. Արագ մակերեսային նկարագիր ստանալու համար *profiling*-ի `ydata_profiling` ու `sweetviz` գրադարաններից ### 📺 Տեսանյութեր1. [Տեսություն](https://youtu.be/wgw9eexila0)2. Գործնական - Նշանավոր մարդկանց [վերլուծություն](https://youtu.be/3JJDA0xXvSE)### 🏡 ՏնայինՎերցնել ցանկացած դատասեթ ու փորփրել։ Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից::::::::: libs## 05 Noble People Analysis ::: {.libs collapse="false"}# 📌 Նկարագիր[📚 Ամբողջական նյութը](python_libs/05_noble_people_analysis.ipynb)Ուսումնասիրում ենք նշանավոր 1.2 միլիոն մարդու տվյլաներ, ու արդյունքում վարժվում `pandas`-ի հետ աշխատել։1. Ըստ մասնագիտության ապրելու միջին տարիքը2. Ըստ երկրի 1000-մարդուց ամենաշատը քանիսին են ինքնասպան լինում3. Սեռային բաշխվածությունը ըստ մասնագիտության4. Հայ նշանավոր մարդկանց վերլուծություն5. Էլի մի քանի մանր մունր բանԽորհուրդ ենք տալիս սկզբում մենակով բզբզալ տվյալները նոր նայել [վիդեոն](https://youtu.be/3JJDA0xXvSE)։Նաև հավեսի համար կարաք խաղաք [էս](https://tjukanovt.github.io/notable-people) գործիքի հետ որ քարտեզի վրա ըստ տրածաշրևանի ցույց ա տալիս նշանավոր մարդկանց։#### 📺 Տեսանյութեր1. Գործնական - Նշանավոր մարդկանց [վերլուծություն](https://youtu.be/3JJDA0xXvSE)2. Եթե դեռ չեք նայել, սկզբում նայեք տեսական դասերը՝ [NumPy](python_libs/02_numpy.ipynb), [Pandas 1](python_libs/03_pandas_1.ipynb), [Pandas 2](python_libs/04_pandas_2.ipynb)#### 🏡 ՏնայինՎերցնել ցանկացած դատասեթ ու փորփրել։ Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից::::::::: libs## 06 Data Visualization::: {.libs collapse="false"}# 📌 Նկարագիր[📚 Ամբողջական նյութը](python_libs/06_data_viz.ipynb)Չոր ու տխուր աղյուսակները փոխարիներում ենք աչք ուրախացնող գրաֆիկներով։ 1. Նայում ենք մի քանի սլայդ մոտիվացնող վիզուալիզացիայի կարևորությունը ու նրբությունները2. Ուրախանում ենք լրատվականների խայտառակ վատ տվյալների վիզուալիզացիաներով3. Վայելում ենք լավ վիզուալիզացիաների օրինակներ, հատկապես Ինֆոքոմի կողմից սարքած4. Սովորում ենք matplotlib գրադարանը - սկզբում մի քանի հիմնական գրաֆիկ, հետո ոնց իրանց դզել-փչել մեր ուզածով, հետո ոնց ունենալ մի քանի գրաֆիկ ու վերջում արագ անցնում ենք անիմացիաների թեմայի վրայով5. Plotly - ինտերակտիվ հզոր գրաֆիկներ սարքել ենք սովորում6. WordCloud - Թումանյանի պոեմի ու Կոմիտասի նամակների տեքստերը փորձում ենք իմի բերել մի նկարի մեջ#### 📺 Տեսանյութեր- [Տեսագրությունը](https://youtu.be/r44t7RPPm7U)#### 🏡 ՏնայինԱվանդական՝ վերված դատասեթի վրա էլ հիմա գրաֆիկներ ավելացնել::::::::: libs## 🟡 07 Kargin Data Analysis::: {.libs collapse="false"}# 📌 Նկարագիր (ToDo)[📚 Ամբողջական նյութը](python_libs/07_kargin_project.ipynb)Էլ ինչ դատա վերլուծել եթե ոչ կարգին դատա։ [ՄԵՄ](http://mem.team/)-ի օգնությամբ (ToDo - անուններով նշել մարդկանց, նաև ՄԵՄ-ից դուրս) կա հավաքած տվյալներ որտեղ 600+ կարգինի տեքստերն են, ու որոշ metadata` վայր, լուսավորություն, դերասաններ, լեզուներ և այլն։ Էսօրվա դասին թեթև վերլուծում ենք էդ տվյալները ու մինի search սարքում։ Կրկնում ենք `pandas`-ով Excel կարդալը, նախնական տվյալների մաքրման քայլերը, `plotly`-ի *barplot*, *histogram*, *density plot*-երը, ու նայում ենք ոնց կարանք օգտագործենք ամենալավ անուններից մեկը ունեցող գրադարանը՝ `fuzzywuzzy`-ն տվյալ տեքստին մոտ տեքստ պարունակող կարգին գտնելու համար։ ### 📺 Տեսանյութեր- ▶️[Տեսագրությունը](https://youtu.be/qaw4HsDa1pw)### 🔗 Հղումներ- Կարգին Stremlit [App](https://kargin.streamlit.app/)- Կարգին տելեգրամ [բոտ](https://t.me/KarginSearchBot)::::::::: libs## 🟡 08 Logging, CLIs (argparse, fire, typer, click)::: {.libs collapse="false"}# 📌 Նկարագիր[📚 Ամբողջական նյութը](python_libs/08_logging__clis.ipynb)[📺 Տեսագրությունը](https://youtu.be/2BtFmBMSnsA)📌 ՆկարագիրՄեր առաջին սովորած ֆունկցիան՝ print-ը։ Շատ լավ օրեր ենք անցկացրել իրա հետ, բայց հիմա ժամանակն ա անցնել իրա պռոֆեսինոլ տարբերակին՝ logging-ին։ Սովորում ենք ՝1. ոնց նշել logging-ի մակարդակը2. մեր ուզած ձևով ֆոռմատավորել log-երը3. գրել log-երը ֆայլի մեջ, ինչպես նաև կոնսոլում4. json ֆորմատով պահել լոգերը5. exception-ներ log անելՀետո անցնում ենք Command Line Interface(CLI)-եր սարքելու գրադարաններին։ CLI-ների շնորհիվ ա որ կարանք գրենք ուղղակի `pip install panir` ու ինքը գնա ավտոմատ քաշի բերի մեր ուզած գրադարանը, ոչ թե մենք բացենք կոդը որտեղ install հրամանը օգտագործվում ա ու կոդի մեջ նշենք որ արգումենտ որպես մեր գրադարանի անունը գնա։Սովորում ենք՝1. Argparse-ը (ներկառուցված գրադարան)2. Fire (ֆունկցիաներին CLI-ով դիմելու համար 1-2 տողանոց լուծում)3. Click (դեկորատորներով աշախտող ուժեղ գրադարն)4. Typer (FastAPI-ենց գրադարանը type hint-երի վրա հիմնված)ToDo - detailed timestamps::::::::: libs## 09 Pytest, Debugging::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/09_testing__debugging.ipynb)## 📺 Տեսանյութեր- [📺 Տեսագրությունը](https://www.youtube.com/watch?v=qcLhrouK7yE) (Pytest, debugging)- 📺 2023 թվականից [տեսագրություն]((https://youtu.be/H6UN4S1Fbds?list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&t=2923)) unittest գրադարանը ներկայացնող**Testing**Եթե ուզում ենք կարողանալ մեեեծ պրոեկտների վրա աշխատել, կամ թեկուզ փոքր պրոեկտներում չկորենք կամ պանիկայի մատնվենք երբ նոր մարդիկ սկսեն կոդի վրա աշխատել, շատ կարևոր ա որ ունենանք ամուր ենթակառուցված որը չի թողի կոդում սխալները մուղամով իրանց չար գործը անեն։ Կոդ գրելիս պետք ա մտածենք թե ինչ մուտքերի դեպքում ինչ ելք պետք ա տա, երբ պետք ա էռոռ բարձացնի և այլն, և այլն։ Եթե էդ ամենինչը ֆիքսվի կարող ենք հարմար ստուգել արդյոք էդ մեր դրած պայմանները բավարավում են թե չէ։ Դասին սովորում ենք հենց դա կազմակերպել՝ PyTest գրադարանով (մի քանի րոպե էլ unittest-ին ենք անդրադառնում, 23 թվից ավելի մանրամասն [վիդեո](https://youtu.be/H6UN4S1Fbds?list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&t=2923) կա)։ Սովորում ենք ոնց՝1. Սարքել թեստեր2. Parametrize: Պարամետրացնել, միանգամից լիքը input-output զույգեր փորձարկելու համար3. Fixture: Ոնց նշել ինչ կոդ պետք ա աշխատացվի թեստի աշխատելուց առաջ ու հետո4. Mocking: Որոշ ֆունկցիաներ կանցելը փոխարեն ձևացնել որ իրենց ենք օգտագործում որ երկար չսպասենք կամ էլ ուրիշ կոդի սխալի պատճառով մեր թեստը ձախողի5. Coverage: Ստուգել թե կոդի որ տոկոսն ա մեր աչքից պլստացել ու առանց թեստի մնացել6. CLI Argument-ներով ոնց ընդգծել կոնկրետ ինչ թեստեր/ոնց աշխատացվեն7. Ոնց VS Code-ով աշխատացնել թեստերը8. Ինչ տեսակներ կան testing-ի (end-to-end, integration, unit test)**Debugging**Վերջում էլ մի քանի րոպեով անդրադառնում ենք VS Code-ի debugger-ից օգվելուց, ու ընդհանուր debugging-ի տեսակներին (ռեզինե բադ, ․․․)։ print-եր շարելը լավ բան ա իհարկե, բայց breakpoint-երին ծանոթանալը կարա հետագայում շատ ժամանակ խնայի։ ::::::::: libs## 🟡 10 Scraping::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/10_scraping__parallelization.ipynb)ToDo - file cleanup + description::::::::: libs## 🟡 11 Scraping Yerevan State University ::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/11_ysu_scraping.ipynb)ToDo - file cleanup + description::::::::: libs## 12 SQL (with Python)::: {.libs collapse="false"}# 📌 Նկարագիր[📚 Ամբողջական նյութը](python_libs/12_sql.ipynb)[📺Տեսանյութը](https://www.youtube.com/watch?v=zMeKyFWTe10)Աղյուսակային տվյալները `csv`-ով պահելը երբեմն աշխարհի ամենալավ միտքը չի։ Ոչ էլ `parquet` պահելն ա միշտ լավագույն տարբերակը։ ՄԼ-ի կոնտեքստում երբ-որ ինչ-որ տվյալներ արդեն կան ու իրանց պետք ա վերլուծենք՝ բան չունեմ ասելու, ընտիր ֆորմատներ են, բայց եթե գնանք ավելի շատ դեպի backend development որտեղ որ պահվում են օրինակի համար կայքում գրանցված մարդկանց տվյալներ՝ այ ըտեղ արդեն կարիք ա գալիս դինամիկ համակարգերի որ թույլ կտան արագ ու էժան պահել ու ստանալ մեր ուզած տվյալները։ Էս նյութում ծանոթանում ենք SQL (Structured Query Language)-ի հետ, ու սովորում հիմնական գրադարանները տվյալների բազաների հետ փոխազդելու։ Ծանոթանում ենք` Select, Where, Order by, Limit, Group by, Join, Subqueries, Having հրամանների հետ ու խառը ֆունկցիաների հետ։#### ՆշումՉենք ծանոթանում բազաների տեսակներին, կամ նրան թե ոնց ճիշտ դիզայն անել բազան։ Ուղղակի թեթև ծանոթացում SQL-ին։#### 🏡 Տնայինի առաջարկԲռաուզեռի պատմությունը բազայով ա պահվում ու լոկալ հասանելիություն ունենք իրանց։ Կարաք կարդաք աղյուսակները, վերլուծեք հենց ձեր պատմությունը, եթե հավեսի ընկնեք նույնիսկ կարաք AI API-ի request անեք, հղումները տաք ասեք դնի ինչ-որ կատեգորիայի մեջ (աշխատանք, հանգիստ, Աստված գիտի ինչ ․․․)Ավելի մանրամասն կարաք նյութի ներքևում (գործնական սեկցիայում) ծանոթանաք միկրո օրինակի ու հղումների համար::::::::: libs## 🟡 13 Pydantic::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/13_pydantic.ipynb)ToDo - file cleanup + description::::::::: libs## 🟡 14 Pathlib, Numba, Collections, Icecream::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/14_misc_libraries.ipynb)ToDo - file cleanup + description + resolve path issues::::::::: libs## 🟡 15 FastAPI, Deployment::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/15_fast_api.ipynb)ToDo - file cleanup + description::::::::: libs## 🟡 16 Supabase ::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/16_dbs_supabase.ipynb)::::::::: libs## 🟡 17 Vibe coding ::: {.libs collapse="false"}[📚 Ամբողջական նյութը](python_libs/17_vibe_coding.ipynb)::::::::: libs## 🟡 18 Clean Code/Architecture::: {.libs collapse="false"}[📚 Ամբողջական նյութը]()::::::::: libs## ToDo::: {.libs collapse="false"}[📚 Ամբողջական նյութը]()1. Vibe coded project (browsing data or Kargin Search)2. Creating a real DB (supabase)3. ~~Render deployment~~4. Interpretable vs Complied5. Interview questions6. ~~Maybe a proper Scrapy tutorial? (Nope)~~7. Github Actions?::::::::: {.callout-note collapse="true"}# internal notes (to be ignored)## Videos- [x] Path- [x] python-dotenv (https://youtu.be/tqR3DhSkNlQ)- [x] icecream- [x] Collections / functools- [x] numba https://www.youtube.com/watch?v=H6UN4S1Fbds&list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&index=30- [] yaml / toml- [] manim?- [] Make- [] Github Actions?## Lectures- [x] Logging- [x] Pytest- [x] Argparse (or some other cli)- [x] Scraping (requests, BeautifulSoup, Scrapy) - [x] joblib https://www.youtube.com/watch?v=H6UN4S1Fbds&list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&index=30- [x] SQL- [x] pydantic- [x] Flask / FastAPI- [x] Render deployment- [x] Supabase (maybe also proper Postgre VS MySQl bla bla bla)- [x] Vibe coding project:::::: <!-- closing libs -->::: math# Math / Մաթեմ**Շատ մոտավոր ա գրաֆիկը**::: math## 00 Preliminaries- [📚 Ամբողջական նյութը](math/00_intro_sets_comb_funcs.qmd)- [📺 Տեսագրությունը](https://youtu.be/7rIw7ocwMP4)- [🎞️ Սլայդեր](math/Lectures/L00_Sets__Combinatorics__Functions.pdf)- [🛠️📺 Գործնականի տեսագրությունը](https://youtu.be/vBgPpeX9aKA)- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks/hw_00_sets_comb_funcs.pdf)Մինչ բուն նյութին անցնելը ծանոթանում ենք մի քանի նախնական կարևոր գաղափարների՝1. Բազմություններ (գործողություններ, կցման-արտաքսման սկզունք, դեկարտյան արտադրյալ)2. Զուգորդություններ, կարգավորություններ, տեսափոխություններ3. Ֆունկցիաներ (պատկեր, նախապատկեր, ինյեկտիվ, սյուրյեկտիվ, բիյեկտիվ, կենտ, զույգ):::::: math## 🟡 XX Template::: {.libs collapse="false"}- [📚 Ամբողջական նյութը](math/)- [📺 Տեսագրությունը]()- [🎞️ Սլայդեր](math/Lectures/)- [🛠️📺 Գործնականի տեսագրությունը]()- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks)Abstract:::::: {.callout-note collapse="true"}# Internal NoteToDo- Dark mode does not work for the hw file.Maybe at some point- Induction- Recursent relations- Somewhere inequalities - Jensen, Cauchy:::::: math## 🟡 01 Linear Algebra - Vectors::: {.libs collapse="false"}- [📚 Ամբողջական նյութը](math/)- [📺 Տեսագրությունը]()- [🎞️ Սլայդեր](math/Lectures/)- [🛠️📺 Գործնականի տեսագրությունը]()- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks)Abstract- Vectors, vector operations- Dot product- Norm (L1, L2)- Angle between vectors- Vector spaces and subspaces- Matrices, matrix operations:::## 🧮 Linear Algebra- Vectors, vector operations, dot product, norm- Norm (L1, L2)- Angle between vectors- Vector spaces and subspaces- Matrices, matrix operations- Geometric interpretation of matrices- Row echelon form (perhaps won't be covered)- Determinant in 2x2 and 3x3 cases, trace- Determinant in general case- Systems of linear equations (perhaps won't be covered)- Gauss-Jordan elimination (perhaps won't be covered)- Inverse matrix- Linear independence- Basis, rank, dimension- Change of basis- Eigenvalues and eigenvectors- Gram–Schmidt algorithm (orthogonalization)- Positive/negative definite matrices- Decompositions (eigen for sure, maybe also SVD/QR/Cholesky)- Matrix norms (at some point)## 📈 Calculus- Limit of sequence and function- Continuity- Derivative- Chain rule, product rule, quotient rule- Lipschitz continuity- Convexity, concavity- Extrema of a function- Taylor polynomials- Indefinite integral, definite integral**Multivar**- Partial derivative- Jacobian, Jacobian matrix- Gradient - Directional derivative- Hessian- Taylor expansion in several variables- Cauchy-Schwarz inequality- Jensen’s inequality## ⛰️ Optimization- Convex sets- Lipschitz continuity- Quadratic forms and Sylvester’s criterion- First/second-order optimality conditions- Univariate (golden section, Bernd)- Gradient Descent (mini-batch, stochastic)- Armijo (Wolf) condition- Learning rate scheduling- Momentum- AdaGrad / RMSProp / ADAM- Coordinate descent- Second order methods- Constrained optimization- Derivative-free optimization (Nelder-Mead)- Evolutionary algorithms (Genetic algorithms, CMA-ES)- Bayesian optimization (Surrogate models, Acquisition functions)- Multicriteria optimization (Pareto front, Dominance)## 🎲 Probability Theory- Sample space, events, probability- Independence- Conditional probability, total probability- Bayes rule- Geometric probability- Random variable- PMF, CDF, PDF- Expected value, variance- Law of the unconscious statistician- Iterated expectation- Covariance and correlation- Distributions- Joint, marginal, and conditional distributions- Convergence modes (in probability, in distribution, almost sure convergence)- Laws of large numbers- Central limit theorem## 📊 Statistics- Point estimation: Mean, median, mode- Quantiles, percentiles- Estimator properties (unbiasedness, consistency, efficiency)- MAP - MLE- Confidence intervals and hypothesis testing- P-values, type I and type II errors- ANOVA- Chi-squared test- t-test, z-test- Bootstrap- ? Fisher information- ? Cramér-Rao bound- ? Likelihood ratio test- Bayesian statistics?- ? EM algorithm- ? Metropolis-Hastings algorithm## Information Theory- Entropy, joint entropy, conditional entropy- Mutual information- Kullback-Leibler divergence- Cross-entropy- Cross-entropy vs Risk minimization vs MLE## Curse of dimensionality- Distance in high dimensions- Volume of high-dimensional spheres- Sparsity of data- Curse of dimensionality in machine learning:::::: ml# Machine Learning / Մեքենայական ուսուցում**Շատ մոտավոր ա գրաֆիկը**## Packages to do in process- [] Scikit-learn- [] LightGBM- [] Tensorflow- [] Pytorch- [] Weights and biases- [] Weaviate- [] Chainlit- [] Gradio- [] Sentence transformers- [] Hugging Face## Linear Regression- Assumptions- Loss- Gradient based optimization- Normal Equation- Interpretation of Coefficients## Main Concepts- Encoding categoricals- Feature scaling- Train Val Test split (data leakage issue)- (Stratified) Cross validation- Regression evaluation metrics## More Regression + Main Concepts 2- Polynomial Regression- Under / Overfitting- Regularization - Ridge - Lasso- Hyperparameter Search- Feature Engineering- Outliers- Threshold tuning## GLM (Logistic Regression)- Logistic regression- Log odds- Classification evaluation metrics## Trees- Decision tree- Bagging- Boosting- Notable models (i.e. LightGBM)## Model interpretation and Feature selection## Unsupervised Learning- KMeans- DBSCAN- Hierarchical- Clustering evaluation metrics## Neural Networks- Perceptron- Activation functions (sigmoid, tanh, ReLU, Leaky ReLU, Softmax)- Loss functions (cross-entropy, MSE)- Backpropagation- Dropout Regularization- Batch normalization- Weight initialization- Vanishing/Exploding gradients- Transfer learning## Intro to Computer Vision- Convolutions (kernels, padding, stride)- Gaussian blur, Sobel filter, Canny edge detection - Template matching- CNNs- Pooling (max, average)- Receptive field- Dialotion - Separable convolutions- Fully connected layers- Classic architectures (LeNet, AlexNet, VGG, ResNet)- Data augmentation- Image classification, object detection, segmentation- Evaluation metrics (IoU, mAP, etc.)- Transfer learning- Fine-tuning## (Variational) Autoencoders- Encoder-Decoder architecture- Loss functions (reconstruction loss, KL divergence)- Latent space- Variational Autoencoders (VAE)- Applications (denoising, generation)Maybe - Generative Adversarial Networks (GANs)- Diffusion models## 44 - 45 Intro to Natural Language Processing- Tokenization- Word embeddings (Word2Vec, GloVe)- Bag of Words, TF-IDF- Recurrent Neural Networks (RNNs)- Vanishing / Exploding gradients in RNNs- Long Short-Term Memory (LSTM)- Gated Recurrent Units (GRUs)## 46 - 47 Intro to Gen AIText- Attention Mechanisms- Transformers- BERT, GPT- Evaluation metrics (BLEU, ROUGE, perplexity)- Zero-shot and few-shot learning- Pre-trained models (Hugging Face, OpenAI, etc.)- Transfer learning in NLP (fine-tuning pre-trained models)- RAG## Գուցե նաև KNN, SVM, Information Theory, Gaussian Process:::::: misc- Website created with [Quarto](https://quarto.org) (fantastic tool)- Website hosted on [GitHub Pages](https://pages.github.com/)- [Source code of everything](https://github.com/hayktarkhanyan/python_math_ml_course)- [URL 1](https://www.youtube.com/watch?v=6_2ZJ4QW_O4), [URL 2](https://www.youtube.com/watch?v=y4qtOVq_e0U)```{=html}<a href="http://s01.flagcounter.com/more/1oO"><img src="https://s01.flagcounter.com/count2/1oO/bg_FFFFFF/txt_000000/border_CCCCCC/columns_2/maxflags_10/viewers_0/labels_0/pageviews_1/flags_0/percent_0/" alt="Flag Counter"></a>```:::<!-- ::: {.callout-note collapse="true"}# Projects / Պրոեկտներ**ԱԲ-ով ա գենեռացրած դեռ չեմ անցել վրայով**Ահա դասընթացի ընթացքում իրականացված հիմնական պրոեկտների ցանկը՝ իրենց ֆայլերի հղումներով ու նկարագրություններով:## 🐍 Python Բազային Պրոեկտներ### 01. Կիսամյակային Գնահատականի Հաշվիչ**Ֆայլ:** `python/01_intro.ipynb` - Գործնական դասի մաս **Նկարագիր:** Պարզ ծրագիր որը հաշվարկում է ուսանողի կիսամյակային գնահատականը տարբեր բաղադրիչների հիման վրա:### 02. Քառակուսի Հավասարման Լուծիչ**Ֆայլ:** `python/01_intro.ipynb` - Գործնական դասի մաս **Նկարագիր:** Քառակուսի հավասարման արմատների հաշվարկ՝ օգտագործելով հայտնի բանաձևը:### 03. π-ի Մոտարկում (Monte Carlo Method)**Ֆայլ:** [`python/mini_projects/approximate_pi/approximate_pi.ipynb`](python/mini_projects/approximate_pi/approximate_pi.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/fzujbMd4j30) **Նկարագիր:** Monte Carlo մեթոդի օգտագործմամբ π թվի մոտարկում՝ պատահական կետեր գեներացնելով շրջանի ու քառակուսու մեջ:### 04. Streamlit Հավելվածներ**Ֆայլ:** `python/12_streamlit_recursion.ipynb` **Նկարագիր:** Վեբ-հավելվածների ստեղծում Streamlit գրադարանի օգնությամբ:## 🔧 Python Գրադարանների Պրոեկտներ### 05. OpenAI API Timestamp Generator**Ֆայլ:** [`python_libs/01_openai_api_timestamp_generator.ipynb`](python_libs/01_openai_api_timestamp_generator.ipynb) **Վիդեո:** [📺 Տեսություն](https://youtu.be/ZOOWqchxETU) **Նկարագիր:** YouTube վիդեոների transcript-ներից timestamp-եր գեներացնող ծրագիր OpenAI API-ի օգնությամբ: Ծրագիրը վերցնում է YouTube վիդեոի transcript-ը ու ավտոմատ ստեղծում timestamp-եր կարևոր թեմաների համար:### 06. YouTube Transcript Translator**Ֆայլ:** [`python/18_youtube_translator.ipynb`](python/18_youtube_translator.ipynb) **Նկարագիր:** Ամբողջական պրոեկտ որը YouTube վիդեոներից metadata քաշում է, transcript ստանում ու թարգմանում: Օգտագործված են OOP-ի բոլոր 4 սյուները ու data classes:### 07. Նշանավոր Մարդկանց Վերլուծություն**Ֆայլ:** [`python_libs/05_noble_people_analysis.ipynb`](python_libs/05_noble_people_analysis.ipynb) **Վիդեո:** [📺 Գործնական](https://youtu.be/3JJDA0xXvSE) **Նկարագիր:** 1.2 միլիոն նշանավոր մարդու տվյալների վերլուծություն Pandas-ի օգնությամբ:- Ըստ մասնագիտության ապրելու միջին տարիքի վերլուծություն- Ինքնասպանության ցուցակիչների վերլուծություն ըստ երկրների- Սեռային բաշխվածությունը ըստ մասնագիտության- Հայ նշանավոր մարդկանց վերլուծություն### 08. Կարգին Data Analysis Project**Ֆայլ:** [`python_libs/07_kargin_project.ipynb`](python_libs/07_kargin_project.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/qaw4HsDa1pw) **Ապլիկացիա:** [Կարգին Streamlit App](https://kargin.streamlit.app/) **Բոտ:** [Կարգին Telegram բոտ](https://t.me/KarginSearchBot) **Նկարագիր:** 600+ կարգինի տեքստերի վերլուծություն ու search գործիք: Ներառում է metadata-ի վերլուծություն (վայր, լուսավորություն, դերասաններ) ու fuzzy search ֆունկցիոնալություն:### 09. Data Visualization Projects**Ֆայլ:** [`python_libs/06_data_viz.ipynb`](python_libs/06_data_viz.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/r44t7RPPm7U) **Նկարագիր:** Տվյալների վիզուալիզացիայի պրոեկտներ matplotlib ու plotly գրադարանների օգնությամբ:- WordCloud սրաքում Թումանյանի պոեմներից ու Կոմիտասի նամակներից- Ինտերակտիվ գրաֆիկներ plotly-ով- Անիմացիաներ matplotlib-ով### 10. YSU (Երևանի Պետական Համալսարան) Scraping**Ֆայլ:** [`python_libs/11_ysu_scraping.ipynb`](python_libs/11_ysu_scraping.ipynb) **Նկարագիր:** ԵՊՀ-ի կայքից տվյալների քաշման պրոեկտ՝ web scraping տեխնիկաների օգտագործմամբ:### 11. SQL Database Projects**Ֆայլ:** [`python_libs/12_sql.ipynb`](python_libs/12_sql.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/zMeKyFWTe10) **Նկարագիր:** SQL-ի ու Python-ի համակցությամբ տվյալների բազաների հետ աշխատանքի պրոեկտներ:## 🧪 Testing և Development Tools### 12. PyTest Testing Framework**Ֆայլ:** [`python_libs/09_testing__debugging.ipynb`](python_libs/09_testing__debugging.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/qcLhrouK7yE) **Նկարագիր:** Unit testing-ի ու debugging-ի պրոեկտներ PyTest գրադարանով:### 13. CLI Applications**Ֆայլ:** [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) **Վիդեո:** [📺 Տեսագրություն](https://youtu.be/2BtFmBMSnsA) **Նկարագիր:** Command Line Interface ծրագրեր տարբեր գրադարանների օգնությամբ (argparse, fire, typer, click):### 14. FastAPI Web Applications**Ֆայլ:** [`python_libs/15_fast_api.ipynb`](python_libs/15_fast_api.ipynb) **Նկարագիր:** FastAPI framework-ով RESTful API-ների ու web applications-ների ստեղծման պրոեկտներ:## 📊 Machine Learning Projects### 15. Regression Analysis**Ֆայլեր:** `ml/Chapter 1 Regression Main Concepts/` **Նկարագիր:** Linear regression ու related concepts-ի իմպլեմենտացիա:### 16. Classification Projects**Ֆայլեր:** `ml/Chapter 2 Classification/` **Նկարագիր:** Classification algorithms-ի իմպլեմենտացիա ու evaluation:### 17. Tree-based Models**Ֆայլեր:** `ml/Chapter 3 Trees/` **Նկարագիր:** Decision trees, random forests ու boosting algorithms:### 18. Clustering Analysis**Ֆայլեր:** `ml/Chapter 4 Clustering/` **Նկարագիր:** Unsupervised learning methods՝ K-means, DBSCAN ու hierarchical clustering:### 19. Neural Networks**Ֆայլեր:** `ml/Chapter 5 Neural Networks/` **Նկարագիր:** Neural networks-ի հիմունքներ ու deep learning concepts:## 📐 Mathematics Projects### 20. Linear Algebra Vectors**Ֆայլ:** [`math/01_lin_alg_vectors.qmd`](math/01_lin_alg_vectors.qmd) **Նկարագիր:** Վեկտորների ու linear algebra հիմունքների տեսական ու գործնական մաշակում:## 🔜 Ապագա Պրոեկտներ (Planning/ToDo)Ըստ [`projects.md`](projects.md) ֆայլի՝ նախատեսված են հետևյալ պրոեկտները:### Ավարտված- ✅ Wordcloud տարբեր հեղինակների համար- ✅ π-ի մոտարկում - ✅ Hangman խաղ- ✅ OpenAI հիմքով պրոեկտ- ✅ Wordcloud գեներատոր### Նախատեսվող- 📋 Zovq/Bookinist/Zangak scraper- 📋 Tic Tac Toe խաղեր- 📋 Telegram բոտ- 📋 Bulls and Cows խաղ- 📋 Ընտրական տվյալների վերլուծիչ- 📋 Telegram analyzer- 📋 Browser history analyzer- 📋 Snake խաղ- 📋 OpenCV հիմքով պրոեկտ## 🔗 Օգտակար Հղումներ- 📺 [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy) - Բոլոր տեսադասերը- 💬 [Դասընթացի Telegram](https://t.me/metric_academy) - Հարցեր ու քննարկումներ- 🏠 [Տնայինների հարթակ](https://profound.academy/hy/python-introduction) - Profound Academy- 💻 [Source Code](https://github.com/hayktarkhanyan/python_math_ml_course) - GitHub Repository- 📝 [Լուծումներ ու նշումներ](https://metric-academy.notion.site/):::::: {.callout-note collapse="true"}# Libraries / Գրադարաններ**ԱԲ-ով ա գենեռացրած դեռ չեմ անցել վրայով**| Library | File Reference | Video Reference | Built-in | Short Description ||---------|---------------|-----------------|----------|-------------------|| **OpenAI** | [`python_libs/01_openai_api_timestamp_generator.ipynb`](python_libs/01_openai_api_timestamp_generator.ipynb) | [📺](https://youtu.be/ZOOWqchxETU) | ❌ | AI API integration for text/image generation || **NumPy** | [`python_libs/02_numpy.ipynb`](python_libs/02_numpy.ipynb) | [📺](https://youtu.be/TIWU_bjFuUc) | ❌ | Numerical computing with arrays || **Pandas** | [`python_libs/03_pandas_1.ipynb`](python_libs/03_pandas_1.ipynb) | [📺](https://youtu.be/2YD9tbQg1Hk) | ❌ | Data manipulation and analysis || **Pandas 2** | [`python_libs/04_pandas_2.ipynb`](python_libs/04_pandas_2.ipynb) | [📺](https://youtu.be/wgw9eexila0) | ❌ | Advanced pandas operations || **Matplotlib/Plotly** | [`python_libs/06_data_viz.ipynb`](python_libs/06_data_viz.ipynb) | [📺](https://youtu.be/r44t7RPPm7U) | ❌ | Data visualization || **FuzzyWuzzy** | [`python_libs/07_kargin_project.ipynb`](python_libs/07_kargin_project.ipynb) | [📺](https://youtu.be/qaw4HsDa1pw) | ❌ | Fuzzy string matching || **Argparse** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ✅ | Command line argument parsing || **Fire/Click/Typer** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ❌ | Advanced CLI frameworks || **Logging** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ✅ | Professional logging system || **PyTest** | [`python_libs/09_testing__debugging.ipynb`](python_libs/09_testing__debugging.ipynb) | [📺](https://youtu.be/qcLhrouK7yE) | ❌ | Unit testing framework || **Requests** | [`python_libs/10_scraping__parallelization.ipynb`](python_libs/10_scraping__parallelization.ipynb) | - | ❌ | HTTP requests for web scraping || **BeautifulSoup** | [`python_libs/10_scraping__parallelization.ipynb`](python_libs/10_scraping__parallelization.ipynb) | - | ❌ | HTML/XML parsing || **SQLite3** | [`python_libs/12_sql.ipynb`](python_libs/12_sql.ipynb) | [📺](https://youtu.be/zMeKyFWTe10) | ✅ | Database operations || **Pydantic** | [`python_libs/13_pydantic.ipynb`](python_libs/13_pydantic.ipynb) | - | ❌ | Data validation and settings || **FastAPI** | [`python_libs/15_fast_api.ipynb`](python_libs/15_fast_api.ipynb) | - | ❌ | Modern web API framework || **Pathlib** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ✅ | Object-oriented filesystem paths || **Collections** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ✅ | Specialized container datatypes || **Numba** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ❌ | JIT compilation for speed || **Icecream** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ❌ | Enhanced debugging print || **Streamlit** | [`python/12_streamlit_recursion.ipynb`](python/12_streamlit_recursion.ipynb) | - | ❌ | Web app creation || **PyTubeFix** | [`python/18_youtube_translator.ipynb`](python/18_youtube_translator.ipynb) | - | ❌ | YouTube video metadata extraction || **Random** | Multiple files | - | ✅ | Random number generation || **Math** | Multiple files | - | ✅ | Mathematical functions || **OS** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ✅ | Operating system interface || **Time** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ✅ | Time-related functions || **TQDM** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ❌ | Progress bars |::: -->