ויקי תעודה – השפיעו על מה יהיה כתוב ליד התעודות שלכם!

היי!

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

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

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

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

פרק נושאים פירוט
1 הקדמה, אריתמטיקה, טיפוסי נתונים, קלט ופלט, משתנים, לוגיקה בוליאנית פרק זה מספק נחיתה רכה לעולם התכנות, ומניח את היסודות לקראת הפרקים הבאים. במסגרת הפרק החניכים לומדים להשתמש בלוגיקה בוליאנית ובאופרטורי השוואה, ומתרגלים כתיבת תוכנית בסיסית המקבלת קלט ומחזירה פלט.
2 תנאים, פונקציות, רשימות, פעולות על מחרוזות, תיעוד במסגרת הפרק החניכים נפגשים לראשונה עם היכולת להשפיע על מבנה זרימת התוכנית ועם עקרון החלוקה ליחידות קטנות שלהן אחריות יחידה. זהו השלב שבו החניכים מכירים ומשתמשים לראשונה במבנה נתונים – רשימה. בפרק זה החניך מקבל לראשונה תרגיל שמעודד אותו לחקור את התיעוד בעצמו. עידוד החניך למחקר עצמאי הולכת וגוברת ככל שהקורס מתקדם, ונהפכת בחציו השני של הקורס לערך מרכזי בעבודה.
3 לולאות while, חיתוך מחרוזות ורשימות, קבצים, פעולות על רשימות, Mutability וטאפלים החניכים לומדים לראשונה לולאות המבוססות על ביטוי בוליאני. במהלך הפרק הם מבצעים לראשונה debugging מורכב ולא טריוויאלי. בפרק זה החניך מקבל לראשונה כלים להתמודדות עם בעיות מהעולם האמיתי (קבצים, לולאות). זה גם השלב בו הוא פוגש לראשונה מבנה נתונים Immutable־י, ולומד לראשונה על מאפיין תכנותי מורכב שדורש הבנה של התנהגות השפה מאחורי הקלעים.
4 לולאות for, מילונים ופעולות עליהם, Unpacking, פונקציות מובנות בשפה. בפרק זה החניכים משתמשים לראשונה בתכונת ה־iterable־יות של מבני נתונים באמצעות לולאת ה־for של פייתון. בפרק דנים על מילונים ומבני נתונים מקוננים, תוך ניסיון להקנות אינטואיציה לבחירת מבנה נתונים מתאים לכל בעיה. זה גם הפרק שבו הם משתמשים לראשונה בטכניקות שיהפכו את הקוד לקריא יותר תוך שימוש בתחביר “פייתוני”. בסיום הפרק, החניכים קוראים על אוטומט סופי דטרמיניסטי. כתרגיל, עליהם לכתוב תוכנית שמקבלת כקלט מצבים, כללי מעבר וקלטים, ומחזירה את המצב הסופי שאליו הגיעה בסיום ריצת האוטומט עבור כל קלט.
5 מודולים, מוסכמות סגנון, פרמטרים לפונקציות (לפי מיקום, לפי שם, *args, **kwargs, ערכי ברירת מחדל), Generators בפרק זה גובר הצורך להשתמש במקורות מידע חיצוניים כדי למצוא כלים מתוך המודולים הסטנדרטיים שפייתון מספקת. לחניכים מוצג לראשונה באופן מסודר הרעיון של מוסכמות כתיבה ו־PEP8, והם לומדים על טכניקות מתקדמות יותר של קבלת ארגומנטים בפונקציות. בחלק האחרון של הפרק החניכים לומדים על generators ועל מילת המפתח yield.
6 קבוצות, מבוא לתכנות פונקציונלי, מודולים חיצוניים, ניהול מודולים בפרק זה החניכים לומדים על רעיונות פונקציונליים, כמו map, filter, lambda ומה משמעות המונח higher order function. הם לומדים גם על סוגי ה־comprehensions השונים שקיימים בפייתון וכיצד להשתמש בהם. בחלק האחרון של הפרק החניכים לומדים על מציאת מודולים צד שלישי באינטרנט, זיהוי מודולים רלוונטיים והתקנה שלהם.
7 מחלקות, מוסכמות תיעוד בפרק זה החניכים לומדים על מחלקות, ומכירים את קצה הקרחון של תכנות מונחה עצמים. תחילה, הם נפגשים עם הרעיון של מחלקות, מופעים, תכונות, פעולות אתחול ופונקציות מיוחדות; ולאחר מכן הם נדרשים להבין גם רעיונות כמו הכלה וכימוס. בין לבין, החניכים עוברים סקירה מעמיקה של טכניקות ומוסכמות תיעוד קוד, ומתבקשים לתרגל כתיבה של מחלקות מתועדות היטב.
8 ירושה, Design Patterns בסיסיות (ירושה מרובה, מחלקות מופשטות, Mixins), חריגות וטיפול בחריגות בפרק זה החניכים לומדים להכיר את הגמישות שבשימוש במחלקות. לאורך הפרק מודגשות הבעיות שעלולות לצוץ בשימוש שגוי במחלקות (תסמונת המחלקה השברירית, עקרון ההחלפה של ליסקוב, הבדלים בין הכלה לירושה). החניכים מתבקשים לשנות קוד של משחק שחמט שעושה שימוש במחלקות אבסטרקטיות וב־Mixins ובכך מתרגלים כניסה לקוד קיים, ומתנסים בשימוש בירושה ובטכניקות מתקדמות שקשורות לירושה. בהמשך הפרק, החניכים לומדים על טיפול בחריגות, על זריקת חריגות ועל יצירה שלהן, ונחשפים לדיון ולשיטות עבודה נכונות של טיפול בשגיאות.
9 סביבת פיתוח, ניפוי שגיאות, פיצול קוד לקבצים, Type annotations, Decorators בפרק זה החניכים עובדים לראשונה על IDE ולומדים את סביבת העבודה החדשה ויתרונותיה – כמו כלים לניפוי שגיאות, בעזרתם הם מתקנים תוכנית שבה הוכמנו טעויות מכוונות. בהמשך, החניכים לומדים על פיצול הפרויקט לקבצים ומתנסים בכך בעצמם. החניכים מתנסים גם בכתיבת קוד עם type annotations, הוספת type annotations לקוד קיים ובדיקת הקוד באמצעות mypy. לבסוף, החניכים לומדים על decorators ומחדדים את ההבנה שלהם בנוגע לתכונות הפונקציונליות של פייתון כשפה.
10 עבודה עם נתיבים, Git, GitHub בפרק זה החניכים מתוודעים לרעיון של ניהול גרסאות. במסגרת הפרק, הם כותבים מערכת משלהם לניהול גרסאות, שכוללת פקודות כמו add, branch, commit, status ו־checkout. החניכים מממשים גם merge בסיסי ו־graph, שהוא מעין log גרפי. בהמשך הפרק החניכים לומדים כיצד להעלות את הקוד שכתב ל־GitHub בעזרת git, ולומד כיצד לנווט ב־GitHub ולמצוא פרויקטים שניתן לסמוך עליהם.
11 HTML, CSS, DevTools בפרק זה החניכים לומדים על HTML ו־CSS ברמה בסיסית, ובסופו הם מעצבים בעצמם אתר סטטי רספונסיבי ותקני. החומרים כוללים מונחים בסיסיים, היכרות עם HTML בדגש על HTML סמנטי, כתיבת CSS רספונסיבי ועבודה מול MDN.
12 אינטרנט, סביבה וירטואלית, Wireframing, Serialization, APIs, Templating Engine, Web Frameworks, Heroku בפרק זה לומדים כיצד לבנות אתר – מרמת ה־wireframing ועד העלאת האתר לאינטרנט. במסגרת הפרויקט החניכים כותבים קוד פייתון שעושה שימוש ב־API חיצוני, על מנת להשיג מידע שיוצג באתר שלהם. החניכים לומדים לראשונה על Flask כ־microframework ל־web applications, ובונים את התצוגה למשתמש בעזרת מנוע התבניות Jinja2. הפרק מסתיים בתהליך deploy של האתר ל־Heroku (שירות PaaS) כדי להפוך אותו לפומבי.
13 מבוא למסדי נתונים רלציוניים, SQL בפרק זה החניכים לומדים על היתרונות של שימוש במסדי נתונים. במסגרת התרגול, הם שולפים מידע ממסדי נתונים ומשתמשים בשאילתות עם מילות המפתח SELECT, FROM, WHERE, JOIN, GROUP BY, HAVING, ORDER BY ו־LIMIT. הפרק מסתיים בדיון ותרגול של נרמול נתונים במסדי נתונים רלציוניים.
14 פעולות CRUD, שימוש ב־ORM, פרויקט בפרק זה החניכים כותבים פרויקט שממחיש את הקשר בין מסדי נתונים רלציוניים ליישומי אינטרנט. החניכים מתכננים ERD שבו ישנן 3 טבלאות או יותר, כותבים שאילתות ליצירה, קריאה, עדכון ומחיקה של הישויות בטבלאות ומשתמשים ב־ORM לבחירתם (peewee או SQLAlchemy) כשכבת הפשטה לשאילתות וגישור בין מסד הנתונים לאובייקטים בקוד.
15 Regular Expressions, מבוא ליעילות אלגוריתמית, pytest בפרק זה החניכים מעמיקים בביטויים רגולריים ולומדים להשתמש בהם, הן בפייתון והן לשימושים כלליים אחרים. החניכים לומדים להשתמש ב־pytest וכותבים בדיקות עבור “משחק החיים” (שכתבו בעצמם) ועבור הפרויקט שכתבו בפרק שעבר. בסיום הפרק החניכים לומדים מונחים בסיסיים ביעילות אלגוריתמית, מקבלים אינטואיציה ומחשבים זמני ריצה של תוכניות שונות.
16 פרויקט סיום בפרק זה החניכים עובדים יחד על פרויקט, שבו כל חניך לוקח על עצמו עבודה על 3 issues – לפחות פיצ’ר אחד ועד שני תיקוני באגים. במהלך העבודה החניכים לומדים על עבודה בצוות, שימוש ב־Git, פתרון קונפליקטים, קבלת CR־ים מעמיתים והשתלבות בקוד של אחרים.
18 לייקים

עבודה מול אתרי אינטרנט - HTML, CSS and SqlAlchemy

לייק 1

הייתי מוסיף בתוך שבוע 16 עבודה בgithub על פרוייקט משותף והסתנכרנות ציוותית (pr, cr) תוך עמידה בסטנדרט כתיבה גבוה
כאילו אני הרגשתי שהתובנות על עבודה בצוות שרכשנו בפרויקט האחרון היו משמעותיות

לייק 1

לדעתי בפרק 12 עבדנו לראשונה עם סביבה וירטואלית גם

לייק 1