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

קבוצות לימוד

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


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


סגל הקורס


הודעות

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

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

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

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

רשימת דיוור

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

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

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

מבחן

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

מועד: תאריך:  שעה
מועד א' (פתרון)
06.02.11
09:00
מועד ב' (פתרון) 14.09.11
09:00

תרגילים

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


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

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

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

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

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

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


מספר פורסם בתאריך מועד הגשה משקל הערות
תרגיל מספר 1 17.10.2010
24.10.2010 1
דף הנחיות לפתיחת חשבון מחשב
הכרת סביבת המחשוב באוניברסיטה (כולל הוראות התקנה של אקליפס)
עמודים 1-14 ב-דף עבודה ללימוד סביבת אקליפס
תרגיל מספר 2 17.10.2010 31.10.2010 1
 
תרגיל מספר 3
 25.10.2010  07.11.2010  קובץ עזר: sudoku.zip
תרגיל מספר 4
 02.11.2010  14.11.2010 קבצי עזר לשאלה 1: logo_turtle.jar, simpleio.jar, Pentagon.java
תיעוד עבור Turtle, תיעוד עבור LineInput
קבצי עזר לשאלה 2: image_processor.jar, ImageProcessing.java
תמונות לדוגמא: images.zip
תיעוד עבור ImageProcessing 
תרגיל מספר 5 07.11.2010   21.11.2010 קובץ עזר לחלק א: DisjointSets.java
קובץ עזר לחלק ב': hw5partb.zip  (קבצים + תיעוד)
קבצי עזר לחלק ג': Polynomial.java, TestPolynomial.java
תרגיל מספר 6  14.11.2010  01.12.2010 1 קובץ עזר: IPAddress.java
קובץ עזר לחלק 3: course.zip 
תרגיל מספר 7 21.11.2010  08.12.2010  1  קובץ עזר: simplesearch.zip, oldmac.zip (ראו הנחיות בסוף התרגיל)
תרגיל מספר 8 29.11.2010 15.12.2010 1  קובץ עזר: Employee.java, addressbook-1011a.zip
תרגיל מספר 9 05.12.2010 22.12.2010  
תרגיל מספר 10 12.12.2010  29.12.2010  קובץ עזר: hw10_resources.zip 
תרגיל מספר 11 20.12.2010 19.01.2010  2 קובץ עזר: adderessbook-gui.zip
מימוש: AddressBook.jar

חומר עזר

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

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

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

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

וידאו

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

הרצאות

