מס` הקורס ופיתוח משחקים תכנות מונחה עצמים : שם הקורס 10204042/01

‫שם הקורס‪ :‬תכנות מונחה עצמים ופיתוח משחקים‬
‫שנה אקדמית‪ :‬ב'‬
‫היקף נקודות זכות‪5 :‬‬
‫סמסטר‪ :‬ב'‬
‫מס' הקורס‪10204042/01 :‬‬
‫תואר‪ :‬ראשון‬
‫שעות‪ 4 :‬שעות הרצאה ‪ 2 +‬שעות תרגול ‪ 2 +‬שעות סדנה‬
‫אפיון הקורס‪ :‬קורס תכנותי מתקדם‬
‫דרישות קדם‪ :‬תכנות מונחה עצמים והנדסת תוכנה‪ ,‬מבני נתונים‬
‫מרצה‪ :‬ד"ר מיכל אלחנתי‬
‫דואר אלקטרוני‪[email protected] :‬‬
‫טלפון‪02-629-19-23 :‬‬
‫שעת קבלה‪ : :‬יום שלישי ‪ 10:45-11:45‬או בתאום מראש‬
‫מתרגל‪ :‬יחזקאל ברנט‬
‫דואר אלקטרוני‪[email protected] :‬‬
‫אתר קורס‪http://cs.hadassah.ac.il/staff/michal/OOP2/main.html :‬‬
‫שעות הקורס‪:‬‬
‫הרצאה‪ :‬יום שלישי ‪( 9:00-11:00‬אולם ‪ ,)1517‬יום חמישי ‪( 12:00-14:00‬אולם ‪.)1517‬‬
‫תרגיל‪ :‬יום ראשון ‪( 15:00-17:00‬אולם ‪.)2101‬‬
‫סדנא‪ :‬יום ראשון ‪( 17:00-19:00‬מעבדה ‪.)4116‬‬
‫מטרות הקורס‪:‬‬
‫משחק "פאק‪-‬מן"‪" ,‬חופר"‪" ,‬גנבים בעיר הגדולה"‪" ,‬למינגס" ועוד משחקי מחשב רבים אחרים‬
‫הם דוגמאות לעולמות עם עצמים‪ ,‬פעולות‪ ,‬ויחסי גומלין ביניהם‪ .‬יישומים מסוג זה מדגימים‬
‫היטב את הרעיונות‪ ,‬העקרונות והאתגרים‪ ,‬הקיימים בתכנות מונחה עצמים‪ .‬הקורס יעסוק‬
‫בנושאים מתקדמים של תכנות מונחה עצמים כגון‪ :‬תבניות‪ ,‬איטרטורים‪ ,‬שימוש בספריות‬
‫קיימות‪ ,‬טיפול בחריגות ותבניות עיצוב‪ .‬ההתנסות התכנותית תכלול יישומים מעולם משחקי‬
‫המחשב המבוססים על מבני נתונים ואלגוריתמים הנלמדים בקורסים התיאורטיים‪.‬‬
‫תפוקות הלמידה‪:‬‬
‫הסטודנט יהיה מסוגל להתמודד עם תהליך פיתוח שלם כדוגמת משחק מחשב‪ .‬הסטודנט‬
‫יבחר משחק מחשב על פי העדפתו האישית ויהיה אחראי על תהליך הפיתוח המלא‪ :‬הגדרת‬
‫חוקי המשחק‪ ,‬דרישות‪ ,‬התמודדות עם הצדדים התאורטיים‪ ,‬עיצוב הקוד‪ ,‬בחירת כלים‬
‫תכנותיים וספריות‪ ,‬שימוש בכלי תכנות מתקדמים‪ ,‬קידוד ובדיקות איכות‪ .‬הסטודנט יהיה‬
‫מסוגל לנתח את הקוד שהתקבל במונחים של ביצועים‪ ,‬כלליות ובהירות‪.‬‬
‫תוכן הקורס לפי שבועות‪:‬‬
‫‪ .1‬תיאור הקורס והדגמות‪ ,‬סיכום הפרויקטים תוך התייחסות לנושאי תכנות מונחה עצמים‪.‬‬
‫‪ .2‬תבניות‪.‬‬
‫‪ .3‬איטרטורים‪.‬‬
‫‪1‬‬
.‫ מבני נתונים ואלגוריתמים גנריים‬.4
.inline ‫ מרחבי שמות ופונקציות‬,‫ מחלקות מקוננות‬.5
.‫ עיצוב מונחה עצמים של משחק‬,command ‫ תבנית העיצוב‬.6
.Move semantics .7
.‫ טיפול בחריגות‬.8
.‫ הספרייה הסטנדרטית‬.9
.Boost ‫ הספרייה הסטנדרטית וספריית‬.10
.‫ מצביעים חכמים‬.11
.‫ ירושה מרובה‬.12
.factory, double dispatch, serialization :‫ תבניות העיצוב‬.13
.‫ חזרה‬,‫ העשרה בנושאים הקשורים בפרויקט‬.14
:‫ספרות‬
1. Deitel, H.M. and Deitel, P.J. C++ How to Program, 9th Edition, Prentice Hall,
2013.
2. Deitel, H.M. and Deitel, P.J. C++ 11 for programmers, 2th Edition, Prentice Hall,
2013.
3. Gamma, E., Helm, R., Johnson, R. and Vlissides, J. Design Patterns, AddisonWesley, 1995.
4. Lippman, S.B., Lajoie, J. and Moo, B.E. C++ Primer, 5th edition, AddisonWesley, 2012.
5. Meyers, S. Effective C++, 3rd edition, Addison-Wesley, 2005.
6. Meyers, S. More Effective C++, Addison-Wesley, 1996.
7. Meyers, S. Effective STL, Addison-Wesley, 2001.
8. Meyers, S. Effective Modern C++, O'Reilly Media, 2014
9. Stroustrup, B. The C++ Programming Language. 4rd Edition, Addison-Wesley,
2013.
:‫אופן ההוראה‬
‫ דיונים ומפגשי‬,‫ קטעי קוד וכתיבה על הלוח‬,‫שיעורים פרונטליים המועברים על ידי מצגות‬
.‫מעבדה‬
:‫מטלות הקורס‬
‫ יינתן פרויקט‬.‫ בתדירות של אחת לשבועיים‬,‫ תרגילים תכנותיים‬4 ‫יינתנו במהלך הקורס‬
‫ תינתן‬.‫תכנותי לקראת סיום הקורס (כחודש לפני סיום הקורס) בהיקף של כשני תרגילים‬
.‫בחינה בסיום הקורס‬
:‫אופן הערכת הסטודנטים‬
2
‫משקל התרגילים והפרויקט ‪ 40%‬מהציון הסופי‪ ,‬ומשקל הבחינה ‪ 60%‬מהציון הסופי‪.‬‬
‫התרגילים במשקלים שווים והפרויקט במשקל כפול מתרגיל אחד‪ .‬הסטודנטים יידרשו להציג‬
‫שלבים שונים של הפרויקט בפני המרצה והמתרגל‪.‬‬
‫זכאי לגשת לבחינה סטודנט שקיבל ציון ‪ 65‬לפחות בשקלול התרגילים והפרויקט‪ .‬כדי לעבור‬
‫את הקורס יש לקבל ציון ‪( 55‬לפחות) בבחינה הסופית‪.‬‬
‫הנחיות נוספות‪:‬‬
‫‪o‬‬
‫מי שאינו יכול להגיש תרגיל בזמן בגלל מחלה‪/‬מילואים מתבקש לפנות בהקדם האפשרי‬
‫למרצה או למתרגל ולהציג אישור מתאים‪.‬‬
‫‪o‬‬
‫איחור בהגשת תרגיל (ללא אישור המרצה או המתרגל) יפחית ‪ 5‬נקודות על כל יום איחור‪,‬‬
‫ומעבר לשלושה ימי איחור התרגיל לא יתקבל‪.‬‬
‫‪o‬‬
‫ערעור על תרגיל יש להגיש תוך עשרה ימים מיום החזרת התרגיל‪.‬‬
‫‪o‬‬
‫אופן ההגשה ודרכי ההתקשרות יוסברו בתרגיל‪.‬‬
‫תכנות‪:‬‬
‫‪ C++11/14‬באמצעות ‪Microsoft Visual Studio 2013‬‬
‫‪3‬‬