דילוג לתוכן
Maor KertsmanMaor Kertsman
פרויקט אקדמיהשכלה גבוהה

בדיקת תרגילים אוטומטית במכון לב

pull requests נכנסים, טסטים ומשוב מנוסח יוצאים, והמרצה מחליט על הציון.

הדגמה: תור הגשות של תרגיל: pull requests נכנסים, טסטים ומשוב מנוסח יוצאים, והגשה שטסט שלה נעצר מסומנת לבדיקה של המרצה, שמחליט על הציון.

מסך ממשק משוחזר עם נתונים פיקטיביים

הקורס

קורס תכנות ב-Linux/C++ (וקצת Python) במכון לב, המרכז האקדמי לב בירושלים. בסמסטר אביב 2026 עבדתי שבוע-שבוע עם צוות הקורס על מערכת שבודקת תרגילים ומנסחת משוב, כדי שהזמן שלהם ילך להוראה ולא להרצה ידנית של כל הגשה.

הבעיה

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

מה נבנה

הגשות כ-pull requests
כל תרגיל מוגש כ-pull request ב-GitHub, עם אימות דרך GitHub App, כך שלכל הגשה יש היסטוריה ומקום להערות.
סביבה אחת לכולם
הטסטים רצים בקונטיינרים של Docker שנבנים אותו דבר בכל פעם, כך ש״אצלי זה עובד״ מפסיק להיות טיעון.
טסטים, בדיקת קוד וקישורי למידה
טסטים פונקציונליים לכל תרגיל ובדיקות pylint, עם משוב שמקשר לחומר הלימוד שמאחורי כל ממצא.
משוב שמנוסח לפי מחוון
AI מנסח משוב לפי המחוון של הקורס. המרצה קורא, עורך ומחליט על הציון.
דוחות ותצוגות ציונים
מודל נתונים שמקשר הגשות, pull requests ותרגילים מזין דוחות ציונים, תצוגות ניקוד ומסך לטעינת הגשות.
מי הגיש, מי נעלם
מעקב הגשות מראה מי הגיש ומי עדיין לא, ושולח תזכורות אוטומטיות למי ששותק.

החלק שלי

בניתי את המערכת ועבדתי עם צוות הקורס שבוע אחרי שבוע בזמן שהיא רצה בקורס עצמו: תהליך ההגשה, הקונטיינרים, הטסטים, מודל הנתונים, הדוחות ומשוב ה-AI. הקונפיגורציה לבדיקת כל תרגיל הוקלטה ונמסרה לצוות, כדי שיוכלו להריץ אותה בלעדיי.

תוצאות מבוססות

  • כל הגשה רצה באותה סביבה, אז התוצאות ניתנות להשוואה
  • הסטודנטים מקבלים משוב עקבי שמצביע על מה לקרוא
  • הזמן של המרצה הולך לשיקול דעת, לא להרצת קוד
  • הצוות יכול להגדיר בעצמו בדיקות לתרגילים חדשים

כלים

GitHub, GitHub Apps, Docker, Python, pylint, C/C++, משוב AI לפי מחוון

ספרו לי איפה העבודה נתקעת.