Credit points: 3
הסטודנטים ילמדו פיתוח גרעין מתקדם בגרסה עדכנית של לינוקס תוך שימוש במבני נתונים וממשקי גרעין פנימיים
הקורס יקנה לסטודנטים היכרות עם התכונות והרכיבים העיקריים של הגרעין ויאפשר לסטודנטים לבצע בגרעין שינויים משמעותיים, תוך התמקדות במנהלי התקנים
הקורס יקנה ניסיון מעשי בעבודה מודרנית עם קוד פתוח באמצעות כלים ועקרונות הנדסת תוכנה הכוללים
- ניפוי שגיאות גרעין (KERNEL DEBUGGING)
- ניהול מבוזר של תוכנה עם GIT
- פירוק של טלאי תוכנה (PATCH) מורכב לאוסף של טלאים פשוטים תוך מזעור התלויות שביניהם (PATCHSET)
- סקרי תוכנה (CODE REVIEWS)
- הצגת פרויקט מוצע לצוות רב משתתפים
הקורס מניח שהסטודנטים סיימו בהצלחה את קורס מערכות ההפעלה הבסיסי
בקורס יש הרצאה ותרגול שבועיים, הציון בקורס מבוסס על אוסף תרגילים מעשיים ופרויקט סיום שיוצג בפני סגל הקורס
ההרצאות והתרגולים יינתנו באנגלית. הקורס נחשב כפרויקט לצרכי סיום התואר
בסיום הקורס הסטודנטיות והסטודנטים יהיו מסוגלים
- לפתח ולתחזק תכונות ומודולים לא טריוויאליים בגרעין של לינוקס
- להשתתף ולהתנהל בקהילת קוד פתוח
- לתת ולקבל משוב על טלאי תוכנה בקהילה זו
- לתכנת תכנות מתקדם בשפת C
This course will introduce students to advanced linux kernel development, using internal kernel APIs and data structures.
The course will teach students about the kernels main components, and will allow them to make nontrivial changes, primarily focusing on device drivers.
The course will provide hands-on, practical experience in current open source code development using software engineering tools and principles including:
- kernel debugging
- working with git
- structuring a suggested software change as a logical sequence of patches that comprise a patch-set
- conducting code reviews
- presenting a suggested project to multiple interested parties
The course requires participants to have successfully completed the basic operating systems course.
The course consists of weekly lectures and tutorials. The overall grade is based on a number of practical assignments and a project, which will be presented at the end of the semester to the course staff. The lectures and tutorials will be conducted in English.
The course fulfills one project requirement for undergraduates.
Learning outcomes: at the end of the course the students will be able to:
- develop and maintain nontrivial linux kernel features and modules.
- understand and partake in open source software communities.
- productively give and receive feedback on code patches.
- stretch their C programming skills to the limit.