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

"זרימת מידע"

מיכל בראל וזהבה לוין

 

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

 

הבעיה

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

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

 

קהל היעד

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

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

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

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

 

כוחות

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

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

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

 

פיתרון

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

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

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

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

·          יש ללוות את תהליך הלמידה בכלי של טבלאות מעקב ככלל ובעת לימוד נושא העברת פרמטרים בפרט. 

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

 

דיון / מסקנות / יישום

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

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

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

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

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

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

 

משאבים מיוחדים

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

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

 

קישור לתבניות נוספות

על פי התבנית Early Bird  יש ללמד את הרעיונות המרכזיים והחשובים בהתחלה ואח"כ במהלך ההוראה לחזור עליהם כפי שהומלץ לעיל.

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

על פי התבנית Larger then life  יש ללמד עקרונות חשובים כבר בהתחלה (ללא ירידה לפרטים), למרות שהתלמידים עדין לא מכירים בחשיבות עקרונות אלה. כפי שצוין לעיל, יש להקפיד על פיתרון בעיות על ידי פירוקן לתת משימות כבר בשלבים המוקדמים של ההוראה.

על פי התבנית Mistake  התלמיד מתבקש ליצור טעויות מסוימות ולאחר מכן  לחקור את תוצאותיהן ועל פי התבנית Grade It Again Sam יש לספק לתלמיד סביבה בה הוא יכול לטעות ללא חשש וללמוד מטעויות אלה. תבנית זרימת המידע יכולה לגרום לMistake   ול- Grade It Again Sam לעבוד ביחד בהצלחה.

 

דוגמאות לשימוש בתבנית

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

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

 

מערך שיעור ופעילויות ליישום התבנית "זרימת מידע" ותבנית פדגוגית על פי Bergin

 

מקורות

Bergin, J. (2002), "Fourteen Pedagogical Patterns", Pace University, N.Y. USA.

http://csis.pace.edu/~bergin

המחלקה להוראת המדעים (1996), יסודות מדעי המחשב יסודות 1, הוצ' מכון ויצמן למדע, רחובות.

המחלקה להוראת המדעים (1997), יסודות מדעי המחשב יסודות 2, הוצ' מכון ויצמן למדע, רחובות.

המרכז להוראת המדעים (1997), עיצוב תכנה,  הוצ' האוניברסיטה העברית, ירושלים.

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

סלומונוביץ, מ. (2003), "האם מנגנון העברת הפרמטרים בתכנות אכן מובן לתלמידים על בוריו?", הבטים בהוראת מדעי המחשב, ינואר 2003, עמ' 18 – 22.

חזרה לעמוד הראשי