המצגות מופיעות כאן בפורמט pdf וניתן להדפיסן מאקרובט.  לנוחיותכם, (ולחסכון בנייר) ניתן להדפיס 6 שקפים לעמוד (בין יתר האפשרויות).
מספר תאריך שקפים הערות ותוספות
1
17.10.2010
18.10.2010
00 מנהלות
01 שלום עולם
טיפוסים יסודיים, ביטויים, השמות מחרוזות מערכים
2 24.10.2010
25.10.2010
02 מבני בקרה
תנאים, לולאות, זימון והגדרת שרותים, העמסת שרותים
3 31.10.2010
01.11.2010
03 שרותים מודל הזיכרון של העברת ארגומנטים, מנגנוני השפה, חוזה של שרותים
בחנ\י את עצמך
4 07.11.2010
08.11.2010
04 מחלקות חוזים, נכונות והסתרת מידע. הוכחת נכונות
סיכום תגיות חוזה שנזכרו בהרצאה ובתרגול
שימוש במחלקות קיימות: logo_turtle , דוגמת שימוש בצב , תיעוד עבור Turtle,
עוד דוגמא: מסנכרן כתוביות , סרט לדוגמא , כתוביות לדוגמא
5 14.11.2010
15.11.2010
05 עצמים כתיבת טיפוסי מחלקה חדשים
עיצוב מחלקה על פי מפרט
מצב מופשט ופונקציית הפשטה
לקריאה נוספת: הוכחת נכונות של מחלקות
הקובץ עודכן. טעות בשקף 53 תוקנה: [Xi = rep[count - i + 1
6 21.11.2010
22.11.2010
06 מנשקים הגדרת מנשקים
פולימורפיזם ו- dynamic dispatch
כיסינו בהרצאה שקפים 1-69 - נמשיך בשבוע הבא.
7 28.11.2010
29.11.2010
06 תבנית עיצוב המפעל
07 מבני נתונים
תבנית עיצוב - המפעל (המשך משבוע שעבר)
הפשטת טיפוסים (טיפוסים מוכללים - generics)
מבני נתונים מקושרים, מחלקות פנימיות
במצגת מנשקים עודכנו שקפים 82-87 (לפי הגרסה שהוצגה בהרצאה)
8 03.12.2010
06.12.2010
07 תבנית עיצוב: איטרטור
הורשה (חלק א')
תבנית עיצוב - איטרטור (המשך משבוע שעבר)
במצגת הורשה עודכנו שקפים 71-75 (לפי הגרסה שהוצגה בהרצאה)
9 12.12.2010
13.12.2010
09 חריגים
10 19.12.2010
20.12.2010
10 הורשה (חלק ב')
10 המתאם
תבניות עיצוב, static binding, dynamic dispatch
11 26.12.2010
27.12.2010
10 הורשה (חלק ב')
11 טיפוסי מניה
נושאים מתקדמים בהורשה (המשך משבוע שעבר): טיפוסים מוכללים, חוזים וקבלנות משנה, שימוש לרעה
טיפוסי מניה (enum)
לקריאה נוספת: טיפוסים מוכללים,
12 02.01.2011
03.01.2011
מנשק משתמש גרפי דוגמת הקוד מהשיעור: GoogleAjaxBrowser
עוד GUI:
13 אוהד
09.01.2011
13 מבוא להנדסת תוכנה
13 תכנות מונחה בדיקות

13 דני
10.01.2011
סוף מצגת 10
הורשה (חלק ב')
+
web evelopment
הקישור  web development  מצביע למצגת שעודכנה אחרי השיעור 
14 אוהד
16.01.2011
תכנות אינטרנט
14 דני
17.01.2011
תבנית עיצוב builder
Hello Android

 

תרגולים

מספר תאריך נושא שקפים הערות ותוספות
1
19-20.10.2010

מבוא
שקף לעמוד
ששה שקפים לעמוד
דף הנחיות לפתיחת חשבון מחשב
הוראות הגשת שיעורי בית דרך ה-Virtual TAU
הכרת סביבת המחשוב באוניברסיטה (כולל הוראות התקנה של אקליפס)
עמודים 1-14 ב-דף עבודה ללימוד סביבת אקליפס
הוראות שימוש בחומר העזר המלווה לקורס
Code Conventions for the Java Programming Language
2
26-27.10.2010 מבני בקרה
שקף לעמוד
ששה שקפים לעמוד
הכרת השימוש ב debugger
3
2-3.11.2010 פונקציות
שקף לעמוד
ששה שקפים לעמוד
נספח: המרות (casting) [שקף לעמוד] [שישה שקפים]
קוד הדגמה: MaxSpan
4 9-10.11.2010 שימוש באובייקטים, IO שקף לעמוד
ששה שקפים לעמוד
קוד הדגמה: Translategoogle-api-translate-java-0.92.jar
Javadoc
5
16-17.11.2010 הגדרת מחלקות
שקף לעמוד
ששה שקפים לעמוד

6
23-24.11.2010 מנשקים ועוד
שקף לעמוד
ששה שקפים לעמוד

7
30.11.2010
1.12.2010
מבני נתונים גנריים
שקף לעמוד
ששה שקפים לעמוד
דוגמאות קוד: collections.zip, comparator.zip
8
7-8.12.2010 הורשה
שקף לעמוד
ששה שקפים לעמוד
שקפים על סדר הפעולות ביצירת אובייקט
9
14-15.12.2010 I/O שקף לעמוד
ששה שקפים לעמוד
דוגמאות מהתרגול: serialization.zip, io_examples.zip

10 21-22.12.2010 עוד הורשה שקף לעמוד
ששה שקפים לעמוד

11 28-29.12.2010 Observer
ומחלקות פנימיות
שקף לעמוד
ששה שקפים לעמוד

12 4-5.01.2011 ממשק משתמש גרפי
שקף לעמוד
ששה שקפים לעמוד
דוגמאות מהשיעור: swt_examples.zip
13 11-12.01.2011 עוד על מבני נתונים גנריים שקף לעמוד
ששה שקפים לעמוד

14 18-19.01.2011 סיכום שקף לעמוד
ששה שקפים לעמוד


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


תאריך שאלה תשובה
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 ימים מבלי שהם יכללו בחמשת הימים המותרים? כאשר אתה מגיש את התרגיל, אנא צרף את בקשתך זו לקובץ ההגשה (עם האישורים המתאימים, אם יש), ואולי היא תאושר ע"י בודקי התרגילים. לשיקולם.
12.12.10
תרגיל 8: האם קיימת בעיה בניסוח בסעיפים ב' וג'?
אכן, טעות סופרים, השם ומספר הזהות יועברו בבנאי ולא יהיה ניתן לשנותם. פרטי המשכורת יועברו אף הם בבנאי אך ניתן יהיה לשנותם בהמשך.
12.12.10
תרגיל 8: בקוד מופיעה דרישה לזרוק חריג, האם צריך להתייחס אליה?
לא למדנו עדיין על חריגים לכן התעלמו מדרישה זו והתייחסו רק לתנאי הקדם
14.12.10
תרגיל 8: אילו מחלקות צריך לממש בשאלה 2, חלק ב'?
רק את המחלקה TextualAddressBookView
19.12.10
בחלק ב' של תרגיל  9, האם ניתן  להניח משהו שמבנה ה-path אינו כולל רווחים (כלומר אין רווחים בשמות תיקיה או קובץ)? זה מאוד מקשה על ה-parsing של שורת הפקודה. ניתן להניח שאין רווחים בשם תיקיות וקבצים