# kodkod | מבואות קודקוד > מבואות Full Stack – 5 שבועות: מחשב, מערכת הפעלה ורשת, Python מקצועי, Debugging ו-Git, OOP, Backend ומסדי נתונים - [מדיניות פרטיות ותנאי שימוש](https://intro-kodkod-6.nm-ambition.com/privacy/): האתר מיועד רק לתלמידי הקורס — אין להעביר את הקישור לאחרים. גם מדיניות הפרטיות שלנו מוסברת כאן. - [אדמין](https://intro-kodkod-6.nm-ambition.com/admin/): פאנל ניהול — סטודנטים באתר - [איפוס סיסמה](https://intro-kodkod-6.nm-ambition.com/forgot-password/): בקשת קישור לאיפוס הסיסמה - [בחירת סיסמה חדשה](https://intro-kodkod-6.nm-ambition.com/reset-password/): בחירת סיסמה חדשה לחשבון - [הפרופיל שלי](https://intro-kodkod-6.nm-ambition.com/profile/): השם, התיאור והצבע שלכם בצ'אט הקורס - [הרשמה](https://intro-kodkod-6.nm-ambition.com/signup/): הרשמה לאתר הקורס - [התחברות](https://intro-kodkod-6.nm-ambition.com/login/): התחברות לאתר הקורס - [ניהול](https://intro-kodkod-6.nm-ambition.com/manage/): ניהול חיילים, צוות, הרשאות והגדרות - [צ'אט הקורס](https://intro-kodkod-6.nm-ambition.com/chat/): קבוצת צ'אט משותפת לכל הלומדים בקורס - [מבואות קודקוד](https://intro-kodkod-6.nm-ambition.com/docs/): מבואות Full Stack: מחשב, מערכת הפעלה ורשת, Python מקצועי, Debugging ו-Git, OOP, Backend ומסדי נתונים ## מבואות קודקוד > מבואות Full Stack: מחשב, מערכת הפעלה ורשת, Python מקצועי, Debugging ו-Git, OOP, Backend ומסדי נתונים - [התקנות](https://intro-kodkod-6.nm-ambition.com/docs/installations/): כל מה שמתקינים בקורס: Python, VS Code, Git ו-Docker ביום הראשון, איך בודקים שהכול עובד, ומה מוסיפים בהמשך. נושא תיאורטי-מעשי, בלי קוד. - [המחשב ומערכת ההפעלה](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/): סביבת העבודה והטרמינל, איך מחשב בנוי ואיך תוכנית רצה בו: רכיבי החומרה, סוגי שפות תכנות, מערכת ההפעלה, תהליכים, קבצים והרשאות. נושא תיאורטי. - [רשתות ואינטרנט](https://intro-kodkod-6.nm-ambition.com/docs/networking/): איך מחשבים מדברים זה עם זה: Client-Server, כתובות IP, Ports ו-DNS, מודל השכבות ופרוטוקולים, ומה קורה בדפדפן. נושא תיאורטי. - [Python מקצועי, קוד נקי ו-Debugging](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/): שמות ופונקציות קטנות, DRY/KISS והפרדת אחריות, באגים, Stack Trace ותהליך דיבאג מסודר. - [Exceptions ו-Logging](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/): טיפול בשגיאות עם try/except/else/finally, זריקת שגיאות עם raise, ותיעוד מה שקורה בתוכנית עם logging — כולל לקובץ. - [Git ו-GitHub](https://intro-kodkod-6.nm-ambition.com/docs/git/): ניהול גרסאות: למה צריך, פקודות הבסיס של Git, ועבודה מול GitHub עם push. - [מבני נתונים ופונקציות](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/): list, tuple, set ו-dict, Slicing ו-Mutability, פונקציות עם args/kwargs/lambda, Scope (LEGB), ופונקציות מתקדמות: Pure Functions, Higher-Order Functions, nonlocal ו-Decorators. - [מודולים, קבצים ו-JSON](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/): חלוקת קוד למודולים ו-Packages, עבודה עם קבצי טקסט ו-with, ושמירה וקריאה של נתונים ב-JSON. - [OOP – תכנות מונחה עצמים](https://intro-kodkod-6.nm-ambition.com/docs/oop/): Classes ואובייקטים, מצב, Encapsulation ו-property, ירושה ופולימורפיזם, ותכנון OOP — מהבעיה ועד מערכת שלמה. - [Backend ו-FastAPI](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/): מה זה Backend, HTTP Methods וקודי סטטוס, Path/Query/Body, הקמת שרת ראשון עם FastAPI, ו-Middleware שרץ על כל בקשה. - [מסדי נתונים ו-MySQL](https://intro-kodkod-6.nm-ambition.com/docs/databases/): מה זה מסד נתונים, MySQL בקונטיינר של Docker עם ממשק ב-VS Code, יצירת טבלאות ושאילתות, ופעולות CRUD מלאות מתוך Python. - [Students API – שרת עם מסד נתונים](https://intro-kodkod-6.nm-ambition.com/docs/students-api/): חיבור Routes למסד הנתונים, Students API עם CRUD מלא, ובדיקה עם Swagger. ### התקנות > כל מה שמתקינים בקורס: Python, VS Code, Git ו-Docker ביום הראשון, איך בודקים שהכול עובד, ומה מוסיפים בהמשך. נושא תיאורטי-מעשי, בלי קוד. - [התקנות: כל מה שמתקינים בקורס](https://intro-kodkod-6.nm-ambition.com/docs/installations/01-installations/): כל הכלים שמתקינים בקורס — Python, VS Code, Git ו-Docker ביום הראשון, ומה מוסיפים בהמשך — מה התפקיד של כל כלי, איך מתקינים צעד אחר צעד ואיך בודקים שהכול עובד. ### המחשב ומערכת ההפעלה > סביבת העבודה והטרמינל, איך מחשב בנוי ואיך תוכנית רצה בו: רכיבי החומרה, סוגי שפות תכנות, מערכת ההפעלה, תהליכים, קבצים והרשאות. נושא תיאורטי. - [סביבת העבודה: Terminal וקובץ קוד ראשון](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/01-dev-environment/): שורת הפקודה — Terminal, Shell ופקודות בסיסיות — תיקיית העבודה של הקורס, ומה זה קובץ קוד ואיך מריצים אותו. - [איך מחשב עובד: רכיבים, הרצת תוכנה ושפות תכנות](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/02-how-computers-work/): רכיבי המחשב (CPU, RAM, Storage, Registers), מה קורה מהרגע שמפעילים תוכנה ועד שהיא רצה, וסוגי שפות תכנות. - [מערכת ההפעלה: Kernel, תהליכים, קבצים והרשאות](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/03-operating-system/): מה עושה מערכת ההפעלה ומהו Kernel, תוכנה מול תהליך וניהול זיכרון, ומערכת הקבצים, משתמשים והרשאות. - [מערך שיעור: סביבת עבודה ומבנה המחשב](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/instructor-computer/): מערך שיעור למרצה לנושא המחשב ומערכת ההפעלה — היכרות, התקנות, הרצה ראשונה, רכיבי המחשב ומסלול הרצת תוכנה. - [מערך שיעור: מערכת הפעלה ו-Terminal](https://intro-kodkod-6.nm-ambition.com/docs/computer-and-os/instructor-os/): מערך שיעור למרצה לנושא המחשב ומערכת ההפעלה — תפקידי מערכת ההפעלה, Kernel, Program מול Process, ניהול זיכרון, File System, הרשאות ו-Terminal. ### רשתות ואינטרנט > איך מחשבים מדברים זה עם זה: Client-Server, כתובות IP, Ports ו-DNS, מודל השכבות ופרוטוקולים, ומה קורה בדפדפן. נושא תיאורטי. - [רשתות ואינטרנט: Client-Server, כתובות, פרוטוקולים והמסע של בקשה](https://intro-kodkod-6.nm-ambition.com/docs/networking/01-networks-internet/): איך מחשבים מתקשרים: רשתות ו-Client-Server, כתובות IP, Ports ו-DNS, מודל השכבות ופרוטוקולים, ומה קורה מהקלדת כתובת ועד שהאתר מוצג. - [מערך שיעור: רשתות ואינטרנט](https://intro-kodkod-6.nm-ambition.com/docs/networking/instructor-network-basics/): מערך שיעור למרצה לנושא רשתות ואינטרנט — רשת, LAN ואינטרנט, Client/Server, IP, Port, DNS, פרוטוקולים, HTTP/HTTPS, TCP/UDP והמסע מהדפדפן לשרת. ### Python מקצועי, קוד נקי ו-Debugging > שמות ופונקציות קטנות, DRY/KISS והפרדת אחריות, באגים, Stack Trace ותהליך דיבאג מסודר. - [Clean Code א': שמות טובים, פונקציות קטנות ואחריות אחת](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/03-naming-and-small-functions/): למה קוד נקי חשוב, איך בוחרים שמות למשתנים, פונקציות וקבצים, ואיך מפרקים פונקציה ארוכה לפונקציות קטנות עם אחריות אחת (Single Responsibility). - [Clean Code ב': DRY, KISS, הפרדת אחריות, הערות ו-Refactoring](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/04-dry-kiss-soc-comments/): ארבעה עקרונות שמשאירים קוד בריא לאורך זמן — לא לחזור על עצמך (DRY), לשמור על פשטות (KISS), להפריד בין חלקים שונים (Separation of Concerns) — ומתי באמת צריך הערות. ולבסוף: איך משפרים קוד קיים בבטחה. - [Debugging א': מהו Bug, סוגי שגיאות וקריאת Stack Trace](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/05-bugs-and-stack-trace/): מהו באג, שלושת סוגי השגיאות — Syntax, Runtime ו-Logical — ואיך קוראים הודעת שגיאה ו-Stack Trace מלמטה למעלה כדי למצוא בדיוק איפה ולמה הקוד נשבר. - [Debugging ב': תהליך הדיבאג וה-Debugger של VS Code](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/06-debugging-process-and-tools/): תהליך מסודר למציאת באגים — שחזור, בידוד, הבנת שורש הבעיה, תיקון ובדיקה — ועבודה מעשית עם Breakpoints, Step Over, Step Into, חלון Variables ו-Call Stack, כולל פתרון באג אמיתי מההתחלה ועד הסוף. - [מערך שיעור: Clean Code ו-Debugging](https://intro-kodkod-6.nm-ambition.com/docs/python-clean-code/instructor-clean-code/): מערך שיעור למרצה לנושא Python מקצועי, קוד נקי ו-Debugging — שמות, פונקציות קטנות, DRY, KISS, הפרדת אחריות, הערות, סוגי באגים, Traceback ו-Debugger. ### Exceptions ו-Logging > טיפול בשגיאות עם try/except/else/finally, זריקת שגיאות עם raise, ותיעוד מה שקורה בתוכנית עם logging — כולל לקובץ. - [Exceptions א': למה צריך טיפול בשגיאות, try ו-except](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/01-try-except/): מהו Exception, למה תוכנה אמיתית לא יכולה פשוט לקרוס, איך תופסים שגיאה עם try/except, ואיך מטפלים בכמה סוגי Exceptions שונים בצורה נכונה. - [Exceptions ב': else ו-finally — המבנה המלא](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/02-else-finally/): המבנה המלא של try/except/else/finally — מה רץ מתי, למה else מפריד בין הקוד המסוכן לקוד שתלוי בהצלחה, ולמה finally הוא המקום לניקוי שחייב לקרות תמיד. - [Exceptions ג': raise — לזרוק שגיאה בעצמנו](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/03-raise/): איך ומתי זורקים Exception בעצמנו עם raise, איך בוחרים את סוג השגיאה המתאים, ולמה עדיף שפונקציה תזרוק שגיאה ברורה מאשר תחזיר ערך שגוי בשקט — כולל העברת שגיאה הלאה למי שקרא. - [Logging א': למה print אינו Logging, ורמות הלוג](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/04-logging-basics/): ההבדל בין print לבין Logging, מה זה Log ולמה כל מערכת אמיתית כותבת אותו, חמש רמות הלוג — debug, info, warning, error, critical — ואיך מגדירים איזו רמה תוצג. - [Logging ב': שמירת Logs לקובץ ותיעוד פעולות חשובות](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/05-logging-to-file/): איך שומרים לוגים לקובץ שנשאר אחרי שהתוכנית נגמרת, מצבי כתיבה (הוספה מול דריסה), רישום Exceptions עם ה-Traceback המלא בעזרת logging.exception, ומה בדיוק כדאי לתעד. - [מערך שיעור: Exceptions ו-Logging](https://intro-kodkod-6.nm-ambition.com/docs/python-errors-logging/instructor-errors-logging/): מערך שיעור למרצה לנושא Exceptions ו-Logging — למה צריך טיפול בשגיאות, try/except/else/finally, raise, print מול Logging, רמות לוג ושמירה לקובץ. ### Git ו-GitHub > ניהול גרסאות: למה צריך, פקודות הבסיס של Git, ועבודה מול GitHub עם push. - [Version Control: למה צריך, ומושגי היסוד של Git](https://intro-kodkod-6.nm-ambition.com/docs/git/01-version-control-concepts/): מהי בקרת גרסאות ואיזו בעיה היא פותרת, מה זה Git, ושלושת האזורים שכל פקודת Git עובדת מולם — Working Directory, Staging Area ו-Repository — ומהו Commit. - [פקודות Git בסיסיות: init, status, add, commit, log](https://intro-kodkod-6.nm-ambition.com/docs/git/02-git-basic-commands/): עבודה יומיומית עם Git צעד אחר צעד — יצירת Repository, קריאת git status, הוספה ל-Staging, Commit עם הודעה, צפייה בהיסטוריה ובהבדלים (log, diff), וקובץ ‎.gitignore. - [GitHub, Remote ו-Push — והודעות Commit טובות](https://intro-kodkod-6.nm-ambition.com/docs/git/03-github-remote-push/): יצירת Repository ב-GitHub, חיבור Remote ל-Repository המקומי, העלאת הקוד עם git push, אימות מול GitHub, וכללים לכתיבת הודעות Commit ברורות. - [מערך שיעור: Git ו-GitHub](https://intro-kodkod-6.nm-ambition.com/docs/git/instructor-git/): מערך שיעור למרצה לנושא Git ו-GitHub — Version Control, שלושת האזורים, init/status/add/commit/log, .gitignore, GitHub, Remote, push והודעות Commit. ### מבני נתונים ופונקציות > list, tuple, set ו-dict, Slicing ו-Mutability, פונקציות עם args/kwargs/lambda, Scope (LEGB), ופונקציות מתקדמות: Pure Functions, Higher-Order Functions, nonlocal ו-Decorators. - [list — רשימה: יצירה, גישה, הוספה, מחיקה, חיפוש ומעבר](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/01-list/): הכול על list מהבסיס: איך יוצרים רשימה, אינדקסים חיוביים ושליליים, הוספה (append, insert), מחיקה (remove, pop, del), חיפוש (in, index, count), מעבר בלולאה ומיון. - [tuple ו-set — רשומה קבועה ואוסף בלי כפילויות](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/02-tuple-and-set/): tuple — רצף קבוע שלא ניתן לשינוי, ופירוק (Unpacking) שלו למשתנים; set — אוסף ללא כפילויות וללא סדר, בדיקת שייכות מהירה ופעולות של קבוצות: איחוד, חיתוך והפרש. - [dict — מילון: מפתח וערך](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/03-dict/): dict מהבסיס: איך יוצרים מילון, קוראים ערך לפי מפתח, מוסיפים, מעדכנים ומוחקים, get עם ברירת מחדל, מעבר עם keys/values/items, ורשימה של מילונים — המבנה שמייצג רשומות ו-JSON. - [Slicing, Mutable מול Immutable, ו-is מול ==](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/04-slicing-mutability-identity/): חיתוך רצפים עם Slicing ‏[start:stop:step]; ההבדל בין טיפוסים שניתנים לשינוי לכאלה שלא; מה קורה כששני משתנים מצביעים על אותה רשימה; וההבדל בין שוויון ערכים (==) לזהות אובייקט (is). - [פונקציות לעומק: ערכי ברירת מחדל, Functions as Objects, ‎*args, ‎**kwargs ו-Lambda](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/05-functions-args-kwargs-lambda/): חזרה מסודרת על פונקציות, פרמטרים עם ערך ברירת מחדל וארגומנטים בשם, פונקציה כאובייקט שאפשר להעביר, פונקציות עם מספר משתנה של ארגומנטים (*args, **kwargs), ו-lambda ברמת היכרות. - [Scope — Local, Enclosing, Global ו-Built-in (LEGB)](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/06-scope-legb/): איפה משתנה 'חי' ומאיפה אפשר לראות אותו: משתנים מקומיים בתוך פונקציה, משתנים גלובליים, פונקציה בתוך פונקציה (Enclosing), שמות מובנים, וסדר החיפוש LEGB — כולל global ולמה כדאי להימנע ממנו. - [Pure Functions — פונקציות טהורות ו-Side Effects](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/07-pure-functions/): מה זו פונקציה טהורה, מה נחשב Side Effect, למה פונקציה שמשנה רשימה שקיבלה היא מלכודת, ואיך כותבים גרסה טהורה שמחזירה ערך חדש. - [Higher-Order Functions — פונקציות שמקבלות ומחזירות פונקציות](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/08-higher-order-functions/): פונקציה שמקבלת פונקציה כפרמטר או מחזירה פונקציה: העברת פעולה כפרמטר, map, filter, הפרמטר key של sorted/max/min, ופונקציה שמייצרת פונקציות. - [Nested Functions, Closures ו-nonlocal](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/09-nested-functions-nonlocal/): פונקציה בתוך פונקציה, ה-E של LEGB (Enclosing), Closure — פונקציה שזוכרת את המשתנים של הפונקציה שיצרה אותה, ו-nonlocal לשינוי משתנה של הפונקציה העוטפת. - [Decorators — להוסיף התנהגות לפונקציה בלי לגעת בה](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/10-decorators/): מה זה Decorator, איך הוא בנוי מ-Higher-Order Functions ומ-Closures, התחביר @, wrapper שמתאים לכל פונקציה עם *args ו-**kwargs, ודוגמאות שימושיות: הדפסת קריאות ומדידת זמן. - [מערך שיעור: מבני נתונים ופונקציות](https://intro-kodkod-6.nm-ambition.com/docs/python-data-functions/instructor-data-functions/): מערך שיעור למרצה לנושא מבני נתונים ופונקציות — list, tuple, set, dict, Slicing, Mutable/Immutable, is מול ==, Functions as Objects, ‎*args/**kwargs, lambda ו-Scope. ### מודולים, קבצים ו-JSON > חלוקת קוד למודולים ו-Packages, עבודה עם קבצי טקסט ו-with, ושמירה וקריאה של נתונים ב-JSON. - [Modules: למה מחלקים לקבצים, import, from ו-as](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/01-modules-and-import/): מהו Module, למה מחלקים פרויקט למספר קבצים, איך מייבאים קוד מקובץ אחר עם import, from ו-as, ומה קורה מאחורי הקלעים כשמייבאים. - [Packages, ‏__init__.py ו-if __name__ == "__main__"](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/02-packages-and-main-guard/): איך מארגנים מודולים בתיקיות (Package), מה התפקיד של __init__.py, איך מייבאים מתוך Package, ומה המשמעות של התנאי if __name__ == '__main__' — ולמה כל קובץ שמיועד להרצה צריך אותו. - [עבודה עם קבצי טקסט: open, with, קריאה וכתיבה](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/03-text-files-with/): איך פותחים קובץ, מצבי פתיחה (r, w, a), למה חייבים לסגור קובץ ואיך with עושה את זה בשבילנו, דרכים לקרוא (read, readlines, לולאה) ולכתוב (write), ואיך בונים נתיב שלא תלוי בתיקייה שממנה מריצים. - [JSON: קריאה, כתיבה ושמירת נתונים](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/04-json/): מהו JSON ולמה הוא הפורמט הנפוץ ביותר לשמירה ולהעברת נתונים, ההתאמה בין JSON לבין dict ו-list של Python, ושמירה וטעינה של נתונים עם json.dump, json.load, json.dumps ו-json.loads. - [מערך שיעור: Modules, Packages וקבצים](https://intro-kodkod-6.nm-ambition.com/docs/python-modules-files/instructor-modules-files/): מערך שיעור למרצה לנושא מודולים, קבצים ו-JSON — חלוקה למודולים, import/from/as, Package ו-__init__.py, __name__, קבצי טקסט עם with, ו-JSON. ### OOP – תכנות מונחה עצמים > Classes ואובייקטים, מצב, Encapsulation ו-property, ירושה ופולימורפיזם, ותכנון OOP — מהבעיה ועד מערכת שלמה. - [מחלקות ואובייקטים: מהבעיה ועד Class שלמה](https://intro-kodkod-6.nm-ambition.com/docs/oop/01-classes-and-objects/): שיעור אחד שמתגלגל כמו סיפור: מערכת בנק קטנה שנשברת בלי OOP, ואז Class ו-Object, ‏__init__ ו-self, Methods ו-Class Attributes — ובסוף חוזרים לבנק ובונים אותו מחדש, ומיני פרויקט שמחבר הכול. - [מערך שיעור: Class, Object ו-Instance](https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-classes/): מערך שיעור למרצה לנושא OOP – Classes ואובייקטים — למה OOP, קוד פרוצדורלי מול אובייקטים, Class ו-Object, __init__ ו-self, Instance Attributes ו-Methods. - [אובייקטים בעבודה: מצב, הסתרת מידע, Properties ומחלקה שלמה](https://intro-kodkod-6.nm-ambition.com/docs/oop/02-objects-in-practice/): שיעור אחד שמתגלגל כמו סיפור: הרבה אובייקטים ומצב שמשתנה, ואז מגלים שכל קוד יכול לשבור את הנתונים — מסתירים אותם (Encapsulation), שומרים על תחביר פשוט עם @property שבודק כל השמה, ובונים מחלקה שלמה עם כללים. בסוף — מיני פרויקט שמחבר הכול. - [מערך שיעור: עבודה נכונה עם Objects ו-Encapsulation](https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-state-encapsulation/): מערך שיעור למרצה לנושא OOP – Classes ואובייקטים — Attribute מול Method, Class Attributes, הרבה אובייקטים והפניות, Encapsulation, Getters/Setters ו-@property, ובניית Class שלמה. - [ירושה ו-super: Classes דומות בלי קוד כפול](https://intro-kodkod-6.nm-ambition.com/docs/oop/03-inheritance/): שיעור אחד שמתגלגל כמו סיפור: עובד ומנהל עם אותו קוד פעמיים — ירושה פותרת את זה; ואז Child שצריך להתנהג קצת אחרת — דריסה (Override) ו-super(). בסוף — מיני פרויקט שמחבר הכול. - [Polymorphism: ממשק משותף, התנהגות שונה](https://intro-kodkod-6.nm-ambition.com/docs/oop/04-polymorphism/): מה המשמעות של Polymorphism, למה הוא שימושי — קוד אחד שעובד על הרבה סוגים בלי if-ים — ממשק משותף דרך Parent Class, Duck Typing בפייתון, ואיך זה הופך מערכת לקלה להרחבה. - [מערך שיעור: Inheritance ו-Polymorphism](https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-inheritance/): מערך שיעור למרצה לנושא ירושה ופולימורפיזם — למה ירושה, Parent ו-Child, super() ו-Override, Polymorphism וממשק משותף, type/isinstance/issubclass ו-Exceptions משלנו. - [Single Responsibility ב-OOP ו-Composition לעומת Inheritance](https://intro-kodkod-6.nm-ambition.com/docs/oop/05-srp-and-composition/): איך מפרקים God Class למחלקות עם אחריות אחת, מהי Composition ('יש לו' — אובייקט שמורכב מאובייקטים אחרים), ואיך בוחרים בין Composition לבין Inheritance — ברמת מבוא. - [תרגול מודרך: מדרישה מילולית למבנה מחלקות](https://intro-kodkod-6.nm-ambition.com/docs/oop/06-from-requirements-to-classes/): סדנת תכנון מלאה צעד אחר צעד: מקבלים דרישה של מערכת לחדר כושר, מנתחים אותה, מחליטים על Classes ואחריות, משרטטים קשרים, כותבים שלד, ממשים ובודקים — תהליך שאפשר לחזור עליו בכל פרויקט. - [מערך שיעור: תכנון OOP ותרגול משלב](https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-design/): מערך שיעור למרצה לנושא תכנון OOP — איך מחליטים מה Class/Attribute/Method, SRP ו-Composition, סדנת תכנון מדרישה למחלקות, Debugging ו-Refactoring בקוד OOP. ### Backend ו-FastAPI > מה זה Backend, HTTP Methods וקודי סטטוס, Path/Query/Body, הקמת שרת ראשון עם FastAPI, ו-Middleware שרץ על כל בקשה. - [Backend ו-HTTP: מי עושה מה, Methods ו-Status Codes](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/01-what-is-backend/): התפקיד של ה-Backend — איך Client, Server ו-Database עובדים יחד, ומה הם API ו-Endpoint — ואיך מדברים איתו: GET, POST, PUT ו-DELETE מול CRUD, וקודי התשובה הבסיסיים שכל Backend מחזיר. - [FastAPI מאפס: התקנה, app = FastAPI(), Route ראשון והרצת השרת](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/04-fastapi-setup-first-route/): הקמת שרת FastAPI ראשון צעד אחר צעד: סביבה וירטואלית (venv), התקנה עם pip, יצירת main.py, ייבוא FastAPI, יצירת app, הגדרת Route ראשון עם Decorator, הרצה עם uvicorn, ודף התיעוד האוטומטי /docs. - [Path Params, Query Parameters ו-Body](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/03-params-query-body/): שלוש הדרכים שבהן Client מעביר מידע לשרת: פרמטר בנתיב (/students/7), פרמטרים ב-Query (?city=Haifa&limit=10), ו-Body ב-JSON — מתי משתמשים בכל אחת, ואיך הן נראות בבקשה אמיתית. - [FastAPI: Path Params, Query, Body ו-HTTPException](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/05-fastapi-params-query-body/): איך FastAPI קורא את שלושת סוגי הקלט: Path Parameter עם המרת טיפוס, Query Parameters עם ערכי ברירת מחדל ופרמטרים אופציונליים, ו-Body מוגדר עם מודל Pydantic — כולל Type Hints, status_code=201, HTTPException ל-404, ושגיאת 422 האוטומטית. - [Middleware — קוד שרץ על כל בקשה](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/06-middleware/): מה זה Middleware ב-FastAPI: קוד שעוטף כל בקשה לשרת — לפני ה-Route ואחריו. לוג לכל בקשה, מדידת זמן ו-Header לכל תשובה, async ו-await, ומתי Middleware הוא לא המקום הנכון. - [מערך שיעור: מבוא ל-Backend ו-HTTP](https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/instructor-fastapi/): מערך שיעור למרצה לנושא Backend ו-FastAPI — Backend, Client/Server/Database, API ו-Endpoint, HTTP Methods ו-Status Codes, Path/Query/Body, והקמת FastAPI מאפס. ### מסדי נתונים ו-MySQL > מה זה מסד נתונים, MySQL בקונטיינר של Docker עם ממשק ב-VS Code, יצירת טבלאות ושאילתות, ופעולות CRUD מלאות מתוך Python. - [מסד נתונים והקמת MySQL: טבלאות, מפתחות, Docker ו-Driver](https://intro-kodkod-6.nm-ambition.com/docs/databases/01-what-is-a-database/): למה צריך מסד נתונים כשיש קבצי JSON, ומהם Table, Row, Column, Primary Key, טיפוסים ואילוצים — ואיך מקימים שרת MySQL בקונטיינר של Docker, מתחברים אליו מ-VS Code עם Database Client ומ-Python דרך ה-Driver. - [חיבור, טבלה והכנסת נתונים: Connection, CREATE TABLE ו-INSERT](https://intro-kodkod-6.nm-ambition.com/docs/databases/03-open-test-close-connection/): פותחים חיבור ל-MySQL, בודקים שהוא עובד וסוגרים אותו נכון עם try/finally — ואז יוצרים טבלה עם טיפוסים ואילוצים, מכניסים נתונים מ-Python ורואים את המסד מסרב לנתונים שוברים כללים. - [מערך שיעור: מהו Database וחיבור ראשוני](https://intro-kodkod-6.nm-ambition.com/docs/databases/instructor-db-setup/): מערך שיעור למרצה לנושא מסדי נתונים ו-MySQL — למה Database, טבלה/שורה/עמודה, Primary Key וטיפוסים, MySQL ב-Docker, Database Client ו-Driver, ומחזור החיים של Connection. - [SQL בסיסי: SELECT, WHERE לפי id וסינון פשוט](https://intro-kodkod-6.nm-ambition.com/docs/databases/02-select-where/): קריאת נתונים מטבלה: SELECT של כל השורות או של עמודות נבחרות, WHERE לפי id לשליפת רשומה אחת, תנאים פשוטים (=, >, AND), ORDER BY למיון, ומה מחזירה שאילתה שלא מצאה כלום. - [הרצת Query מתוך Python: execute, פרמטרים, commit ו-fetch](https://intro-kodkod-6.nm-ambition.com/docs/databases/03-queries-from-python/): המסלול המלא Python → Connection → Query → Database → Result → Python: הרצת CREATE, INSERT ו-SELECT עם execute, פרמטרים עם %s (ולמה אסור לבנות SQL בשרשור — SQL Injection), commit לשמירה, lastrowid, ו-fetchone/fetchall. - [מערך שיעור: SQL בסיסי — Create ו-Read](https://intro-kodkod-6.nm-ambition.com/docs/databases/instructor-sql-queries/): מערך שיעור למרצה לנושא מסדי נתונים ו-MySQL — CREATE TABLE, INSERT, SELECT ו-WHERE, הרצת Query מ-Python עם פרמטרים, SQL Injection, commit, ו-db.py שמחזיר dicts. - [עדכון ומחיקה: UPDATE ו-DELETE לפי id — מ-SQL ומ-Python](https://intro-kodkod-6.nm-ambition.com/docs/databases/01-update/): עדכון רשומה ומחיקת רשומה לפי id, גם ב-SQL וגם מ-Python עם פרמטרים: למה WHERE חובה, איך יודעים אם משהו באמת השתנה עם rowcount, ומה קורה ל-id שנמחק. - [CRUD מלא מתוך Python: מודול db.py שלם ובדיקת כל ארבע הפעולות](https://intro-kodkod-6.nm-ambition.com/docs/databases/04-full-crud-module/): חיבור כל מה שנלמד למודול גישה למסד אחד ושלם — init_db, create, get_all, get, update ו-delete — עם פרמטרים, commit, rowcount, תרגום שגיאות ו-dicts, ותסריט בדיקה שמריץ את כל ארבע פעולות ה-CRUD על Entity אחת. - [מערך שיעור: SQL בסיסי — Update ו-Delete](https://intro-kodkod-6.nm-ambition.com/docs/databases/instructor-crud/): מערך שיעור למרצה לנושא מסדי נתונים ו-MySQL — UPDATE ו-DELETE לפי id, rowcount, בדיקת קיום, תרגום IntegrityError, Transaction עם commit ו-rollback, ומודול CRUD מלא. ### Students API – שרת עם מסד נתונים > חיבור Routes למסד הנתונים, Students API עם CRUD מלא, ובדיקה עם Swagger. - [חיבור Routes לפעולות Database — הארכיטקטורה](https://intro-kodkod-6.nm-ambition.com/docs/students-api/01-connecting-routes-to-db/): איך מחברים את FastAPI ל-db.py: הפרדה בין Route לבין קוד הגישה למסד, טבלת המיפוי POST→INSERT, GET→SELECT, PUT→UPDATE, DELETE→DELETE, מה קורה בבקשה אחת מקצה לקצה, והרצת שני ה-Endpoints הראשונים — GET הכול ו-GET לפי id. - [Students API — CRUD מלא: POST, GET, PUT ו-DELETE מול המסד](https://intro-kodkod-6.nm-ambition.com/docs/students-api/02-students-api-full-crud/): השלמת השרת: מודל Pydantic לקלט, פונקציית ולידציה משותפת, POST שיוצר ומחזיר 201, PUT שמעדכן עם 404 ו-409, DELETE שמחזיר 204 — הקוד המלא של main.py, וכל התשובות האמיתיות שלו. - [בדיקת המערכת: Swagger UI, curl ותסריט בדיקה ב-Python](https://intro-kodkod-6.nm-ambition.com/docs/students-api/03-testing-with-swagger/): שלוש דרכים לבדוק API — Swagger UI ב-/docs (Try it out), curl מה-Terminal, ותסריט Python שמריץ סדרת בקשות ומשווה לקודים צפויים — ורשימת בדיקות ידניות מסודרת לכל פעולות ה-CRUD. - [מערך שיעור: CRUD מלא — Server + Database](https://intro-kodkod-6.nm-ambition.com/docs/students-api/instructor-students-api/): מערך שיעור למרצה לנושא Students API – שרת עם מסד נתונים — חיבור Routes ל-db.py, הפרדת שכבות, POST/GET/PUT/DELETE מול המסד, קודי סטטוס, ובדיקה עם Swagger ותסריט בדיקה.