משך: 2 שעות אקדמיות (90 דקות).

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

בסוף השיעור הסטודנטים צריכים: להשתמש ב-GroupBy עם foreach מקונן, להעדיף FirstOrDefault על First כשההתאמה לא מובטחת, ולשלב GroupBy+Count/Average לסטטיסטיקות.

דגש קריטי: זהו השיעור האחרון לפני הפרויקט המסכם (Naive Bayes) — הדגישו במפורש ש-GroupBy הוא בדיוק הכלי שישמש לספירת תדירויות שם.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותשאלו: “כמה תלמידים בכל מחלקה? Where/Select לבד עוזרים?”
הרעיון: GroupBy20 דקותקיבוץ + foreach מקונן, הדגישו .Key
הבעיה: First קורס10 דקותהדגימו InvalidOperationException על חיפוש לא-קיים
הרעיון: FirstOrDefault15 דקותאותו חיפוש, בטוח
שילוב GroupBy+Count/Average15 דקותסטטיסטיקות לפי קבוצה
קישור לפרויקט Naive Bayes10 דקותהסבירו איך GroupBy ישמש לספירת תדירויות מילים
תרגול מודרך15 דקותתרגיל 1+2

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

  • זהו שיעור-הכנה ישיר לפרויקט המסכם — קשרו במפורש: “מחר תבנו מסווג שסופר כמה פעמים כל מילה מופיעה בכל קטגוריה — זה בדיוק GroupBy+Count שעשיתם היום”.
  • foreach מקונן על תוצאת GroupBy הוא נקודת הבלבול העיקרית — תנו לזה זמן, הדגימו שלב-שלב מה group ו-group.Key מייצגים.
  • הדגמת הקריסה של First (InvalidOperationException בשידור חי) משכנעת יותר מכל הסבר על “למה FirstOrDefault עדיף”.

מושגים

GroupBy — קיבוץ איברים לפי מפתח, מחזיר קבוצות עם .Key. First — מחזיר איבר ראשון תואם; זורק חריגה אם אין. FirstOrDefault — כמו First, בטוח — מחזיר null/ברירת מחדל.


תרגיל חשיבה

שאלת פתיחה: “אתם בונים מסווג ספאם שסופר כמה פעמים המילה ‘חינם’ מופיעה במיילים ‘ספאם’ לעומת מיילים ‘תקינים’. איזה כלי מה-LINQ שלמדתם היום הכי מתאים לזה, ולמה?”

מהלך: הובילו את הסטודנטים לזהות ש-GroupBy (לפי סיווג המייל: ספאם/תקין) בשילוב עם ספירה (Count) בתוך כל קבוצה הוא בדיוק המנגנון הדרוש. זו הכנה ישירה ומכוונת לפרויקט Naive Bayes שמגיע מיד אחרי.

מה המרצה מראה בסוף: הריצו דוגמה זעירה — רשימת מילים עם תיוג (“spam”/“ham”), GroupBy לפי התיוג, וספירה של מופעי מילה ספציפית בתוך כל קבוצה עם Count(w => w == "free"). זו בדיוק הלבנה הראשונה של הפרויקט המסכם שמגיע מיד בשיעור הבא.