Python Basics

David-Shainidze-Python

თუ გაინტერესებს Back-end დეველოპმენტი, OL Academy გთავაზობს პითონის ბაზისურ კურსს, კურსის დასრულების შემდეგ კი: 

  • წვდომას დახურულ ჯგუფზე, სადაც თავმოყრილი არიან ლექტორები, კურსდამთავრებულები და Python-ის სპეციალისტები, რომლებიც მუდმივად მზად არიან გაგიზიარონ წლობით დაგროვილი გამოცდილება, დაგეხმარონ და მოგცენ რჩევები.
  • ცოდნას, რომელიც პასუხობს ბაზარზე არსებულ  აქტუალურ მოთხოვნებს და უნარებს, რომლებიც დაგეხმარება სასურველი პოზიციის დაკავებაში.
  • წვდომას დასაქმებისა და სტაჟირების პროგრამებზე ჩვენს და მეგობარ კომპანიებში.

კურსის გასავლელად აუცილებელია:

  • გაინტერესებდეს Back-end დეველოპმენტი.
  • ფლობდე ინგლისურ ენას B1 დონეზე, რომ შეძლო მასალების კითხვა და გააზრება.

კურსი შედგება 18 ლექციისაგან, რომელთა განმავლობაშიც ITვისებ:

  • Python-ის საბაზისო და კომპლექსურ თემები
  • მონაცემთა სტრუქტურებსა და ალგორითმების საწყისებს
  • ობიექტზე ორიენტირებულ პროგრამირებას
  • ვერსიონირების სისტემის, GIT-ის, საწყისებს
  • ვებ სკრაპინგს დისტრიბუციული მონაცემთა წყაროების გასაერთიანებლად საჭირო ინფორმაციის სწრაფად და ავტომატურ რეჟიმში მიღებისთვის
  • Backend პროგრამირების საწყისებს
  • მარტივ, სტრუქტურულ და არქიტექტურულ პატერნებს
  • OOP პროგრამირებას

კურსის შედეგად:

  • შექმნი მარტივ ვებ აპლიკაციებსა და პორტფოლიოს
  • შეძლებ მარტივი არქიტექტურული პატერნების გააზრებასა და გამოყენებას
  • იმუშავებ სტრქუტურიზირებულ და არასტრუქტურიზირებულ მონაცემებთან
  • შეძლებ მონაცემთა ბაზებისა და პითონის კომბინაციურ გამოყენებას, მარიტივი და საშუალოდ კომპლექსური ამოცანების გადაჭრას
  • იღებ კვალიფიკაციის დამადასტურებელ სერტიფიკატს
  • გადადიხარ განვითარების ახალ საფეხურზე და იწყებ პროფესიონალი Back-end დეველოპერისკენ მიმავალ გზას.

შეხვედრა 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. აბა, დავიშალეთ
შემოგვიერთდი
ხანგრძლივობა: 36 საათი
ლექციების რაოდენობა: 18
დაწყების თარიღი: 20 სექტემბერი
დასრულების თარიღი: 19 ნოემბერი
ლექციის დღეები: სამშაბათი 19:00 - 21:00 შაბათი 19:00 - 21:00
ღირებულება:
კურსის სრული ღირებულება - ₾860