# מערך שיעור: סביבת עבודה ומבנה המחשב<no value>

**משך:** יום לימוד מלא — 6 שעות אקדמיות (270 דקות).

**מטרת השיעור:** הסטודנטים יגיעו לסוף היום עם סביבת עבודה תקינה, יריצו קוד Python בעצמם, ויבינו את התמונה הבסיסית של מה שקורה "מתחת למכסה" כשקוד רץ.

**בסוף השיעור הסטודנטים צריכים:**

1. להריץ קובץ Python מה-Terminal ומכפתור Run, מתוך תיקיית עבודה מסודרת.
2. להסביר במילים שלהם את התפקיד של CPU, RAM, Storage ו-Registers ואת ההבדל בין זיכרון זמני לקבוע.
3. לתאר את המסלול מקובץ על הדיסק ועד Process שרץ, ולהבחין בין Syntax Error ל-Runtime Error.

**דגש קריטי:** היום הראשון קובע את הקצב לכל הקורס. אף סטודנט לא יוצא להפסקה הראשונה בלי סביבה עובדת. תקלות התקנה שנגררות לנושא המחשב ומערכת ההפעלה "גונבות" זמן מכל השבוע.

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה והיכרות | 25 דק' | היכרות קצרה, תיאום ציפיות, הצגת מבנה הקורס והאתר: כפתור "סמן כהושלם", דפי התרגול, פתרונות נפתחים. |
| התקנות — Python, VS Code, Git | 50 דק' | הדגמה על המסך צעד-צעד, הסטודנטים מתקינים במקביל. עוזר הוראה עובר בין השולחנות. |
| בדיקת תקינות ופתרון תקלות | 20 דק' | כל אחד מריץ את 4 פקודות הבדיקה. מי שנכשל — טיפול פרטני. ב-Windows רוב התקלות הן PATH. |
| הפסקה | 15 דק' | |
| תיקיית עבודה והרצה ראשונה | 40 דק' | בניית `kodkod6/week-1`, Open Folder, `hello.py`, ואז `student_card.py`. להדגים בכוונה את טעות "התיקייה הלא נכונה". |
| רכיבי המחשב | 45 דק' | אנלוגיית המטבח. סיור ב-Task Manager. הרצת `my_computer.py` ו-`memory_test.py` (שלוש הרצות → תמיד 1). |
| הפסקה | 15 דק' | |
| מה קורה כשמפעילים תוכנה | 40 דק' | 6 השלבים על הלוח, Fetch-Decode-Execute, ואז המסלול של Python. `slow_program.py` + צפייה בתהליך ב-Task Manager. |
| תרגול עצמאי ודף "בדוק את עצמך" | 20 דק' | הסטודנטים עובדים על דף התרגול. המרצה עובר ומזהה מי מתקשה. |

---

## דגשים להעברת השיעור

- **לא להניח ידע.** חלק מהסטודנטים מעולם לא פתחו Terminal. להסביר מה זה "סמן", מה זה "תיקייה נוכחית", למה מקלידים ולא לוחצים.
- **להקליד מול הכיתה, לא להדביק.** הסטודנטים צריכים לראות את הקצב ואת הטעויות. טעות הקלדה אמיתית מול הכיתה היא הזדמנות להדגים קריאת שגיאה.
- **שגיאה היא חבר.** כבר מהיום הראשון לקרוא בקול כל הודעת שגיאה: איפה כתוב מה הבעיה, באיזו שורה, מה הסוג.
- **Mac מול Windows:** להזכיר `python3` במק, ו-`/` מול `\` בנתיבים. כדאי לכתוב על הלוח טבלת "Windows | Mac" ולהשאיר אותה כל היום.
- **אנלוגיות מחזקות את ההסבר, לא מחליפות אותו.** אחרי אנלוגיית המטבח, לחזור למונחים המקצועיים: Volatile, Non-volatile, Register.
- **הקשר להמשך:** לסיים את חלק ה-RAM במשפט "בנושא Backend ומסדי נתונים נשמור מידע ב-Database בדיוק בגלל זה" — הסטודנטים צריכים להרגיש שיש סיבה ללמוד חומרה בקורס תכנות.
- **ההבחנה Syntax / Runtime** היא הזרע של יום ה-Debugging בנושא Python. כדאי להדגיש אותה כבר עכשיו.

---

## מושגים

| מושג | הסבר קצר |
|---|---|
| Development Environment | סביבת הפיתוח — אוסף הכלים לכתיבה, הרצה וניהול קוד. |
| Interpreter | תוכנה שקוראת קוד Python ומבצעת אותו. |
| Code Editor | עורך טקסט מותאם לקוד (VS Code). |
| Terminal / Shell | חלון לפקודות טקסט, והתוכנה שמפרשת אותן. |
| PATH | רשימת תיקיות שבהן ה-Terminal מחפש תוכנות. |
| CPU / Core | המעבד שמבצע הוראות. ליבה היא יחידת ביצוע עצמאית בתוכו. |
| Register | תא זיכרון זעיר ומהיר בתוך ה-CPU. |
| RAM | זיכרון ראשי מהיר וזמני (Volatile). |
| Storage (SSD/HDD) | אחסון קבוע (Non-volatile), גדול ואיטי יחסית. |
| Process / PID | תוכנה בזמן ריצה, ומספר הזיהוי שלה. |
| Fetch-Decode-Execute | מחזור הביצוע הבסיסי של ה-CPU. |
| Bytecode / PVM | שפת הביניים ש-Python מתרגמת אליה, והמכונה הווירטואלית שמבצעת אותה. |

---

## תרגיל חשיבה

**שאלת פתיחה (לשאול לפני חלק "רכיבי המחשב"):** "כתבתי תוכנה שסופרת כמה פעמים הרצתי אותה. הרצתי 3 פעמים, והיא תמיד מדפיסה 1. איפה הבאג?"

**מהלך:**

1. לתת לכיתה 2–3 דקות לנחש. תשובות נפוצות: "שכחת לשמור", "הלולאה לא נכונה". לרשום את כולן על הלוח בלי לשפוט.
2. להריץ את `memory_test.py` מול הכיתה שלוש פעמים. כולם רואים 1.
3. לשאול: "איפה חי `counter`? מה קורה לו כשהתוכנית נגמרת?" ולהוביל ל-RAM, Volatile ו-Process שמסתיים.
4. לשאול: "אז איפה הייתי צריך לשמור אותו כדי שישרוד?" ולהוביל ל-Storage.

**מה המרצה מראה בסוף:** את טבלת ההשוואה Registers / RAM / Storage, וחץ על הלוח מ"משתנה" ל-RAM ומ"קובץ / Database" ל-Storage. משפט הסיום: "כל פעם שתרצו שמידע ישרוד, תשאלו את עצמכם: האם הוא על ה-Storage?"
