ידע שברירי ושימוש חסר באסטרטגיות של מתכנתים מתחילים

ד.נ. פרקינס ו- פ.מרטין

D.N. Perkins and F. Martin (1986). Fragile knowledge and neglected strategies in novice programmers, In Empirical Studies of Programmers, E., Soloway, Y., Iyengar (eds.), Albex Publishing Corporation, Norwood, New Jersey, 213-229.

התקציר המצורף נערך ע"י ד"ר ברוריה הברמן

בתוך הברמן, ב., לוי, ד., לפידות, ת. (עורכות). סקר ספרות "קשיי למידה למתחילים בהוראת מדעי המחשב והוראת רקורסיה".

הוצאת "מחשבה" – מרכז המורים הארצי למדעי המחשב, 2001. עמודים 22-26.

אודות המאמר

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

 

רשימת מושגים

w ידע חסרMissing knowledge

w ידע מגובבConglomerated knowledge  

w ידע מקובעInert knowledge

w ידע לא מתאים       Misplaced knowledge

w ידע שבריריFragile knowledge

 

הנחות יסוד

הגישה הטבעית להגדרת קשיים של תלמידים היא לברר מה התלמידים יודעים ומה הם אינם יודעים. לדוגמה, האם הם מכירים תחביר ומשמעות של משפטים בשפת התכנות? האם הם יודעים לזהות מתי להשתמש במשפט זה או אחר? האם יש להם אסטרטגיות של פתרון בעיות המאפשרות ניתוח בעיה? האם הם בנו מאגר של תבניות תכנות (programming plans) המשמש אותם בכתיבת תכנית, והאם הם יודעים לזהות את התבניות המתאימות לפתרון בעיה נתונה?  

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

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

תיאור המחקר

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

אוכלוסית המחקר

20 תלמידי תיכון (כיתות י'-י"ב) שלמדו קורס שנתי "מבוא לתכנות בסביבת "BASIC. המחקר נערך במהלך הסמסטר השני לאחר שהתלמידים למדו לולאות FOR-NEXT.

השיטה

כל תלמיד עבד בנוכחות חוקר, והתבקש לבחור שלוש בעיות מתוך 8 בעיות המדורגות בקושי עולה, ולפתור אותן בזו אחר זו במשך 45 דקות. כל הבעיות התייחסו להדפסת צורות הבנויות מעימוד מסוים של כוכביות (עמודת או שורת כוכביות בגודל נתון, מלבן מלא או חלול של כוכביות וכדומה). החוקר צפה בתלמיד ומדי פעם שאל שאלות שמטרתן לעקוב אחרי דרך החשיבה של התלמיד. כאשר התלמיד נתקל בקושי אותו לא הצליח לפתור, החוקר התערב בתהליך הפתרון והציג לתלמיד תחילה שאלות הכוון (prompts) מהסגנון של "רגע חושבים". שאלות אלו היו כלליות כדוגמת "מה הדבר הראשון שאתה צריך לומר למחשב לעשות?", "כיצד תתאר את הבעיה לעצמך?", או שאלות ממוקדות יותר המתייחסות לשפת התכנות. אם מספר שאלות הכוון לא עזרו לתלמיד, החוקר נתן לו רמז (אחד או יותר).  הרמזים, בניגוד לשאלות הכוון, התייחסו באופן יותר ממוקד יותר לפתרון הבעיה הנתונה, וכיוונו את התלמיד לפתרון. למשל "הבעיה מחייבת לבצע משהו מספר פעמים, איזה משפט בשפה יכול להתאים?". במידה ומספר רמזים לא קידמו את התלמיד, החוקר סיפק תשובה נקודתית לקושי שנתקל בו התלמיד והתלמיד התקדם לשלב הבא של פתרון הבעיה הנוכחית.

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

 

ממצאים

צורות שונות של ידע

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

באשר לאיפיון הידע של התלמיד, הוגדרו ארבע קטגוריות: ידע חסר (missing knowledge), ידע מקובע (inert knowledge), ידע לא מתאים (misplaced knowledge), וידע מגובב (conglomerated knowledge).

ידע חסר

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

ידע מקובע

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

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

ידע לא מתאים

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

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

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

ידע מגובב

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

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

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

שימוש חסר באסטרטגיות של פתרון בעיות

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

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

סיכום

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

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

המחברים ממליצים לנצל את הממצאים לשיפור דרכי ההוראה. הוראת תכנות צריכה להיות מכוונת לצמצום תופעת הידע השברירי.

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

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

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

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

חזרה לאתר