עתיד הוראת התכנות בעידן הצ'ט
גפת-טמיר, מ', רוזנפלד, א', אלמלך, א' ודשן, מ' (2023). עתיד הוראת החינוך בעידן הצ'ט, כנס "בינה מלאכותית והמרחב האקדמי", אוניברסיטת בר-אילן, רמת-גן
עיקרי הדברים:
- הקוד שמייצרת המכונה נראה טוב מבחינה תחבירית, אבל לא הכל מושלם. אם נריץ את התוכנית בפועל, היא עלולה לקרוס
- אפשר להתיר לסטודנטים להיעזר ב-ChatGPT, אבל יש לחייבם להסביר מילולית לתוצרים התכנותיים שהם הפיקו בעזרתה
- אם הסטודנט יגיש את הפתרון הראשוני שהציעה התוכנה, הציון יהיה נמוך כי המכונה מתקשה להתמודד עם מצבים חריגים
- הסטודנט יכול להיעזר ביכולת הצ'אט לאתר שגיאות טכניות קטנות, אבל יצטרך להמשיך לחשוב בכוחות עצמו
- גם בעידן הבינה המלאכותית חשוב להשקיע זמן רב בניסיון לאתר באגים, קטנים וטכניים ככל שיהיו. זה מלמד הרבה
- אפשר להמשיל את המכונה שמייצרת קוד לספר לימוד מדבר, אינטראקטיבי
- ניתן לשאול את ChatGPT שאלות, ואז לשאול שוב אם לא הבנתי את ההסבר, ולדייק את השאלה
- עכשיו הלימוד יהיה יותר קל וכיפי. יהיה בו אלמנט של גיימיפיקציה, זה כמו משחק, אתה שואל והמכונה עונה
- זה מאפשר למידה מותאמת אישית, באמצעות מתרגל וירטואלי. היעילות של הלמידה תגדל
- תיאורטית אפשר לאסור על שימוש בצ'אט גם בבית, אבל זה לא יעבוד
- יש לדרוש מהסטודנט לפרט איך השתמש במכונה, אילו שאלות הציג לה, איך ביקר את תשובותיה, מה למד מהתהליך
- גם התעשייה מחפשת את מי שיודעים לחשוב. בטווח הרחוק, אלה המתכנתים שיגרמו לחברה להצליח
- אף חברת טכנולוגיה לא יכולה להסתמך רק על טכנאים שעושים עבודה שחורה
- בגלל ההתפתחויות בבינה המלאכותית, יצטרכו בתעשייה יותר מתכנתים מומחים, אלגוריתמאים
- את המתכנתים הבינוניים אולי יחליפו המכונות בעתיד היותר רחוק
- לכן אנחנו צריכים לכוון את הסטודנטים שלנו לשם, אל מעבר לבינוניות
ברב-שיח מרתק בין ארבעה מרצים לתכנות באוניברסיטת בר-אילן נידונו שאלות כגון באילו תחומים תוכל הבינה המלאכותית להחליף מתכנתים אנושיים, כיצד תשתנה בעקבות זאת הוראת התכנות באקדמיה, אילו כישורים יידרשו מהמתכנתים העתידיים ואיך ניתן להיעזר בבינה המלאכותית כדי לייעל את תהליך הלימוד. לפניכם התשובות לשאלות אלה:
האם הבינה המלאכותית תחליף את המתכנתים האנושיים?
גפת-טמיר: אנחנו עוד לא במצב שהבינה תחליף לגמרי את המתכנתים, אבל היא יכולה לסייע בכתיבת קוד כפי שעושה למשל ChatGPT.
לקריאה נוספת: כל סיכומי המאמרים בנושא בינה מלאכותית
רוזנפלד: אנחנו עדיין רואים את מקצועות רבים שכבר הספדנו, בהייטק ומחוצה לו, כמו נהגים. אני לא רואה את המתכנת מת, אלא משתנה ומתפתח, כמו שתמיד היה. המיומנויות הנדרשות משתנות כל עשור, כל הזמן. יהיה יותר דגש על אינטגרציה, כתיבה ותחזוקה של קוד, מאשר על כתיבה שלו מאפס. אבל אלה מגמות שכבר קורות ממילא בשנים האחרונות. למשל, כשמתכנת שמחפש פתרון לבעיה מסוימת שסביר שמתכנתים אחרים כבר פתרו אותה בעבר, הוא נכנס לאתרי שאלות ותשובות לכתיבת קוד כמו סטאק אובר-פלואו.
גפת-טמיר: כדי ללמד שפת תכנות, שמתווכת בין אדם למכונה, יש כללים, סימני פיסוק, תחביר – ואותם יש ללמד, בגישה של מלמטה למעלה. כלומר, להתחיל מהרכיבים קטנים, המילים, כללי הדקדוק הבסיסיים, ואז לעלות מעלה ברמת המורכבות.
הצ'ט יכול לאפשר גישה של טופ-דאון. ללמד חשיבה אלגוריתמית, לוגית, של פתרון בעיות. כלומר לטפל בדברים בצורה פורמלית, ורק אחר כך לרדת לפרטים הטכניים.
הקוד שמייצרת המכונה הוא תקני מבחינה תחבירית. כמו התוצרים שמפיקות תוכנות התרגום באנגלית. אפשר לסמוך עליו בעניין הזה, אבל לא בעניין הלוגיקה של הקוד. פה אנחנו צריכים להיות ביקורתיים. לבדוק אם הסטודנט יודע לתת הסבר מילולי לקוד. כי הקוד נראה טוב, אבל לא הכל מושלם. אם נריץ את התוכנית בפועל, היא תקרוס ולא תעבוד. זה כאילו הגרסה העצלה של הפתרון הדרוש.
אם הסטודנט יגיש כמטלה את הפתרון הראשוני שהציעה התוכנה, הציון לא יהיה גבוה. הסיבה לכך היא שהמכונה מתקשה להתמודד עם מצבים חריגים, לא צפויים, שבהם המשתמשים בתוכנה נותנים תשובות מפתיעות. למשל, כשהמשתמשים מתבקשים למלא מספר תעודת זהות ובמקום ספרות מזינים אותיות, התוכנית הבינונית שמייצרת המכונה תוציא הודעת שגיאה ותקרוס.
לכן, הסטודנט צריך להיות ביקורתי, לדעת לקרוא קוד בצורה ביקורתית. הוא יוכל להיעזר ביכולת הצ'אט לאתר שגיאות טכניות קטנות, ברמת הנקודה-פסיק מיותרת במאות שורות תוכנה, שפגמה בהרצתה – אבל זאת כמובן לא כל העבודה.
אפשר להמשיל את המכונה שמייצרת קוד לספר לימוד מדבר, אינטראקטיבי. אפשר לשאול את ChatGPT שאלות, לגבי נקודות שלא הבנתי. ואז לשאול שוב אם לא הבנתי את ההסבר, ולדייק את השאלה, אפילו להתווכח עם המכונה ולנהל דיון שלם על כל פרט בקוד שלא הבנתי – לקבל תשובות יותר ויותר מפורטות ומדויקות, עד שאבין.
אבמלך: חשוב לעשות הפרדה בין הוראת התכנות באקדמיה, לבין מה שהמתכנתים בשוק עושים במציאות היומיומית. את עולם התכנות לדעתי הבינה המלאכותית לא תשנה בהרבה. כי כבר היום מתכנתים הם אינגטרטורים. אף פעם לא כותבים קוד מאפס. לוקחים מפה ומשם, ומחברים מכל מיני מקורות ביחד, אולי מוסיפים קצת משלהם, כדי שהקוד יעשה בדיוק את מה שהוא אמור לעשות. 80% מהבעיות התכנותיות שהמתכנתים נתקלים בהן כבר נפתרו מתישהו על ידי אחרים. הפתרונות זמינים ברשת, וניתן לקחת אותם ולהשתמש בהם. השינוי שתביא הבינה המלאכותית יהיה רק מבחינת זמנים: זמן החיפוש יתקצר בהשוואה לחיפוש בסטאק-אוברפלואו, אבל העבודה היא אותה עבודה, שעיקרה אינטגרציה.
דשן: הצ'אט יחליף מתכנתים, אבל רק כאלה שלא ישתמשו בו. מדובר בכלי שיכול לעזור למתכנתים להיות יעילים מאוד. השימוש בו יהיה תנאי הכרחי אבל לא מספיק, כי הקוד צריך להיות אפקטיבי. והקוד של המכונה לא יכול להיות אפקטיבי מספיק, כי הוא בינוני במובן הטוב של העניין: המכונה לא מנסה להתבלט. היא טובה רק עד שלב מסוים, אבל אז צריך מתכנת מבריק שיבוא ויוסיף לה את הליטושים האחרונים כדי שהיא תעשה את העבודה כמו שצריך.
האם כל אחד יכול ללמוד קוד עכשיו בקורסים מקוונים כמו קורסרה, בלי ללמוד באוניברסיטה?
לא רק שכל אחד יכול, אלא כל אחד צריך ללמוד קוד. בבריטניה חוקק חוק כזה, החל בגן ילדים, שמחייב את כולם ללמוד. זה נקרא תכנות ללא-מתכנתים, ממש כמו קורסי היסטוריה ללא-היסטוריונים. אלה קורסים נגישים, לא ממגדל השן, שמטרתם לצמצם את הפער הדיגיטלי בין אוכלוסיות חזקות ומוחלשות. כל אחד יכול ללמוד עקרונות תכנותיים, למשל בעזרת שפת התכנות סקרץ'.
אילו שינויים אתם מתכננים בקורסים שלכם בעקבות ההתפתחויות בבינה מלאכותית?
גפת-טמיר: אני מתכוונת להשתמש בטכנולוגיה הזאת. אתן יותר דגש על הבנה של קוד ועל הבנה ביקורתית של קוד, ופחות דגש על תחביר ועניינים טכניים.
אאפשר לסטודנטים עצמאות, כך שיוכלו להתנסות עם הצ'ט בבית ולתרגל יותר בקלות.
ממילא, תהליך הלמידה הפרונטלי של תכנות תופס רק כ-25% מהתהליך הכולל. הרוב כבר עכשיו מתרחש בבית. ועכשיו החלק הביתי יהיה יותר קל וכיפי. יהיה בו אלמנט של גיימיפיקציה, זה כמו משחק, אתה שואל והמכונה עונה, מציעה רעיון ומסבירה אותו. זה מאפשר למידה מותאמת אישית, באמצעות מתרגל וירטואלי. היעילות של הלימוד תגדל.
דשן: למרות השינויים, עדיין חייבים תרגול, עבודה קשה ומאמץ, כדי להגיע ליכולת ליישם את הידע, לשלוף אותו באמצעות אחזור בהקשר המתאים. אם התלמידים יתרגלו לפנות לפתרון הקל והמהיר של המכונה, ולא יאולצו לתרגל את מיומנות האחזור, יש חשש שהידע שלהם יישאר ברמה השטחית.
רוזנפלד: השאלה החשובה היא האם אנו רוצים שהבוגרים שלנו יהיו טכנאי קוד, או שאנחנו רוצים ללמד אותם לחשוב? הפיתוח הגדול הבא יגיע רק מחשיבה ביקורתית ויצירתית. ולכן אני מטיל על הסטודנטים שלי יותר פרויקטים גדולים מאשר מטלות קטנות. כדי לאלץ אותם לחשוב.
בשיטה כזו עולה שאלה יותר קשה של מתן ציונים והערכה. כדי לפתור אותה, אני מביא את הסטודנטים לשיחה אישית, שואל מה החלק הזה בתוכנה שהם כתבו עושה ומה החלק ההוא עושה. ואז שואל מה צריך לשנות בתוכנה אם אני רוצה לשנות קצת את המשימה. ככה אפשר לוודא הבנה. אגב, זה טוב גם לוודא שלא היו העתקות.
אבמלך: אני לא מלמד לתכנת, אני מלמד לחשוב. תכנות בראייתי הוא צורת חשיבה. לכן, צריך לעשות הפרדה בין המאמץ לגרום למכונה לבצע את העבודה לבין המאמץ לחשוב. תפקידנו כמרצים הוא לפתח חשיבה תכנותית, שמורכבת מפירוק בעיה, הפשטה ותהליכים נוספים. אנחנו צריכים לחנך את הדור הבא לא רק לשאול את השאלות הנכונות, אלא גם לתת להם את הכלים הנכונים לפתור את הבעיה. מכל זה עולה שההוראה לא צריכה להיות מושפעת בהרבה מהצ'אט.
גם בעידן הבינה המלאכותית, יש ערך בהשקעת שעות ממושכות בניסיון לאתר באגים, קטנים וטכניים ככל שיהיו. זה מלמד הרבה. אם נשתמש במכונה, נאבד את היכולת הזאת, וגם הרבה מהלימוד. בתעשייה אני בעד לעשות את זה, כי זה באמת יותר יעיל ומהיר. אבל בעת הלמידה לא, כי ככה נפסיד איכויות חשובות.
דשן: אפשר להשוות את השינויים הנדרשים עכשיו בהוראת תכנות לשינויים שנדרשו בהוראת מקצועות החברה והרוח בעקבות עליית ויקיפדיה וגוגל. מורים להיסטוריה, ספרות ותנ"ך כבר לא צריכים להשקיע את כל הזמן שלהם בהעברת החומר, שחלק גדול ממנו כבר נמצא ברשת. היום הם מלמדים את התלמידים איך מוצאים מידע, איך מעריכים אותו, את הרלוונטיות שלו, את אמינותו ואת הסמכות שעומדת מאחוריו. איך תופרים פיסות מידע שונות ומוכנות שכבר קיימות ברשת לידי טקסט שלם וקוהרנטי.
גפת-טמיר: הדבר החשוב הוא לאתר ולהבין מהן היכולות האנושיות הייחודיות של האדם שאין למכונה, מה מותר האדם, ולפתח ולטפח אותן.
השאלה היא תמיד אם הסטודנטים מבינים את הקוד שהם מעתיקים. זה בסדר להעתיק, כי גם המתכנתים בתעשייה עושים את זה, אבל זה חייב להיעשות עם הבנה וקריאה ביקורתית, ולא שהם יעתיקו כמו תוכי.
הפתרון שלי לאתגרים האלה הוא לתת יותר בחנים ויותר תרגילי בית ללא ציון למטרות תרגול עצמי. אגיד לסטודנטים שזה בסדר להשתמש ב-ChatGPT, אבל שאני ממליצה להם קודם כל לנסות לפתור את הבעיה לבד. כי בסופו של דבר בבחינה תצטרכו להבין בעצמכם את קטעי הקוד. להפעיל בעצמכם עקרונות חשיבה וזיהוי בעיות. ובבחינה לא יהיה צ'אט.
תיאורטית אפשר לאסור על שימוש בצ'אט גם בבית, אבל זה לא יעבוד. מה שכן אפשר לעשות, זה לדרוש מהסטודנט לפרט איך השתמשת במכונה, אילו שאלות הצגת לה, איך הפעלת על התוצרים שלה את החשיבה הביקורתית שלך וכו'. מה למדת מהתהליך?
אבמלך: זה כמו שמלמדים ילדים ביסודי פעולות חשבון בסיסיות, למרות שיש מחשבונים. עצם העשייה מפתחת לי חשיבה. הילדים האלה, שנרשה להם להשתמש במחשבונים, לא יגדלו להיות מתמטיקאים רציניים. אני מאוד בעד למידת מכונה גם לבני אדם. הרי איך מלמדים את המכונה? נותנים לה לטעות הרבה. וכך גם תלמידים אנושיים: תן לתלמיד לטעות, להתמודד עם הטעות, לשנות שוב ושוב את החשיבה שלו עד שיגיע לתשובה הנכונה. בינתיים, לאורך הדרך, הוא רוכש גם את החשיבה הנכונה. זה תהליך הלמידה.
רוזנפלד: יש פה מתח מובנה בין תעשייה ואקדמיה. אנחנו מלמדים מיומנויות טכניות, שכמובן מתכתבות עם מה שהשוק רוצה וצריך. אבל גם מה שאנחנו מלמדים מעבר למיומנויות הטכניות הוא לא מותרות. זו לא "העשרה עצמית" לשעות הפנאי. בדיוק כמו שאנחנו מלמדים מדעי הרוח לא מטעמי פינוק. אנחנו מלמדים את הסטודנטים לחשוב, מלמדים צורה מסוימת של הסתכלות, של ביקורתיות. אנחנו לא מלמדים רק איך להיות טכנאי.
דשן: למעשה, אין פה באמת סתירה בין אקדמיה לתעשייה. כי גם התעשייה מחפשת את מי שיודעים לחשוב. בטווח הרחוק, אלה המתכנתים שיגרמו לחברה להצליח. אי אפשר להסתמך רק על טכנאים שעושים עבודה שחורה.
בקרוב, בגלל ההתפתחויות בבינה המלאכותית, יצטרכו בתעשייה יותר מתכנתים מומחים, אלגוריתמאים, ואת המתכנתים הבינוניים אולי יחליפו המכונות בעתיד היותר רחוק. ולכן אנחנו צריכים לכוון את הסטודנטים שלנו לשם, אל מעבר לבינוניות.