Python Basics

შეხვედრა 1 - შესავალი; ინტერპრეტატორი
1. რა არის პროგრამირება
1.1. ალგორითმი
1.2. პროგრამირების ენა
1.3. პროგრამა
1.4. პროგრამირება
2. რატომ Python
2.1. Python-ის ისტორია
2.2. Python vs Others
3. ინფორმაციის საზომი ერთეული
3.1. ორობითი და ათობითი
4. რიცხვითი სისტემები
4.1. 10-ობითი (Decimal)
4.2. 2-ობითი (Binary)
4.3. 4-ობითი (Base 4)
4.4. 8-ობითი (Octal)
4.5. 16-ობითი (Hex)
5. Python-ის პროგრამის გაშვება და მუშაობის მექანიზმი
6. ბლოკის ცნება
7. ინტერპრეტატორი
8. რეზერვირებული სიტყვები (Keywords)
9. IDLE vs IDE
დავალება I
შეხვედრა 2 - IO; ცვლადები; პირობები და ოპერატორები
1. IO – შემავალი და გამავალი სთრიმები
1.1. input()
1.2. print()
2. ცვლადები (Variables)
2.1. სკალარული ტიპები
2.1.1. მთელი რიცხვები (int)
2.1.2. ნამდვილი რიცხვები (float)
2.1.3. ლოგიკური ტიპი (bool)
2.2. სახელების შერჩევის წესები და კონვენციები
2.3. არითმეტიკული ოპერაციები ცვლადებზე და გამარტივებები
2.3.1. არითმეტიკული ოპერაციების თანმიმდევრობა
3. პირობები და ოპერატორები
3.1. ლოგიკური ოპერატორები
3.2. შედარების ოპერატორები
3.3. პირობითი ოპერატორები
3.3.1. if, elif, else
3.4. ციკლის ოპერატორები
3.4.1. for ციკლის ოპერატორი
3.4.2. while ციკლის ოპერატორი
4. კალკულატორის შექმნა
დავალება II
შეხვედრა 3 - ფუნქციები; ჩაშენებული ფუნქციები; Math და Random მოდული
1. ფუნქციები
1.1. რა არის ფუნქცია
1.2. ფუნქციის კომპონენტები
1.3. Void ფუნქციები
1.4. პარამეტრი/არგუმენტი
1.5. გაჩუმების პარამეტრები (Default Values)
1.6. docstring
1.7. ანონიმური ფუნქცია – lambda
2. ჩაშენებული ფუნქციები
3. მოდულები
3.1. რა არის მოდული
3.2. მოდულისა და მისი კომპონენტის იმპორტი
3.3. math მოდული
3.4. random მოდული
დავალება III
შეხვედრა 4 - სტრიქონები (Strings)
1. რა არის სტრიქონი (string)
2. ინდექსების ცნება
3. სტრიქოენის ნაწილები (string slice)
4. ოპერაციები სტრიქონებზე
4.1. ჩაშენებული ფუნქციები სტრიქონებისთვის
4.2. ჩაშენებული ფუნქციების Custom იმპლემენტაციები
4.3. სტრინგების გამრავლება, შეკრება (კონკატენაცია)
5. სპეციპიკურ სიმბოლოებთან მუშაობა
6. in ოპერატორი
7. Mutable vs Immutable
7.1. Strigs are immutable!
8. ფუნქციები (მეთოდები) სტრიქონებზე
9. Strings Formats
9.1. F string
9.2. %s, %d, %f, etc.
დავალება IV
შეხვედრა 5 - ფაილებთან მუშაობა; With - კონტექსტ მენეჯერი
1. ფაილები და მათი გაფართოებები
2. ASCII
3. ფაილის გახსნის რეჟიმები
4. ფაილების კონტენტზე მანიპულაცია
5. os მოდული
6. with – კონტექსტ მენეჯერი
7. with … as კონსტრუქცია
8. pandas – პაკეტი
9. მონაცემთა წაკითხვა, ჩაწერა, მანიპულაცია ინტერაქციულ რეჟიმში
დავალება V
შეხვედრა 6 - მონაცემთა სტრუქტურები: Lists; Tuples
1. სიები (lists)
1.1. სიის ელემენტების ცვლილება
1.2. List slices
1.3. მრავალგანზომილებიანი სიები და მათთან მუშაობა
1.4. არითმეტიკული ოპერაციები სიებთან
1.5. ჩაშენებული ფუნქციები
1.6. მეთოდები
1.7. სტრიქონებისა (string) და სიების კომბინაციები
1.8. Lists are Mutable!
2. Tuple მონაცემთა სტრუქტურა
2.1. რა არის Tuple მონაცემთა სტრუქტურა
2.2. სიების ბლოკში მოცემული თემების Tuple მონაცემთა სტრუქტურის ჭრილში განხილვა
2.3. Tuples are Immutable!
2.4. *args
2.5. Tuple vs List
დავალება VI
შეხვედრა 7 - მონაცემთა სტრუქტურები: Set; Dictionary
1. სიმრავლე (Set)
1.1. რა არის სიმრავლე
1.2. სიმრავლის მეთოდები
1.3. მათემატიკური მანიპულაციები სიმრავლეებზე
1.3.1. თანაკვეთა – intersection()
1.3.2. სხვაობა – difference()
1.3.3. სიმეტრიული სხვაობა – symetric_difference()
2. ლექსიკონი (Dictionary)
2.1. რა არის ლექსიკონი
2.1.1. key:value წყვილი
2.2. Set vs Dictionary
2.3. მონაცემებზე წვდომა
2.4. ლექსიკონთან სამუშაო ჩაშენებული ფუნქციები
2.5. ლექსიკონთან სამუშაო მეთოდები
2.6. in დირექტივა ლექსიკონებთან
2.7. ჩაშენებული ლექსიკონები
2.8. **kwargs
2.9. “KeyError” შეცდომისგან დაზღვევა
2.10. ჩაშენებული მონაცემთა სტრუქტურების კომბინირება და რთულ კომბინაციებთან მუშაობა
დავალება VII
შეხვედრა 8 - Exceptions; PEP8
1. შეცდომები (Exceptions)
1.1. try ბლოკი
1.2. except ბლოკი
1.3. finally ბლოკი
1.4. else ბლოკი
1.5. assert
1.6. შეცდომების გამოსროლა (raise)
1.7. Built-in Exceptions
2. PEP8 – კოდის წერის სტილის სტანდარტი Python-ისთვის
2.1. Indentations
2.1.1. functions
2.1.2. if
2.1.3. list
2.1.4. functions
2.1.5. line break dilemma
2.1.6. whitespace
2.1.7. comments
დავალება VIII
შეხვედრა 9 - ვერსიონირების სისტემები; GitHub
1. ვერსიონირების სისტემები
1.1. რა არის ვერსიონირება
1.2. რა არის ვერსიონირების სისტემა
1.3. ვერსიონირების ბენეფიტები
1.4. GIT
1.4.1. ინსტალაცია
1.4.2. add
1.4.3. commit
1.4.4. push
1.4.5. pull
1.4.6. branch
1.4.7. switch
1.4.8. merge
1.4.9. stash
1.4.10. switch
1.5. GitHub
1.5.1. რა არის GitHub
1.5.2. HTTP პროტოკოლი
1.5.3. HTTPS პროტოკოლი
1.5.4. HTTP vs HTTPS
1.5.5. SSH პროტოკოლი
1.5.6. GitHub რეპოზიტორი
1.5.7. SSH კავშირის კონფიგურაცია ლოკალურ და რემოუთ პროვაიდერებს შორის.
დავალება IX
შეხვედრა 10 - OOP Intro
1. რა არის OOP
1.1. რამ განაპირობა OOP-ს შექმნა
1.2. კლასები
1.3. ობიექტები
2. რატომ OOP
3. კონსტრუქტორი
4. self ინსტანსი
5. მეთოდები (methods)
6. ატრიბუტები (attributes)
7. dir, help, __doc__
8. __str__() მეთოდი
9. მოდულების რეფაქტორინგი OOP-ის საშუალებით
დავალება X
შეხვედრა 11 - Abstraction; Encapsulation; Hiding
1. რა არის აბსტრაქცია (Abstraction)
1.1 რამ განაპირობა აბსტრაქციის საჭიროება
2. რა არის ინკაფსულაცია (Encapsulation)
2.1. რამ განაპირობა ინკაფსულაციის საჭიროება
2.2. getter
2.3. setter
3. ინფორმაციის დამალვა – Information Hiding
3.1. ატრიბუტებზე წვდომის ტიპები
3.1.1. Public
3.1.2. Protected
3.1.3. Private
3.2. წვდომის ტიპები მეთოდებთან
4. property()
5. property setter
6. სტატიკური მეთოდები (static methods)
7. Static Methods vs Methods
დავალება XI
შეხვედრა 12 - Inheritane; Methods Overriding
1. რა არის კლასების მემკვიდრეობითობა
1.1. რამ განაპირობა მემკვიდრეობითობის არსებობა
2. მემკვიდრეობითობის ტიპები
3. მარტივი მემკვიდრეობითობა (SIngle Inheritance)
4. მეთოდების გადაფარვა (Methods OVERRIDING)
5. super() მეთოდი
6. მრავალ დონიანი მემკვიდრეობითობა (Multilevel Inheritance)
7. იერარქიული მემკვიდრეობა (Hierararchical Inheritance)
8. isinstance() და issubclass() ფუნქციები
9. მრავლობითი მემკვიდრეობითობა (Multiple Inheritance)
10. MRO – Method Resolution Order
11. Diamond Problem
12. hasattr(), getattr() და setattr() მეთოდები
დავალება XII
შეხვედრა 13 - Polymorphism
1. რა არის პოლიმორფიზმი (Polymorphism)
2. პოლიმორფული კლასები
3. პოლიმორფიზმი ფუნქციის გამოყენებით
4. Be Pythonic
4.1. Duck Typing vs Dynamic Typing
5. LBYL vs EAFP
6. მეთოდების გადატვირთვა (Method OVERLOADING)
7. ოპერატორების გადატვირთვა
8. magoinc (Dunder) methods
9. მსგავსი პრობლემების სხვადასხვა OOP პარადიგმით გადაჭრა
დავალება XIII
შეხვედრა 14 - Python & DBs
1. Python
2. Python
2.1. Create Connection – ბაზასთან კავშირის დამყარება
2.2. Create Statement – შესასრულებელი ბრძანების შექმნა
2.3. Execute Statement – ბრძანების გაშვება
2.4. Close Connection – ბაზასთან კავშირის გაწყვეტა
3. Client/Server Architecture
3.1. რა არის კლიენტი (Client)
3.2. რა არის სერვერი (Server)
3.3. RDBMS client/server architecture
4. SQLite: Server-less
4.1. რა არის SQLite
4.2. SQLite Viewer
4.3. DB Browser for SQLite
4.4. SQL Commands
4.4.1. DDL (Data Definition Language)
4.4.1.1. CREATE
4.4.1.2. ALTER
4.4.1.3 DROP
4.4.2. DML
4.4.2.1. SELECT
4.4.2.2. INSERT
4.4.2.3. UPDATE
4.4.2.4. DELETE
4.5. მონაცემთა ტიპები (Data Types)
4.4.3. String
4.4.3.1. CHAR(size)
4.4.3.2. VARCHAR(size)
4.4.3.3. TEXT(size)
4.4.3.4. BINARY(size)
4.4.4. Number
4.4.4.1. INT
4.4.4.2. INTEGER
4.4.4.3. TINYINT
4.4.4.4. BOOLEAN
4.4.4.5. FLOAT
4.4.4.6. DOUBLE
4.4.4.7. REAL
4.4.5. Dste/Time
4.4.5.1. DATE
4.4.5.2. TIME
4.4.5.3. DATETIME
4.4.6. Large Object Datatype
4.4.6.1. BLOB
4.4.6.2. LONGTEXT
4.6. CREATE TABLE: ცხრილის შექმნა
4.7. INSERT INTO – ჩანაწერის (მონაცემის) ჩასმა
4.8. INSERT: რამდენიმე ჩანაწერის ჩასმა – executemany
4.9. SELECT: მონაცემების ამორჩევა/წაკითხვა
4.9.1. fetchone
4.9.2. fetchall
4.9.3. getmany
4.10. პროგრამის სტრუქტურა
დავალება XIV
შეხვედრა 15 - Web Scrapping/Parsing
1. რა არის Web Scrapping/Parsing
2. Web Scrapping Tools
2.1. Beautiful Soup
2.2. Selenium
2.3. Scrapy
3. ვებ გვერდის URL
4. HTTP Status Codes
5. ვებ-გვერდის source code-ის გარჩევა
6. HTML tags, text, tag name, attrs
7. find() ფუნქცია
8. find_all() ფუნქცია
9. პარსირებული ინფორმაციის შენახვა
10. csv მოდული
11. სურათების scraping/parsing
12. არის თუ არა scraping ლეგალური
13. Web Parsing-ის სირთულეები
13.1. Variaty
13.2. Durability
14. API
15. JSON
დავალება XV
შეხვედრა 16 - Web Frameworks Intro (Part I)
1. რა არის WEB
1.1. რა არის Backend
1.2. რა არის Frontend
2. Full-Stack Frameworks
3. Micro (Non Full-Stack) Frameworks
4. ORM
5. Flask
6. Flask vs Django
7. პირველი ვებ აპლიკაციის შექმნა
8. გადამისამართება სხვა გვერდზე
8.1. ulr_for()
8.2. redirect()
9. Templates
დავალება XVI
შეხვედრა 17 - Web App (Part 2)
1. Templates – შაბლონების ურთიერთკავშირი
2. Jinja – Template Engine
3. Bootstrap – css framework
4. HTTP methods: GET, POST
5. Session
6. SQLAlchemy
7. ფინალური პროექტის დაგეგმვა
დავალება XVII – ფინალური პროექტი
შეხვედრა 18 - პროექტის წარდგენა
1. Code Review
2. Feedback
3. ზოგადი რჩევები
4. აბა, დავიშალეთ