קשיי מתחילים בלימוד תכנות ויסודות מדעי המחשב

הכנה ועריכה: ד"ר ברוריה הברמן

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

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

החומר פורסם במלואו גם בגליון יוני 2002 של כתב העת "הבטים בהוראת מדעי המחשב", עמודים 8-38.

פתח דבר

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

 

במאמר המתייחס לאסופת מאמרים העוסקים במתכנת המתחיל ((Soloway & Spohrer (eds, 1989) מעלים Gray ועמיתיו (1993) את השאלה הבאה: "האם ספר שיצא לאור בשנת 1989, ומכיל מאמרים שפרסמו לראשונה במחצית שנות השמונים, או מוקדם יותר, אקטואלי לקריאה ב- 1993?". תשובת החוקרים על שאלה זו היא "כן ודאי".

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

ובכן, תשובתנו לשאלה זו גם היא חיובית בהחלט. גם מחקרים שבוצעו לאחרונה מצביעים על תופעות דומות. למשל, פז (1996), ו- Haberman ו- Ben-David Kolikant (2001) מצאו שגיאות מסורתיות אצל תלמידי תיכון בישראל בשלב התחלתי של לימוד יסודות מדעי המחשב.

 

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

 

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

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

                ·    מצורפת גם רשימת מקורות עשירה ומומלצת לקריאה.

 

מבוא

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

מיהו מתחיל, ובמה הוא נבדל מהמומחה?

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

ואחרון חביב - עד מתי יקרא הלומד מתחיל, ומתי ישנה סטטוס ויקרא מתקדם או מומחה? שינוי הסטטוס נעשה בעקבות תהליך הבשלה, במהלכו צובר התלמיד ניסיון, ידע ויכולות של פתרון בעיות, ומשנה את גישתו ואמונותיו ביחס לתוצרים שהוא מפתח (תכניות מחשב), ולאופן הפקתם. החוקרים מתייחסים להבדלים בין מתחילים ומומחים בהקשרים שונים. יש חוקרים המתארים קשיים ושגיאות של מתחילים במונחים של "במה הם נבדלים מן המומחים?". הבדלים אלו נמדדים בשונות של תוצרים- במה ועד כמה התכנית של המתחיל שונה מתכנית של מומחה המהווה פתרון לבעיה נתונה (Joni & Soloway, 1986); בשכיחות הופעת שגיאות (Spohrer & Soloway, 1986); באמונות כלפי מאפייני תכנית "טובה" (Joni & Soloway, 1986; Fleury, 1993); ובגישות ושיטות של פתרון בעיות ( Linn, 1985; Linn & Clancy,1992; Spohrer, Soloway & Pope, 1986).

 

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

מדוע קשה להתחיל ללמוד תכנות?

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

לימוד תכנות הוא משימה מורכבת הנערכת בשני צירים: ציר ההפשטה, המתייחס למושגים ועקרונות של מדעי המחשב ותכנות, וציר היישום, המתייחס לשפת תכנות ולסביבת העבודה, המשמשים ליישום העקרונות הנלמדים. המעבר בין שני הצירים נעשה  לסירוגין. מושג או רעיון חדש מוצג תחילה בכיתה, ומיושם מיד לאחר מכן בפעילות מעבדה, ושוב דנים בו ברמת הכיתה, וחוזר חלילה. בהתאם, תלמיד מתחיל צריך להתמודד עם הבנה ותפקוד בשני המישורים בו זמנית. שיטה המבוססת על עקרון זה, המכונה שיטת ה"רוכסן" מומלצת להוראת תכנית הלימודים החדשה במדעי המחשב בארץ ( Gal-Ezer, Yehudai, Harel & Beeri, 1995, Gal-Ezer & Harel 1999).

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

Du Boulay  (1989)מתייחס לחמש רמות קושי של להתחיל לתכנת:

(1) התמצאות (orientation): לתלמידים מתחילים יש קושי להבין מה זה תכנות, ו"למה זה טוב?". הם מתקשים לשלוט בגישות שונות בתכנות, ובשפות תכנות שונות. במצב זה, מיטשטשת ההבחנה בין רמות שימוש שונות בחבילות תכנה מוכנות לבין תכנות.

(2) הבנת המכונה הוירטואלית (notional machine): לתלמידים מתחילים יש קושי להבין איך עובד המחשב, כיצד לתקשר עם המחשב, איך לגרום לו לבצע את מה שאנו מתכוונים וכדומה.

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

(4) התמחות (transition from novice to expert): לתלמידים מתחילים קשה לעשות את המעבר לרמת מומחים, תוך רכישת כלים ותבניות לפתרון בעיות, המאפיינים את המומחים. 

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

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

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

שגיאות ותפיסות מוטעות – מהן ומה מקורן?

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

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

Scherz, Goldberg & Fund (1990) מבחינים בין שלוש רמות של שגיאות: (1) טעות טכנית (bug) הבאה לידי ביטוי בכשל טכני הנובע מחוסר שליטה בסביבת העבודה. (2) שגיאה (mistake) הנובעת משימוש לא נכון במבנה בשפה, או פיתוח שגוי היוצר תכנית שאינה פותרת נכון את הבעיה הנתונה. (3) תפיסה מוטעית (misconception) אשר לא בהכרח באה לידי ביטוי בכתיבת תכנית שגויה במונחים של התנהגות קלט/פלט, אולם בדרך כלל ניתן לזהותה על ידי התבוננות בתכנית. למשל, הימנעות משימוש חוזר במשתנים, היכולה להעיד על תפיסה שבמשתנה מותר להשתמש פעם אחת בלבד.

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

Rath ו- Brown (1995) מבחינים בין שגיאות אופרטיביות (operational errors) לבין תפיסות המונחות ביסוד הבנת תכנות (underlying conceptions). הם מתייחסים לשני טיפוסים של שגיאות אופרטיביות: שגיאות תחביר הקשורות לכתיבה שלא לפי כללי התחביר של שפת התכנות,  ושגיאות אלגוריתמיות הבאות לידי ביטוי בפיתוח אלגוריתמים לא נכונים, שאינם מספקים את הפתרון הדרוש לבעיה נתונה. באשר לתפיסות השגויות המונחות ביסוד הבנת תכנות, הם מבחינים בין: (1) ייחוס של הבנת שפה טבעית למחשב: תלמידים מצפים שהמחשב ייחס משמעות למבנה/משתנה בהתאם למשמעות הכינוי שלו בשפה טבעית.  (2) ייחוס  חשיבה עצמאית למחשב: יכולת הבנה, הסקת מסקנות, יכולות בלתי תלויות של המחשב לבצע מעבר למה ש"נאמר לו" בצורה מפורשת. (3) תפיסות חלופיות או בלתי שלמות של המחשב: למשל תפיסה אלגברית של תכנות באה לידי ביטוי בפרוש לא נכון של מבנים בשפת התכנות (למשל, התייחסות להוראת השמה כאל יחס השוויון), או בתפיסה לא נכונה של תהליכי חישוב. תלמידים המסגלים תפיסה חלופית מתחום ידע אחר, מבצעים למעשה העברה (transfer) לא מבוקרת מתחום מוכר להם לתחום התכנות. תפיסות לא שלמות אינן גורמות בהכרח לכתיבת תכנית שגויה, אך לפי מבנה התכנית משתמע שיש לקות מסוימת בתפיסתו של התלמיד. דוגמה לתופעה המעידה על תפיסה לא שלמה מתוארת על ידי   Joni ו-  Soloway  (1986): תלמידים כתבו קטע קוד למימוש מסננת קלט בו נעשה שימוש במשתנה עזר לקליטת נתון חדש. תחילה מתבצע קלט למשתנה עזר, ורק אחר כך מתבצעת השמה של תוכן משתנה העזר למשתנה ה"אמיתי".  כתיבה זו מבטאת את התפיסה שאסור לבצע קלט ישירות למשתנה יותר מפעם אחת, אך אפשר לבצע אליו השמה חוזרת ונשנית.

Pea (1986) מתאר שלוש שגיאות של מתחילים אשר הנן בלתי תלויות בשפת תכנות:

(1) מקביליות - ביצוע מקבילי ובסדר כלשהו, במקום ביצוע סדרתי של משפטי התכנית.

(2) כוונה - ייחוס כוונות למחשב ופרשנות משלו למה שהמתכנת כתב, לאו דווקא תואמת לכוונת המתכנת.

(3) אגוצנטריות - ציפייה מהמחשב להבין ולהסיק כדוגמת בן אנוש, את כוונת המתכנת, ומעבר למה שכתוב מפורשות. הוא תולה את השגיאות בתפיסה מוטעית אותה הוא מכנה "סופרבאג" (superbug)  - ייחוס יכולות למחשב מעבר לאלו שיש לו במציאות. יתרה מזאת, תלמידים מצפים מהמחשב להבין את הרעיון עליו הם חושבים, גם אם לא ניסחו אותו באופן מדויק, או אם ניסחו אותו באופן שגוי במקצת בתכנית (Kurland & Pea, 1989).

גם Puntnam, Sleeman, Baxter & Kuspa (1986) מצאו שתלמידים מייחסים למחשב יכולות חשיבה (של אדם ממוצע). הם מצאו שמתחילים מייחסים למחשב אופן ביצוע של פעולות בהתאם למשמעות בשפה טבעית של שמות משתנים אליהם הפעולות מתייחסות. לדוגמה, לדעת תלמידים, בהינתן סדרת קלט, קליטת נתונים אינה מתבצעת בהתאם לסדר הופעתם בסדרה, אלא  הערך הנבחר לשמש כקלט תורן נקבע על פי משמעות שם המשתנה אליו מתבצע הקלט. למשל, המשפט Read (Smallest) מתפרש על ידי המחשב כקלט של הערך הקטן ביותר מתוך סדרת הקלט (ולא של הנתון התורן בסדרת הקלט לתוך משתנה ש"במקרה" נקרא Smallest), או למשל, המשפט  Read (First) מתפרש כקליטת ערכו של הנתון הראשון ברשימת הקלט לתוך המשתנה First גם אם נתון זה אינו קלט תורן.

בדומה לחוקרים אחרים, Spohrer ו- Soloway (1986), מצאו שתלמידים מתחילים מייחסים למחשב יכולות של "מפרש אנושי". כאשר לתלמידים יש מחשבה מסוימת לגבי משמעות של מבנה בשפה, גם אם המחשבה מוטעית, הם מצפים שהמחשב יבצע את התכנית בהתאם לפרשנות שהם מייחסים.

מה בסקר ספרות זה?

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

 

תקצירי מאמרים נבחרים

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

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

אודות המאמרים

                ·    המאמר הראשון (Samurçay, 1989) עוסק בתפיסת מושג המשתנה, שהוא המושג הבסיסי ביותר בהקשר של תכנות, ואין להעלות על הדעת סקר ספרות שאינו נוגע והשימוש בו בפתרון בעיות על ידי תלמידים מתחילים.

                ·    המאמר השני (Spohrer & Soloway, 1986) מציג שגיאות שכיחות של מתחילים שלמדו קורס מבוא לתכנות בסביבת Pascal. המחברים הפריכו טענה רווחת, שמרבית השגיאות נובעות מתפיסות מוטעות לגבי מבנים בשפת תכנות ומציעים מקורות קושי אחרים, הקשורים לתפיסת יכולות המחשב. 

                ·    המאמר השלישי (Pea, 1986) מציג שגיאות אופייניות של מתחילים, שלא זו בלבד שאינן נובעות מאי הבנת המשמעות של מבנים בשפת תכנות, אלא שהן נמצאו כבלתי תלויות בשפת תכנות זו או אחרת.

                ·    המאמר הרביעי (Perkins & Martin, 1986) מתייחס לקשיי מתחילים הנובעים מידע לקוי ומחוסר אסטרטגיות כלליות בפתרון בעיות. על פי מחקרם, שאלות הכוון ורמזים יכולים לסייע לתלמיד לפתור בעיות.

                ·    המאמר החמישי (Joni & Soloway, 1986) מציג אמונות של מתחילים לגבי "מהי תכנית טובה", ומציג קשיים הנוצרים בעקבות כתיבת תכניות בלתי קריאות. המאמר מציג כללי התנסחות: חוקי דו-שיח המשמשים הן לכתיבת תכניות והן לקריאתן ולהבנתן.

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

 

אתר המרכז הארצי

אתר הבטים

גליון יוני 2002

חזרה לאתר סקר ספרות