2157 - 0368: תוכנה 1 - סתיו תש"ע
[קבוצות לימוד] [סגל הקורס] [הודעות] [רשימת דיוור] [סילבוס ומדיניות ציונים] [מבחן] [תרגילים] [חומר עזר] [סביבת הפיתוח] [וידאו] [הרצאות] [תרגולים][שאלות ותשובות]

קבוצות לימוד

סוג מפגש שם חבר הצוות מועד מיקום קוד קבוצה
שיעור אוהד ברזילי יום א, 16:00-19:00 רוזנבלט 102
בניין הנדסת תוכנה
0368-2157-01
תרגיל אסף זריצקי
יום ד, 16:00-17:00 שרייבר 006 0368-2157-02
תרגיל אסף זריצקי יום ד, 17:00-18:00 שרייבר 006 0368-2157-03

סקר הערכת הוראה
סוג מפגש שם חבר הצוות מועד מיקום קוד קבוצה
שיעור דן הלפרין יום ב, 12:00-15:00 אורנשטיין 111 0368-2157-04
תרגיל מתי שמרת יום ד, 11:00-12:00 שרייבר 006 0368-2157-05
תרגיל מתי שמרת יום ד, 12:00-13:00 שרייבר 006 0368-2157-06


סגל הקורס

סילבוס ומדיניות ציונים

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


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

הודעות

רשימת דיוור

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

האתרים שבו ניתן לקרוא את כל ההודעות הישנות הינו:

