20964 הרצאות אורח-סדנה בנושא מיוחד במדעי המחשב (אנגלית)
20964 הרצאות אורח-סדנה בנושא מיוחד במדעי המחשב (אנגלית)
3 נקודות זכות ברמה מתקדמת סמינריונית
שיוך: מדעים / מדעי המחשב
שיוך נוסף: הנדסה / הנדסת תוכנה
תנאי קבלה: 36 נ"ז במדעי המחשב וכן עמידה בדרישות האנגלית ובדרישות ההדרכה הביבליוגרפית בספרייה. יתכנו תנאי קבלה נוספים, בהתאם לנושא הקורס. ההרשמה לקורס מותנית באישור בכתב מהאחראי האקדמי.
- הקורס יילמד בשפה האנגלית -
פיתוח וריכוז הוראה: עופר ולד
אחראי אקדמי: ד"ר אורן ברכאן
ייעוץ: פרופ' יהודית גל-עזר
סדנה בנושא מיוחד - תכנות תחרותי
מבוא:
תכנות תחרותי הוא התמודדות שבה מתכנתים מנסים לפתור בעיות תכנות בצורה יעילה, מהירה, ויצירתית.
הבעיות המוצגות בתכנות תחרותי הן בדרך כלל בעיות לוגיות ומתמטיות, הדורשות שימוש באלגוריתמים ומבני נתונים מתאימים. המתכנתים יכולים לבחור את השפה התכנותית שהם מעדיפים, אבל עליהם לשים לב לביצועים, לזמן הריצה, לזיכרון, ולגודל התוכנית. המשתתפים בקורסי תכנות תחרותי משפרים מיומנויות של חשיבה אנליטית, פתרון בעיות, ולמידה עצמאית.
המטרה המרכזית של התכנות התחרותי היא קבלת הבנה בלתי אמצעית של נושאים חשובים בתחומים של מדעי המחשב כגון סיבוכיות זמן ומקום, שיפור ההבנה האלגוריתמית והתאמת אלגוריתמים לבעיות מתאימות. הכלים שאותם מציע עולם התכנות התחרותי מאפשרים לסטודנטים לממש בעצמם אלגוריתמים מורכבים, לפתור בעיות אמיתיות של סיבוכיות זמן ומקום ולקבל באופן ישיר ומיידי חיווי על ההתאמה של הפתרון לבעיה המוצגת, תוך כדי שימוש בכלים אוטומטיים המסוגלים להעריך את ביצועי הקוד.
הסטודנטים עובדים על פתרון הבעיות בצוותים, ולומדים גם על שיתוף פעולה ועבודת צוות תוך עמידה בלוחות זמנים מוגדרים.
בישראל מתקיימים קורסי תכנות תחרותי בטכניון ובאוניברסיטת תל אביב ובמוסדות נוספים.
מקצועות קדם: מבני נתונים ומבוא לאלגוריתמים 20407
נושאים עיקריים:
C++ מבני נתונים וספריות בשפת
תכנות דינאמי
בעיות גרפים
בעיות מתמטיות
גיאומטריה חישובית
בעיות זרימה
בעיות מיוחדות (אד-הוק)
אופן הלימוד:
מפגשי הסדנה דורשים שימוש במחשבים אישיים (נייחים, ניידים או טבלטים)
בסדנה יתקיימו 8 מפגשים במהלך הסמסטר. מתוכם 7 יהיו בזום ומפגש אחרון שיהיה התחרות הקבוצתית המסכמת באופן פרונטלי מלא.
יש חובה להשתתף במינימום של 5 מפגשים על מנת לקבל ציון בסדנה. חובה להשתתף במפגש הראשון והאחרון.
Antti Laaksonen מאת Competitive Programmer's Handbook ספר הלימוד עליו יתבסס הקורס יהיה
https://cses.fi/book/index.php הספר זמין באופן חופשי בכתובת
מפגש רגיל יארך כ 3- שעות ויכלול הצגת נושא על ידי שאלה לדוגמא (כחצי שעה) ולאחריו סימולציה בת כ-שעתיים שתכלול מספר שאלות. לאחר הסימולציה מתקיים דיון על הפתרונות, ניתוח של קודים שהוגשו והצעות לשיפור.
שלושה מהמפגשים יכללו תחרויות אישיות, בהן כל משתתף עובד לבדו על השאלות. ושלושה מפגשים בהם יהיה ניתן לעבוד בקבוצות בנות עד שלושה משתתפים. (ניתן יהיה לעבוד לבד, אבל לקבוצות יהיה כמובן יתרון מובנה על מי שעובד לבד).
במפגש הסיום, תתקיים תחרות מסכמת פרונטלית בקבוצות שתדמה תחרות אמיתית ותתקיים בקמפוס האו"פ.
תחרות הסיום תהווה חלק משמעותי מהציון ותאפשר לצוותים הזוכים להשתתף בתחרויות הבינלאומיות.
מפגשים וחומר קריאה לקראת המפגשים:
מפגש ראשון - בסיס - במהלכו נציג מהו תכנות תחרותי ונכיר את המערכת בה נשתמש.
חומר קריאה לקראת המפגש - פרקים 1 ו 2 מהספר
++C מפגש שני - מבני נתונים וספריות בשפת
חומר קריאה - פרקים 3-5
מפגש שלישי - תכנות דינאמי ואלגוריתמים חמדניים
חומר קריאה - פרקים 6-7
מפגש רביעי - בעיות גרפים
חומר קריאה - חלק 2 של הספר - פרקים 12-13 ואלגוריתמים נבחרים מפרקים 14-16
מפגש חמישי - בעיות מתמטיות
חומר קריאה - פרקים 21,22 ו 24
מפגש שישי - גיאומטריה חישובית
חומר קריאה - פרקים 29-30
מפגש שביעי - בעיות זרימה
חומר קריאה - פרק 20
מטלות בית וציון בסדנה:
על מנת לקבל ציון בסדנה יש להשתתף לפחות ב 5- מפגשים, ביניהם הראשון והאחרון.
השתתפות במפגש תחשב אם הוגש קוד המנסה לפתור שאלה כלשהיא בסימולציה.
מטלות הבית הן השלמת השאלות מהסימולציה לפתרונות מלאים.
ניתן לצבור נקודות נוספות עבור השגים באתרים חיצוניים, כדוגמת קודפורסס וליטקוד וארועי תכנות תחרותי נוספים. כיוון שאת המידע הזה לא נוכל לדעת מראש - הפרטים ימסרו במהלך הסמסטר.
הציונים בסימולציות הם יחסיים, מי שמסיים במקום הראשון מקבל ציון מלא, ולאחריו הציונים פוחתים לפי מדרג מתאים. מי שהגיש שאלה אחת שנפתרה נכון מקבל לפחות ציון עובר בקורס. (ייתכן ויותר, בתלות במדרג).
כשלון בסימולציה בודדת אינו כשלון בסדנה! ניתן לצבור ניקוד בסדנה על ידי השלמת השאלות בבית, והציון יחושב כמובן מתוך הסימולציות הטובות יותר. ייתכן ולאחר הסדנה יתאפשר לצוותים שסיימו במקומות הראשונים להשתתף בתחרות הבינלאומית, פרטים על כך ימסרו במהלך הסמסטר.