מבוא מורחב למדעי המחשב Extended Introduction to Computer Science סמסטר ב' תשע"ט )2018-9( מרצים: אמיר רובינשטיין, יהונתן ברנט מתרגלים: מיכל קליינבורט, נעם פרזנצ'בסקי, בן בוגין מרצה מייסד: בני שור מתרגל מייסד: רני הוד 1
ברוכים הבאים לקורס קורס חובה לסטודנטים ממדעי המחשב מטרות: חשיפה למושגי יסוד, עקרונות ורעיונות בסיסיים במדעי המחשב חשיפה לכמה תחומים )מגוונים( במדעי המחשב רכישת מיומנות בתכנות בשפת Python דרישות קדם אקדמיות: אין בדידה במקביל תידרש מכם הרבה עבודה הבנת החומר תכנות 2
מתכונת הקורס בשבוע טיפוסי 2 שיעורי הרצאה בימי א' ו- ד' אפשר עקרונית לעבור בין הקבוצות במהלך הסמסטר, אבל באחריותכם להשלים פערי הספק בין הקבוצות 1 שיעור תרגיל שבועי תרגילי בית ומבחן משותפים שעות קבלה, מופיע באתר )חלק על פי תיאום במייל( 3
כל חומרי הלימוד )הרצאות, תרגולים, תרגילי בית, קישורים( רוב התקשורת הדיגיטלית )פורומים, הודעות( הגשת תרגילים 3 אתרי הקורס tau-cs1001-py.wikidot.com לא דורש רישום, פתוח לכל ניתן להגיע דרך חיפוש בגוגל "cs1001" )כאן הסבר על מקור השם(( נשתמש ב- 3 פלטפורמות, בנסיון למצות את המיטב מכל אחת הקישורים מופיעים במודל נא להירשם היום לפלטפורמה השניה piazza.com/tau.ac.il/spring2019/03681105 )דורש רישום בקישור הנ"ל( MOODLE )דורש רישום לקורס במערכות האוניברסיטה( 4
תקשורת בין הלומדים ועם הצוות באתר - - )piazza( תתקיים רוב התקשורת הדיגיטלית: הודעות הצוות פורום לשאלות ותשובות קהילה לומדת זה המקום לשאלות על החומר / תרגילי בית חובה לקרוא שאלות של קודמיכם כדי לא להציף את הפורום מצפים מכם לענות לחבריכם לספסל הלימודים. לא לפחד לטעות, מקסימום אנחנו נתקן הצוות ייכנס בתדירות של אחת ליום יומיים עד 5 התורמים הבולטים )איכותית וכמותית( יקבלו בונוס של עד 5 נקודות לציון הסופי. מיילים לצוות רק בנושאים אישיים מילואים / מחלה( )תיאום שעת קבלה, הקלות בגין שעות קבלה לעזרה משמעותית יותר בהבנת החומר 5
דרישות הקורס תרגילי בית חובה )15% מהציון( מבחן סופי )85% מהציון( המבחן ללא חומר, פרט לדף אישי אחד, דו צדדי בגודל A4 כדי לעבור את הקורס חייבים לקבל: ציון עובר )לפחות 60( בבחינה 1) לפחות 50 ב- 5 מתוך 6 מתרגילי הבית. מי שקיבל 50> בשניים צריך לברר איתנו את הזכאות לגשת לבחינה מייד עם קבלת הציון (2 יינתנו 6 גיליונות תרגילי בית, בערך אחת לשבועיים הראשון בימים הקרובים משקלם זהה שאלות "יבשות" ו"רטובות" )תכנות( חלק משמעותי מהלימוד והבנת החומר! חלק משאלות המבחן עשויות להתבסס על שאלות מתרגילי הבית הגשה ביחידים נהלים מחייבים לגבי הגשת תרגילים, לקרוא באתר. אי עמידה בנהלים תגרור הורדת ציון או פסילת שאלה / תרגיל שלם. 6
שאלון נהלים מופיע כבר או יופיע ביום יומיים הקרובים ב- moodle שאלון על נהלי הקורס, למילוי תוך כשבוע מענה נכון על כל השאלות בו יקנה 2 נק' בונוס לממוצע ת"ב. אפשר להגיש שוב ושוב עד לציון מלא. 7
רקע נדרש לסטודנטים בקורס רקע מגוון. לא נדרש רקע בתכנות מי שלא התנסה בתכנות יצטרך לעבוד קשה, בעיקר בהתחלה אלה שלקחו את קורס הקיץ "מבוא למבוא", זה יקל עליהם סטודנטים רבים ללא רקע הצטיינו בעבר בקורס גם בעלי רקע נרחב בתכנות ילמדו הרבה בקורס 8
ג/ שעות חונכות שעות שבועיות קבועות סטודנטים בוגרי הקורס משנה ב' ' יסייעו למתקשים בתרגילי הבית )בעיקר בחלק התכנותי( פרטים ומועדים באתר )יפורסם בקרוב( 9
שיתוף פעולה בעבודות הבית הכנה עצמאית של עבודות הבית היא קריטית להצלחה בקורס. אנחנו מעודדים התייעצות בעל פה עם חבריכם, אבל: כתיבת הפתרונות )גם התשובות המילוליות וגם תוכניות המחשב( ייעשו לבד. אסור להראות לסטודנטים אחרים תשובות שכתבתם בפרט, אסור להעביר בין סטודנטים שום חומר כתוב, גם לא במייל, צילום מסך וכו'. כמו כן העתקה מפתרונות קיימים מסמסטרים קודמים )למשל כאלו שנמצאים בדרייב המשותף למדעי המחשב( אסור בהחלט. חשד להעתקה יגרור טיפול בשני הצדדים ממנו(. )המעתיק וזה שהעתיקו 10
מקורות אין עדיין ספר לימוד שמכסה את החומר כפי שנלמד בקורס כדאי להציץ בקישור הבא באתר הקורס, לתרגילים נוספים וקישורים מעניינים: http://tau-cs1001-py.wikidot.com/additional-exercises-and-useful-links הרצאות של פרופ' בני שור מלפני כמה שנים ב YouTube )אך יש הבדלים רבים( ספרים מומלצים ללימוד שפת פייתון: זמין באינטרנט Think Python, by Allen B. Downey בספריה John Zelle, Python programming: an introduction to computer science, second edition, Fraklin, Beedle & Associates. תיעוד רשמי של השפה פייתון, גירסא x.3 http://docs.python.org/py3k/ 11
תוכן הקורס קורס רוחבי: כ- 15 נושאים מתחומים שונים של מדעי המחשב. חשיפה לרעיונות העיקריים, ללא העמקה זהו איננו קורס תכנות. יחד עם זאת, נכיר את יסודות התכנות בפייתון, וכל נושא ילווה במימוש בשפת פייתון 3 הרצאות ראשונות ו- 2 תרגולים ראשונים בעיקר פייתון 12
נושאי הקורס )לא בדיוק לפי הסדר וייתכנו שינויים( 1) Basics and infrastructure Programming in Python: Types, functions, conditionals, loops, the memory model The binary system and Natural number representation Basic algorithms on sequences: binary search, selection sort, merging sorted lists Complexity and the O notation High order functions and lambda expressions Randomness 2) Numerical computations and floating point numbers Floating point representation for real numbers Numerical derivatives and integrals Newton-Raphson method for finding roots of real functions 13 3) Number theory related problems Integer exponentiation using iterated squaring Primality testing using Fermat s little theorem Diffie-Hellman key exchange Integer greatest common divisor (GCD)
נושאי הקורס )לא בדיוק לפי הסדר וייתכנו שינויים( 4) Recursion Quicksort, mergesort, Fibonacci, munch!, Memoization 5) Data structures and object oriented programming (OOP) Classes, fields and methods Linked lists, trees, hash tables Iterators (finite and infinite) 6) Text related topics ASCII and Unicode representation of characters String matching: Karp-Rabin's algorithm Compression Huffman and Lempel-Ziv 14 7) Miscellaneous topics Error detection and correction codes Image representation and processing The Halting problem
אז מה זה "מדעי המחשב"? מדעי המחשב מחשבים Computer Science is no more about computers than astronomy is about telescopes. E. W. Dijkstra (1930-2002) מדעי המחשב הוא תחום שעניינו ההיבטים השונים של מושג שנקרא חישוב. אז מה זה חישוב? 15
אז מה זה "חישוב"? חישוב.computing בעברית קיימת מילה אחת עבור שתי המילים.computing calculating calculation מתייחס בד"כ לפעולות חשבוניות המשמעות של computing היא רחבה יותר, )חיבור, כפל(. לא רק 3+7*2... דוגמאות לחישובים: ספירת תאים בתמונה מציאת שורש לפונקציה חיפוש טקסט מציאת מסלול קצר בין שתי נקודות )waze( מיון נתונים חישוב בהקשר שלנו הוא אם כן עיבוד של נתונים לפתרון בעייה כלשהי.)Computer Science בחלק מהאוניברסיטאות בעולם, התחום נקרא Computing Science )ולא 16
עוד שתי מילים על שיעורי ההרצאה המצגות הן לגיבוי, מילה. ואנו לא נעבור עליהן שקף שקף מילה אין צורך לרשום כל מילה שנאמרת בכיתה שבו בנחת, היו מרוכזים, ורישמו לעצמכם סיכום + נקודות חשובות / עדינות לבירור בהמשך לאחר כל שיעור כדאי לעבור על הרשימות שלכם ובמידת הצורך לבקש הבהרות בפורום / שעות קבלה 17
And Now For Something Completely Different *,** * שקף עם כותרת זו יישמש להדגשת המעבר בין נושאים שונים בקורס. מי שהלך קצת לאיבוד, זו הזדמנות לקפוץ חזרה על הרכבת. ** אנו מזמינים אתכם לשלוח לנו הצעות לתמונות שיופיעו על שקפים אלו 18