החומר המופיע בעמוד זה פורסם לראשונה בכתב העת "הבטים בהוראת מדעי המחשב" גליון יוני 1995, עמודים 20-26

לא ניתן לעשות שימוש מסחרי בחומר זה ללא רשות בכתב מן המחברים או מערכת כתב העת

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

James W. Howatt

SIGCSE BULLETIN - ACM PRESS Vol 26, No. 3, Sep 1994, pp. 3-7.

Howatt הוא פרופסור בפקולטה למדעי המחשב, באוניברסיטת St. Cloud State , מיניסוטה, ארצות הברית.

 

הקדמה

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

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

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

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

 

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

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

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

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

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

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

 

קריטריונים להערכה

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

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

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

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

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

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

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

דרוג הקריטריונים

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

אילו מהקריטריונים חשובים יותר מהאחרים? באיזו מידה?

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

 

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

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

 

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

 

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

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

 

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

 

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

 

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

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

התפתחות הקריטריונים להערכה

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

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

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

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

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

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

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

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

 

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

 

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

 

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

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

מסקנות

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

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

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

 

מקורות

 (1) Hamm, R. Wayne., Kenneth D. Henderson, M. Repsher, K. Timmer. A Tool for Program Grading: The Jacksonville University Scale. In SIGCSE Bulletin, Vol 15, No. 1, 1983, pp. 248-252.

(2) Miller, N. E., Peterson, C. G. A Method for Evaluating Student Written Computer Programs in an Undergraduate Computer Science Programming Language Course. In SIGCSE Bulletin, Vol. 12, 1980, pp. 9-17.

(3) Olson, D. M. The Reliability of Analytic and Holistic Methods in Rating Students’ Computer Programs. In SIGCSE Bulletin, Vol. 20, No. 1, 1988, pp. 293-298.

 

נספח 1 - קריטריונים להערכת תכנית - תכנות בשפת C, סמסטר סתיו 1993

 

קריטריון

דרוג

1. עיצוב התכנית (25%)

פתרון לאחר מחשבה מעמיקה

5

 

פתרון מתוכנן חלקית

3

 

פתרון אד-הוק, תכנית שנכתבה ישירות וללא תכנון

1

 

קריטריון

דרוג

2. ביצוע התכנית (20%)

תכנית שרצה נכון

5

 

תכנית שמייצרת פלט נכון בחצי מההרצות

3

 

התכנית רצה, אך בדרך כלל התוצאות לא נכונות

1

 

תכנית שלא עברה קומפילציה או לא רצה בכלל

0

 

קריטריון

דרוג

3. עמידה בהגדרות המשימה (20%)

תכנית שממלאה אחר הדרישות בצורה נכונה ושלמה

5

 

הרבה חלקים של הדרישות אינם מיושמים

3

 

תכנית שלא ממלאה אחר הדרישות

1

 

קריטריון

דרוג

4. סגנון הקידוד (15%)

תכנית כתובה היטב, מובנת, נעשה שימוש נכון בכלים של השפה

5

 

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

3

 

קוד לא מובן, אין שימוש נכון בכלים של השפה

1

 

קריטריון

דרוג

5. הערות (10%)

הערות תמציתיות, משמעותיות וכתובות היטב

5

 

הערות חלקיות, שאינן כתובות טוב או אינן בנויות טוב

3

 

הערות מיותרות, לא נכונות או כתובות בפורמט גרוע

1

 

אין הערות בכלל

0

 

קריטריון

דרוג

6. יצירתיות (10%)

0-5 נקודות לתכניות שמרחיבות את דרישות המשימה,

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

שמשתמשות באלגוריתם טוב במיוחד או שכתובות בצורה טובה במיוחד.

0-5

 

 

 

נספח 2 - טופס הערכת תכנית - תכנות בשפת C, סמסטר סתיו 1993

שם הסטודנט:                                                       התכנית:                                

ציוני הקריטריונים (בין 0 ל- 5 נקודות כל אחד):

1. עיצוב התכנית                      _______ * 5% = _______

2. ביצוע התכנית                      _______ * 4% = _______

3. עמידה בדרישות                  _______ * 4% = _______

4. סגנון הקידוד                        _______ * 3% = _______

5. הערות                                _______ * 2% = _______

6. יצירתיות                             _______ * 2% = _______

 

קנס על הגשה מאוחרת                           _

ציון כולל של התכנית: סה"כ באחוזים = _________  

                              סה"כ בנקודות = ________    

                              הציון שלך =             _______

הערות:  _______________

 

חזרה לתוכן לפי נושאים

חזרה לתוכן לפי גליונות

חזרה לתחילת העמוד