כל הסטודנטים שנרשמו לקורס כבר רשומים לרשימת התפוצה. כדי להירשם לרשימת התפוצה (עקב רישום מאוחר וכו') לחץ על הקישורית שלמעלה ולאחר מכן לחץ על  Join or leave the list , הכנס את שמך המלא ואת ה- email שלך ולחץ על הכפתור 'Join'.

מבחן

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

מועד: תאריך:  שעה
מועד א 7.02.10 09:00
מועד ב 18.08.10
09:00

תרגילים

בכל שבוע יינתן תרגיל. הגשת תרגילים היא חובה! כל תלמיד צריך להגיש בזמן ולקבל ציון עובר (ציון 6 בסולם של 1-10)  בכ-65%  מתרגילי הקורס. שימו לב כי פרט לחובת ההגשה, לכל תרגיל יש משקל בציון הסופי כך שאי הגשת חלק מהתרגילים תפגע בציון התלמיד\ה (ובפרט, רק תלמידים שהגישו את כל התרגילים יכולים לקבל 100. ראו פרוט למעלה). כמו כן, תלמיד רשאי להגיש תרגילים אחרי תאריך ההגשה באיחור מצטבר של 5 ימים (עבור כל התרגילים ביחד) .

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

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

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

להלן הנחיות מפורטות לצורה שבה יש להגיש את התרגילים

מדיניות ערעורים: ערעורים יוגשו בכתב לבודק התרגילים

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

מספר פורסם בתאריך מועד הגשה משקל הערות
תרגיל מספר 1 18.10.2009
26.10.2009 1
דף הנחיות לפתיחת חשבון מחשב
הכרת סביבת המחשוב באוניברסיטה (כולל הוראות התקנה של אקליפס)
עמודים 1-14 ב-דף עבודה ללימוד סביבת אקליפס
תרגיל מספר 2 19.10.2009 2.11.2009
1

תרגיל מספר 3
27.10.2009
9.11.2009
2
קובץ עזר: sudoku.zip
תרגיל מספר 4
02.11.2009
16.11.2009
1
קבצי עזר לשאלה 1: logo_turtle.jar, simpleio.jar, Pentagon.java
תיעוד עבור Turtle, תיעוד עבור LineInput
קבצי עזר לשאלה 2: image_processor.jar, ImageProcessing.java
תמונות לדוגמא: images.zip
תיעוד עבור ImageProcessing
תרגיל מספר 5 10.11.2009 23.11.2009 1 קובץ עזר לחלק א: DisjointSets.java
קובץ עזר לחלק ב': hw5partb.zip  (קבצים + תיעוד)
קבצי עזר לחלק ג': Polynomial.java, TestPolynomial.java
תרגיל מספר 6 16.11.2009 30.11.2009
1
קובץ עזר: IPAddress.java
קובץ עזר לחלק 3: course.zip
תרגיל מספר 7 23.11.2009 7.12.2009
1
קובץ עזר: simplesearch.zip, oldmac.zip (ראו הנחיות בסוף התרגיל)
תרגיל מספר 8 30.11.2009 23.12.2009
2
קובץ עזר: wildworld.zip
תרגיל מספר 9 13.12.2009 30.12.2009
1

תרגיל מספר 10 24.12.2009 13.01.2010
2
קובץ עזר: hw10_resources.zip
תרגיל מספר 11 04.01.2010 25.01.2010
2
קובץ עזר: GUIAddressBookViewer.java

חומר עזר

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

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

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

סביבת הפיתוח (Eclipse)

וידאו

צילומי וידאו של ההרצאות מסמסטר א' 2006/7 ניתנים לצפייה מקוונת (בדפדפן Internet Explorer בלבד) בשרת הוידאו של האוניברסיטה:

הרצאות

המצגות מופיעות כאן בפורמט pdf וניתן להדפיסן מאקרובט.  לנוחיותכם, (ולחסכון בנייר) ניתן להדפיס 6 שקפים לעמוד (בין יתר האפשרויות).
מספר תאריך שקפים הערות ותוספות
1
18.10.2009
19.10.2009
00 מנהלות
01 שלום עולם
טיפוסים יסודיים, ביטויים, השמות מחרוזות מערכים
2 25.10.2009
26.10.2009
02 מבני בקרה תנאים, לולאות, זימון והגדרת שרותים, העמסת שרותים
3 01.11.2009
02.11.2009
03 שרותים מודל הזיכרון של העברת ארגומנטים, מנגנוני השפה, חוזה של שרותים
בחנ\י את עצמך
4 08.11.2009
09.11.2009
04 מחלקות חוזים, נכונות והסתרת מידע. הוכחת נכונות
סיכום תגיות חוזה שנזכרו בהרצאה ובתרגול
שימוש במחלקות קיימות: logo_turtle , דוגמת שימוש בצב , תיעוד עבור Turtle,
עוד דוגמא: מסנכרן כתוביות , סרט לדוגמא , כתוביות לדוגמא
5 15.11.2009
16.11.2009
05 עצמים כתיבת טיפוסי מחלקה חדשים
עיצוב מחלקה על פי מפרט
מצב מופשט ופונקציית הפשטה
לקריאה נוספת: הוכחת נכונות של מחלקות
6 22.11.2009
23.11.2009
06 מנשקים הגדרת מנשקים
פולימורפיזם ו- dynamic dispatch
ההרצאה כיסתה שקפים 1-69
7 29.11.2009
30.11.2009
06 תבנית עיצוב המפעל
07 מבני נתונים
תבנית עיצוב - המפעל (המשך משבוע שעבר)
תבנית עיצוב - איטרטור
הפשטת טיפוסים (טיפוסים מוכללים - generics)
מבני נתונים מקושרים, מחלקות פנימיות
8 06.12.2009
07.12.2009
08 הורשה (חלק א') יחסים בין מחלקות
הורשה
היררכית טיפוסים
9 14.12.2009- דני
20.12.2009 - אוהד
09 חריגים

14.12.2009 - דני
3.1.2009 - אוהד
09 טיפוסי מניה

10 21.12.2009 - דני
27.12.2009 - אוהד
10 הורשה (חלק ב') תבניות עיצוב, טיפוסים מוכללים, static binding, dynamic dispatch
חוזים וקבלנות משנה, שימוש לרעה

27.12.2009 - אוהד
28.12.2009 - דני
10 המתאם תבנית עיצוב המתאם
11 28.12.2009 - דני 11 מנשק משתמש גרפי עוד GUI:

4.1.2010 - דני
בשעור של דני ביום זה תתקיים רק השעה הראשונה. אנא הביאו התדפיס על בנאי מרובה פרמטרים.
12 10.1.2010 - אוהד
12 מנשק משתמש גרפי דוגמת הקוד מהשיעור: GoogleAjaxBrowser
עוד GUI:
    11.1.2010 - דני     12 מנגנוני השפה
  13     18.1.2010 - דני     אנוטציות ועוד התוכניות הנילוות לשיעור 13

17.1.2010 - אוהד
13 מבוא להנדסת תוכנה
13 תכנות מונחה בדיקות

 

תרגולים

מספר תאריך נושא שקפים הערות ותוספות
1
21.10.2009
מבוא
שקף לעמוד
ששה שקפים לעמוד
דף הנחיות לפתיחת חשבון מחשב
הוראות הגשת שיעורי בית דרך ה-Virtual TAU
הכרת סביבת המחשוב באוניברסיטה (כולל הוראות התקנה של אקליפס)
עמודים 1-14 ב-דף עבודה ללימוד סביבת אקליפס
הוראות שימוש בחומר העזר המלווה לקורס
Code Conventions for the Java Programming Language
2
28.10.2009
מבני בקרה
שקף לעמוד
ששה שקפים לעמוד
הכרת השימוש ב debugger
3
04.11.2009
פונקציות
שקף לעמוד
ששה שקפים לעמוד
נספח: המרות (casting) [שקף לעמוד] [שישה שקפים]
קוד הדגמה: MaxSpan
4 11.11.2009 שימוש באובייקטים, IO שקף לעמוד
ששה שקפים לעמוד
דוגמא לשימוש ב-Scanner ו-File
דוגמא לשימוש ב-Scanner לקריאת קובץ
5
18.11.2009
הגדרת מחלקות
שקף לעמוד
ששה שקפים לעמוד

6
25.11.2009
מנשקים ועוד
שקף לעמוד
ששה שקפים לעמוד

7
02.12.2009
מבני נתונים גנריים
שקף לעמוד
ששה שקפים לעמוד
דוגמאות קוד: collections.zip, comparator.zip

8
09.12.2009
הורשה
שקף לעמוד
ששה שקפים לעמוד

9
16.12.2009
עוד הורשה
שקף לעמוד
ששה שקפים לעמוד

10 23.12.2009 עוד IO שקף לעמוד
ששה שקפים לעמוד
דוגמאות קוד: observer.zip
11 30.12.2009 Observer
ומחלקות פנימיות
שקף לעמוד
ששה שקפים לעמוד

12 6.1.2010 עוד על מבני נתונים גנריים
מחרוזות
שקף לעמוד
ששה שקפים לעמוד

13 13.1.2010 ממשק משתמש גרפי שקף לעמוד
ששה שקפים לעמוד
דוגמאות מהשיעור: swt_examples.zip
14 20.1.2010 עוד על מנשקים והורשה שקף לעמוד
ששה שקפים לעמוד
דוגמאות מהשיעור:code14.zip
מצגת עם תשובות

שאלות ותשובות


תאריך שאלה תשובה
21.10.09 אין התאמה מלאה בין סגנון הכתיבה (code convention) שהוצג בכיתה לזה שמוגדר ע"י SUN - מה עושים? האם יורדו נקודות בשיעורי הבית עקב אי-הקפדה על סגנון? יש להשתמש בסגנון כתיבה כפי שמוגדר ב-SUN. לא יורדו נקודות על סגנון כתיבה, אלא במקרים קיצוניים. הכי חשוב להקפיד על ה-naming convension ואינדנטציה.
21.10.09 האם מותר להעזר בפתרון התרגילים בחומר מתקדם יותר ממה שנלמד בכיתה? התרגילים מבוססים על החומר שנלמד עד כה בכיתה, מצופה מכם לא להשתמש בחומר מתקדם יותר. לדוגמא,  בתרגיל הראשון אתם לא אמורים להשתמש במשפטי תנאי ולולאות.
21.10.09 האם יש צורך לבדוק תקינות קלט בשיעורי הבית? שני תרגילים ראשונים לא יידרשו מכם בדיקות קלט. בהמשך הקורס - כן.
21.10.09 באיזו גרסת Java עלינו להשתמש? גרסת ה-Java העדכנית היא 1.6 והיא גם הגרסה המומלצת. בקורס מותר להשתמש  מגרסה 1.5 ומעלה.
25.10.09 מסיבה X לא אוכל להגיש את תרגיל Y בזמן. האם אוכל להגיש התרגיל באיחור של Z ימים מבלי שהם יכללו בחמשת הימים המותרים? כאשר אתה מגיש את התרגיל, אנא צרף את בקשתך זו לקובץ ההגשה (עם האישורים המתאימים, אם יש), ואולי היא תאושר ע"י בודקי התרגילים. לשיקולם.
1.11.09 בתרגיל 3, חלק ג' (סודוקו) האם ניתן להניח כי קיים פתרון יחיד לסודוקו? לא ניתן להניח כי קיים פתרון יחיד לחידה. במידה וקיים פתרון כלשהו על הפונקציה להחזיר true ולמלא את המטריצה באחד הפתרונות האפשריים.
1.11.09 בתרגיל  2, שאלה 4 אפשר לא לתרגם את רשימת המחרוזות הנקלטת למספרים? כן
2.11.09 בתרגיל 3, שאלה 1 בפונקציות fix45, איך מתמודדים עם מערכים ריקים \ null? מותר להניח שתנאי הקדם כולל דרישה למערכים שאינם ריקים ועל כן אינכם צריכים להתייחס למקרה כזה
3.11.09 בתרגיל 3, שאלה 2, ב-groupSumA, האם מותר להניח שהמספרים במערך nums הינם בטווחים של int? כן. הניחו כי סכום הערכים המוחלטים במערך קטן מערך ה-int המקסימלי.
4.11.09
האם אפשר להזיז באופן קבוע את ימי הגשת תרגיל הבית לשבוע אחרי התרגול? 
מועד הגשת התרגילים נקבע מתוך מטרה למקד את התלמידים בחומר החדש, שזה עתה נלמד בשיעור, וכך לא ליצור פער בין לימוד החומר ובין תרגולו. מנסיון השנים הקודמות, דרך זו מסייעת לתלמידים להטמיע את חומר החדש הנלמד בהרצאה מכיוון שכבר תרגלו את החומר שנלמד בשבוע קודם לכן.

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

לקראת אמצע הסמסטר צוות הקורס ישקול בשנית את מועד הגשת התרגילים.
5.11.09 בתרגיל 3, שאלה 1, מה המשמעות של [prev(arr[i]) == arr[i$ בתנאי האחר? המערך arr אינו משתנה עקב הרצת  הפונקציה.
9.11.09 האם בסוף הקורס אוכל לקבל הסמכה כלשהי על ידיעותיי בשפת Java? על אף שהקורס תוכנה 1 אינו מקצועי אלא אקדמי, הוא מכיל כמעט את כל התוכן של קורסי ההסמכה של Java של חברת Sun. לתלמידי הקורס יש גישה חופשית למאגר קורסים מקוונים של חברת Sun אשר בסופם, תלמידים אשר מעוניינים בכך, יוכלו לגשת לבחינות הסמכה. פרטים נוספים ניתן למצוא באתר הקורס בוירטואל טאו (מחייב שם וסיסמא)
10.11.09 בתרגיל 4, בשאלת הצב, האם מותר להניח שהמשתמש מקליד מספר חוקי (כלומר חיובי שלם)? כן
10.11.09 בתרגיל 4, בשאלת ה-Image Processing
1. האם הפונקציות שלי מקבלות עותק של התמונה שאפשר לשנות או שצריך להקצות מערך חדש ?
2. האם צריך לבדוק תקינות ? imageData != null && imageData.length >=0 ובשאלת ההיסטוגרמה שכל הצבעים בין 0 ל-255, או שאפשר להניח שזה המצב ?
אפשר להניח שהתמונה תקינה. לגבי ההחזרה, בקובץ ה-java כתוב (בהערה בפונקציה) שעל הפונקציות להחזיר עותק מתוקן של התמונה
12.11.09
בתרגיל 4, בשאלה TURTLE, האם ניתן להניח שהקלט הוא מחלק של 360?
אם לא,  לא תתאפשר סגירת מעגל שלם.
כן
22.11.09 בתרגיל 5, בשאלת הפולינומים, כאשר מחברים שני פולינומים p1.add(p2) האם p1 מתעדכן להיות הסכום? לא! הפולינומים הם immutable. עליכם להחזיר פולינום חדש שיתאר את הסכום של p1 ו-p2. כנ"ל לשאר הפעולות על פולינומים.
22.11.09 בתרגיל 5, בשאלת הפולינומים, יש טקסט לא ברור בחלק השני של החוזה של הפונקציה equiv זו "טעות סופרים" - מצטערים. תוקן בגרסה הנוכחית של התרגיל.
22.11.09 בתרגיל 5, בשאלת הפולינומים, האם מותר לשנות את המימוש של הבנאי (למשל לשים בתא 1- ולא 0)? כן
22.11.09 בתרגיל 5, בשאלת הפולינומים, האם מותר להניח שהפונק' coeff מקבלת מס' חוקי (בין 0 לדרגת הפולינום)? מותר, בהנחה שתגדירו תנאי קדם מתאים
22.11.09
בתרגיל 5 בשאלת הפולינום אנו אמורים למלא representation_invariant@, מה הכוונה? 
representation_invariant  == @imp_inv@
26.11.09 בתרגיל 6, בחלק א' יש את ההערה: "אין להמיר את הייצוג הפנימי לייצוג אחר לצורך מימוש פעולה (רק לצורך פלט). לצורך מימוש
ייצוג מסוים אין להיעזר במחלקות המממשות ייצוג שונה.".
לא ברור לי מה נחשב "להמיר את הייצוג הפנימי" ומה לא
"להמיר את הייצוג הפנימי" - שימוש בשיטות או בהיכרות עם מימוש ספציפי של הממשק. כלומר: עליכם להשתמש אך ורק בשיטות המוגדרות במנשק עצמו.
29.11.09 אני רואה במערכת שחלק מהסטודנטים קיבלו ציון לתרגיל, אבל אני לא קיבלתי, הכל בסדר? אם אין ציון או "0" במערכת והגשתם בזמן, התרגיל ייבדק בקרוב. לא כל התרגילים נבדקים ביחד. אם הגשתם בזמן וקיבלתם ציון "0", אנא שלחו מייל לבודקי התרגילים והם יעזרו לכם לפתור את הבעיה.
29.11.09 בתרגיל 6, בחלק א', בדוגמא של  ה-int התייחסתם לכתובת IP הבאה: 192.168.0.1. אני לא מצליח להכניס אותה ל-int  כי היא חורגת מהתחומים החוקיים של  signed int. האם יש צורך לתמוך בדוגמא הזו או שזו טעות? אתם מתבקשים לתמוך ב-IP שבדוגמא! אפשר להשתמש בפעולות בינאריות כדי לייצר אותו. שימו לב שבשימוש בפעולות בינאריות אנחנו מתחמקים למעשה מהתייחסות לערך ה"אמיתי" של ה-int.
29.11.09 בתרגיל 6, בחלק א', התבקשנו לממש את השיטה ()mask, מאיזה טיפוס דינאמי ה-IPAddress המוחזר מהפונקציה הזו? עליכם להחזיר אובייקט שמממש את המנשק IPAddress, הטיפוס הדינמי של האובייקט שאתם מחזירים  הינו לשיקול דעתכם.
29.11.09 בתרגיל 6, בחלק א', למימוש פעולת equals  ו-isPrivateNetwork אני משתמשת בפעולת המנשק  getOctet , כדי לא לפגוע בהערה על שינוי ייצוג. אבל בצורה זו הקוד בכל שלושת המימושים יהיה זהה האם זה חוקי? זה מה שאתם יכולים לעשות עם הידע שלכם כרגע. את צודקת בדאגה שלך על שכפול הקוד, בהמשך הקורס נראה איך פותרים את הבעיה הזו.
29.11.09 בתרגיל 7, בחלק ב', בתיאור השיטה index כתוב:
" עליכם...לדאוג לשמור על הקשרים הבאים: לכל מילה באילו דפים היא
מופיעה‬ ‫וכמה פעמים בכל דף , לכל דף כמה מילים בסה"כ מופיעות בו (עם
חזרות).‬"

במנשק WordIndex אין אף שירות שמאפשר לשלוף את המידע הזה - מה הטעם לשמור אותו?
המידע הזה ימצא בתוך מבנה הנתונים שתגדירו ותממשו (הארגומנט words ב-index).
29.11.09 בתרגיל 7, בחלק ב', בתיאור השיטה index מוגדר בדיוק איך אמור להיות מורכב מבנה הנתונים, האם חייבים להקפיד על ההוראות המדוייקות של התיאור אחד לאחד? יש לי רעיון איך להחזיק את הנתונים בצורה קצת שונה, שעדיין יאפשרו כמובן את השימוש ב-search  אח"כ. מותר לחשב מה שמתחשק לכם כל עוד תעמדו בשירותי המנשק (כלומר ללא שינוי המנשק עצמו)
6.12.09 בתרגיל 8, מה המשמעות של השיטה getVisionEnergy במנשק Animal? במה היא שונה מ-getRangeOfVision? זו טעות שלנו! getVisionEnergy היא שיטה מיותרת. הפעילו את getRangeOfVision או מחקו את השיטה מהמנשק המקורי.
6.12.09 בתרגיל 8, האם צאצא שנולד ומוקם אחרי ההורה מתחיל להשתתף במשחק ישר בסיבוב הראשון (כלומר ישר אחרי ההורה שלו) כן
6.12.09 בתרגיל 8, האם אנחנו מגדירים את התכונות של החיות בהקשר של גיל התחלתי ומרחק ראייה? כן
6.12.09 בתרגיל 7, חלק ב', האם בהנתן מילת חיפוש סדר הדפסת הדפים (urls) חשובה? לא
6.12.09 מה צריך להיות הציון של תרגיל  כדי שנקבל עליו את הנקודות? מעל 60
14.12.09 בתרגיל 8, רשום שכל משבצת מתוארת ע"י המנשק של Tile. אבל כדי להריץ את הסימולציה יש לשנות את הערכים בתוך המשבצת והמנשק הזה לא מאפשר שום שינוי, רק קריאת מידע. איך אפשר לייצג את העולם בתור Tile-ים? שינוי הערכים נעשה דרך העולם ולא דרך Tile. אין הכרח להגדיר את העולם דרך tile-ים אלא רק להחזיר אחד כזה כשמתבקש.
14.12.09 בתרגיל 8, לגבי המחלקות שממשות את המנשקים שנתתם -
האם מותר להוסיף שיטות שהחתימה שלהן אינה מופיעה במנשק? לדוגמא, האם יש מניעה להוסיף במחלקה MyTile שאני מגדיר, שיטות שהחתימה שלהן אינה מופיעה במנשק?

וודאי. רק שימו לב שאינכם משתמשים בתכונות החדשות שהוספתם במקום שאמור לקבל אובייקט מטיפוס Tile (לדוגמא). קחו בחשבון שהתכנית שלכם צריכה לעבוד גם אם נחליף את ה-Tile שלכם במימוש אחר.
15.12.09 בתרגיל 8, נתבקשנו לכתוב תכנית בשם WordApplication, האם לא חסרה כאן L (צריך להיותWorldApplication )? כן. הוסיפו את ה-L החסרה
22.12.09 בתרגיל 8, לא ברורים לי השירותים getRangeOfVision, שלAnimal ו-getTileAt של העולם.

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

האם getTileAt(animal,0,0) אמור להחזיר את ה-Tile שבא נמצאת החיה או את זה הכי דרום-מערבי?
זו טעות שלנו! getTileOf(animal,0,0) אמור להחזיר את ה-Tile שבו החיה נמצאת. שימו לב שזה חוקי לבקש Tile בתחום -rangeOfVision עד +rangeOfVision (זה גם מגדיר את rangeOfVision). אנחנו מתנצלים על הבלאגאן והבילבול
27.12.09 בתרגיל 10 חלק 2, למה עלינו להשתמש במנשק SortedSet שאתם הגדרתם בשביל התרגיל במקום להשתמש ב
java.util.SortedSet ?
הכוונה היא שתממשו בעצמכם גרסה מצומצמת של SortedSet ואליה תוסיפו פעולות מורכבות יותר כגון חיתוך קבוצות. על כן, שימוש במחלקה מ-java.util אינו מתאים.
27.12.09
בחלק ב' של תרגיל  9, האם ניתן  להניח משהו שמבנה ה-path אינו כולל רווחים (כלומר אין רווחים בשמות תיקיה או קובץ)? זה מאוד מקשה על ה-parsing של שורת הפקודה.
ניתן להניח שאין רווחים בשם תקיות וקבצים
29.12.09 בתרגיל 9, שאלה 1, יש המון סעיפים ותתי סעיפים מה שמבלבל מאוד את שמות הקבצים - איך לקרוא לקבצים? תשובת הבודק:
יש לקרוא למחלקות:
minCode
minMemory
noInheritance

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

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

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

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

מה ניתן לעשות?

למרות האמור לעיל עומדות בפני תלמידי הקורס הזדמנויות רבות:

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

2. לכל הבחינות הקורס מפורסמים פתרונות מלאים, אשר במקרים רבים מכילים דיון מקיף לגבי חלופות הפתרון השונות, יתרונותיהן וחסרונותיהן. המדובר בעשרות שאלות. (כולם, כמובן, ברמת בחינה...). הרשימה המלאה של הבחינות ופתרונן תתפרסם לקראת סיום הסמסטר, אולם רשימה חלקית כבר מופיעה באתר הקורס.   
6.1.10 בתרגיל 10, בשאלה 2 האם מותר לממש מחלקה אבסטרקטית המכילה חלק מהקוד שמשותף לשני המימושים?  אפשר. לא חובה.
10.1.10 בתרגיל 10, בחלק 3, האם לא חסר מימוש של שירות נוסף? האם אפשר באמת לממש את כל השירותים רק באמצעות lessTheEqual? לא חסר מימוש נוסף. ניתן לממש את כל השירותים רק באמצעות lessTheEqual.
14.1.10 בתרגיל 11, בחלק 2, בפקודה s, נניח שלא ניתן שם קובץ ושספר הטלפונים לא נטען מקובץ מסוים אלא נוצר חדש? כמובן שאי אפשר לתמוך בזה - תנו למשתמש הודעה מתאימה שיבין שטעה