Credit points: 3
הסטודנטים ילמדו פיתוח גרעין מתקדם בגרסה עדכנית של לינוקס תוך שימושבמבני נתונים וממשקי גרעין פנימיים. הקורס יקנה לסטודנטים היכרות עםהתכונות והרכיבים העיקריים של הגרעין ויאפשר לסטודנטים לבצע בגרעיןשינויים משמעותיים, עם התמקדות במנהלי התקנים. הקורס יקנה ניסיון מעשיבעבודה מודרנית עם קוד פתוח באמצעות כלים ועקרונות הנדסת תוכנה הכולליםניפוי שגיאות גרעין (KERNEL DEBUGGING), ניהול מבוזר של תוכנה עם GIT,פירוק של טלאי תוכנה (PATCH) מורכב לאוסף של טלאים פשוטים תוך מזעורהתלויות שביניהם (PATCHSET), סקרי תוכנה (CODE REVIEWS), והצגת פרויקטמוצע לצוות רב משתתפים. הקורס מניח שהסטודנטים סיימו בהצלחה את קורסמערכות ההפעלה הבסיסי. בקורס יש הרצאה ותרגול שבועיים. הציון בקורסמבוסס על אוסף של משימות מעשיות ופרויקט סיום שיוצג בפני סגל הקורס.ההרצאות והתרגולים יינתנו באנגלית. הקורס נחשב כפרויקט לצרכי סיוםהתואר._ תוצאות למידה: בסיום הקורס הסטודנטיות והסטודנטים יהיו מסוגלים:1. לפתח ולתחזק תכונות ומודולים לא טריוויאליים בגרעין של לינוקס.2. להשתתף ולהתנהל בקהילת קוד פתוח.3. לתת ולקבל משוב על טלאי תוכנה בקהילה זו.4. לתכנת תכנות מתקדם בשפת C.
THIS COURSE WILL INTRODUCE STUDENTS TO ADVANCED LINUX KERNELDEVELOPMENT, USING INTERNAL KERNEL APIS AND DATA STRUCTURES. THECOURSE WILL TEACH STUDENTS ABOUT THE KERNEL S MAIN COMPONENTS, AND ITWILL ALLOW THEM TO MAKE NONTRIVIAL CHANGES, PRIMARILY FOCUSING ONDEVICE DRIVERS. THE COURSE WILL PROVIDE HANDS-ON, PRACTICALEXPERIENCE IN CURRENT OPEN SOURCE CODE DEVELOPMENT USING SOFTWAREENGINEERING TOOLS AND PRINCIPLES, INCLUDING KERNEL DEBUGGING, WORKINGWITH GIT, STRUCTURING A SUGGESTED SOFTWARE CHANGE AS A LOGICALSEQUENCE OF PATCHES THAT COMPRISE A PATCHSET, CONDUCTING CODEREVIEWS,AND PRESENTING A SUGGESTED PROJECT TO MULTIPLE INTERESTEDPARTIES. THE COURSE REQUIRES THAT PARTICIPANTS HAVE SUCCESSFULLYCOMPLETED THE BASIC OPERATING SYSTEMS COURSE. THE COURSE CONSISTS OFWEEKLY LECTURES AND TUTORIALS. THE OVERALL GRADE IS BASED ON A NUMBEROF PRACTICAL ASSIGNMENTS AND A PROJECT, WHICH WILL BE PRESENTED ATTHE END OF THE SEMESTER TO THE COURSE STAFF. THE LECTURES ANDTUTORIALS WILL BE CONDUCTED IN ENGLISH. THE COURSE FULFILLS ONEPROJECT REQUIREMENT FOR UNDERGRADUATES. LEARNING OUTCOMES: AT THE ENDOF THE COURSE THE STUDENTS WILL BE ABLE TO: 1. DEVELOP AND MAINTAIN NONTRIVIAL LINUX KERNEL FEATURES AND MODULES.2. UNDERSTAND AND PARTAKE IN OPEN SOURCE SOFTWARE COMMUNITIES.3. PRODUCTIVELY GIVE AND RECEIVE FEEDBACK ON CODE PATCHES.4. STRETCH THEIR C PROGRAMMING SKILLS TO THE LIMIT.
הסטודנטים ילמדו פיתוח גרעין מתקדם בגרסה עדכנית של לינוקס תוך שימושבמבני נתונים וממשקי גרעין פנימיים. הקורס יקנה לסטודנטים היכרות עםהתכונות והרכיבים העיקריים של הגרעין ויאפשר לסטודנטים לבצע בגרעיןשינויים משמעותיים, עם התמקדות במנהלי התקנים. הקורס יקנה ניסיון מעשיבעבודה מודרנית עם קוד פתוח באמצעות כלים ועקרונות הנדסת תוכנה הכולליםניפוי שגיאות גרעין (KERNEL DEBUGGING), ניהול מבוזר של תוכנה עם GIT,פירוק של טלאי תוכנה (PATCH) מורכב לאוסף של טלאים פשוטים תוך מזעורהתלויות שביניהם (PATCHSET), סקרי תוכנה (CODE REVIEWS), והצגת פרויקטמוצע לצוות רב משתתפים. הקורס מניח שהסטודנטים סיימו בהצלחה את קורסמערכות ההפעלה הבסיסי. בקורס יש הרצאה ותרגול שבועיים. הציון בקורסמבוסס על אוסף של משימות מעשיות ופרויקט סיום שיוצג בפני סגל הקורס.ההרצאות והתרגולים יינתנו באנגלית. הקורס נחשב כפרויקט לצרכי סיוםהתואר._ תוצאות למידה: בסיום הקורס הסטודנטיות והסטודנטים יהיו מסוגלים:1. לפתח ולתחזק תכונות ומודולים לא טריוויאליים בגרעין של לינוקס.2. להשתתף ולהתנהל בקהילת קוד פתוח.3. לתת ולקבל משוב על טלאי תוכנה בקהילה זו.4. לתכנת תכנות מתקדם בשפת C.
THIS COURSE WILL INTRODUCE STUDENTS TO ADVANCED LINUX KERNELDEVELOPMENT, USING INTERNAL KERNEL APIS AND DATA STRUCTURES. THECOURSE WILL TEACH STUDENTS ABOUT THE KERNEL S MAIN COMPONENTS, AND ITWILL ALLOW THEM TO MAKE NONTRIVIAL CHANGES, PRIMARILY FOCUSING ONDEVICE DRIVERS. THE COURSE WILL PROVIDE HANDS-ON, PRACTICALEXPERIENCE IN CURRENT OPEN SOURCE CODE DEVELOPMENT USING SOFTWAREENGINEERING TOOLS AND PRINCIPLES, INCLUDING KERNEL DEBUGGING, WORKINGWITH GIT, STRUCTURING A SUGGESTED SOFTWARE CHANGE AS A LOGICALSEQUENCE OF PATCHES THAT COMPRISE A PATCHSET, CONDUCTING CODEREVIEWS,AND PRESENTING A SUGGESTED PROJECT TO MULTIPLE INTERESTEDPARTIES. THE COURSE REQUIRES THAT PARTICIPANTS HAVE SUCCESSFULLYCOMPLETED THE BASIC OPERATING SYSTEMS COURSE. THE COURSE CONSISTS OFWEEKLY LECTURES AND TUTORIALS. THE OVERALL GRADE IS BASED ON A NUMBEROF PRACTICAL ASSIGNMENTS AND A PROJECT, WHICH WILL BE PRESENTED ATTHE END OF THE SEMESTER TO THE COURSE STAFF. THE LECTURES ANDTUTORIALS WILL BE CONDUCTED IN ENGLISH. THE COURSE FULFILLS ONEPROJECT REQUIREMENT FOR UNDERGRADUATES. LEARNING OUTCOMES: AT THE ENDOF THE COURSE THE STUDENTS WILL BE ABLE TO: 1. DEVELOP AND MAINTAIN NONTRIVIAL LINUX KERNEL FEATURES AND MODULES.2. UNDERSTAND AND PARTAKE IN OPEN SOURCE SOFTWARE COMMUNITIES.3. PRODUCTIVELY GIVE AND RECEIVE FEEDBACK ON CODE PATCHES.4. STRETCH THEIR C PROGRAMMING SKILLS TO THE LIMIT.