מפת הקורס
המטרה אינה רק ללמוד לתכנת. המטרה היא להבין כיצד מחשב עובד בכל הרמות — מהפיזיקה ועד התוכנה.
0. מתמטיקה בסיסית למדעי המחשב
לא צריך להיות מתמטיקאי כדי להתחיל מדעי המחשב. אבל כמה רעיונות מתמטיים חוזרים שוב ושוב.
חזקות
בינארי מבוסס על חזקות של 2:
אלגברה
משתנים, משוואות ופונקציות הם בסיס להבנת אלגוריתמים, מודלים וניתוח נתונים.
לוגריתמים
לוגריתם עונה על השאלה: "כמה פעמים צריך להכפיל בסיס מסוים כדי להגיע לערך?"
למשל:
log₂(8) = 3
כי
2³ = 8.
הסתברות
הסתברות חשובה במיוחד ב־Machine Learning וב־AI, שם מודלים לעיתים מייצגים אי־ודאות באמצעות התפלגויות הסתברות.
1. חשמל ואלקטרוניקה
לפני מחשבים צריך להבין מהו החומר שממנו הם בנויים.
תכונה פיזיקלית של חלקיקים כמו אלקטרונים.
הפרש פוטנציאלים חשמלי.
קצב זרימת מטען.
מידת ההתנגדות לזרימת זרם.
חוק אוהם
אלקטרוניקה משתמשת בתכונות האלה כדי ליצור אותות מבוקרים. במערכת דיגיטלית לא חייבים להשתמש בכל ערך אפשרי. אפשר להגדיר תחום שמייצג LOW ותחום שמייצג HIGH.
2. טרנזיסטורים
טרנזיסטור הוא רכיב מוליך־למחצה שניתן לשלוט בהתנהגות החשמלית שלו. באלקטרוניקה דיגיטלית הוא משמש בעיקר כמתג או כחלק ממעגלים אנלוגיים.
למה הוא כל כך חשוב?
כי אפשר ליצור ממנו רכיב שמבחין בין מצבים. ואם מחברים טרנזיסטורים, אפשר ליצור שערים לוגיים. אם מחברים שערים, אפשר ליצור חישובים.
3. לוגיקה ושערים
כעת אנחנו עוברים מהפיזיקה למתמטיקה לוגית.
NOT
| Input | Output |
|---|---|
| 0 | 1 |
| 1 | 0 |
AND
| A | B | Output |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
OR
| A | B | Output |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
XOR
XOR מחזיר 1 כאשר הקלטים שונים.
| A | B | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
NAND ו־NOR
NAND הוא NOT של AND. NOR הוא NOT של OR. הם מעניינים במיוחד משום שניתן לבנות מהם פונקציות לוגיות רבות.
4. בינארי — השפה של המחשב
ביט הוא יחידת מידע שיכולה לקבל שני מצבים.
המרה בינארי → עשרוני
Byte
8 ביטים = Byte אחד. לכן Byte יכול לייצג 256 ערכים שונים:
מספרים שליליים
מחשבים משתמשים בשיטות כמו Two's Complement כדי לייצג מספרים שליליים בצורה שמתאימה למעגלי חיבור בינאריים.
ייצוג טקסט
תו אינו "אות" מבחינת המחשב. הוא מיוצג באמצעות מספר. Unicode מאפשר לייצג מגוון עצום של מערכות כתב וסמלים.
תמונה
תמונה היא מידע מספרי על פיקסלים. לכל פיקסל ניתן להקצות ערכי צבע.
וידאו
וידאו הוא רצף של תמונות בתוספת מידע נוסף, למשל שמע.
5. איך מחשב באמת מחבר מספרים
זה החלק שמחבר בין "0 ו־1" לבין חישוב אמיתי.
Half Adder
Half Adder מקבל שני ביטים.
אם:
Full Adder
כאשר מחברים מספרים גדולים, צריך לטפל גם ב־Carry שמגיע מהביט הקודם. לכן משתמשים ב־Full Adder.
חיבור מספרים
6. זיכרון ומעגלים דיגיטליים
Combinational Logic
במעגל קומבינטורי, הפלט נקבע לפי הקלט הנוכחי.
Sequential Logic
במעגל סיקוונסיאלי, הפלט יכול להיות תלוי גם במצב הקודם. כאן נכנס רעיון הזיכרון.
Clock
מערכות דיגיטליות סינכרוניות משתמשות באות שעון כדי לתזמן פעולות.
Flip-Flop
Flip-Flop הוא רכיב בסיסי שיכול לשמור ביט. באמצעות הרבה רכיבים כאלה אפשר ליצור רגיסטרים ומבני זיכרון.
Register
Register הוא אוסף קטן של ביטים המאוחסן קרוב מאוד ללוגיקה של המעבד.
Memory Hierarchy
| שכבה | מהירות | נפח | רעיון |
|---|---|---|---|
| Registers | גבוהה מאוד | קטן | בתוך CPU |
| Cache | גבוהה | קטן | קרוב ל־CPU |
| RAM | גבוהה יחסית | גדול יותר | זיכרון עבודה |
| SSD | נמוכה יותר | גדול | אחסון קבוע |
7. CPU — המנוע של המחשב
CPU הוא מערכת מורכבת של יחידות לוגיות, רגיסטרים, בקרות וממשקים לזיכרון.
ALU
Arithmetic Logic Unit מבצעת פעולות חשבוניות ולוגיות.
Control Unit
יחידת הבקרה מפענחת פקודות ומפעילה את הנתיבים והיחידות המתאימים.
Registers
אוגרים שומרים ערכים זמניים, כתובות ומידע הדרוש לביצוע פקודות.
Fetch → Decode → Execute
המעבד מביא את הפקודה מזיכרון.
המעבד מפענח מה הפקודה אומרת.
המעבד מבצע את הפעולה.
התוצאה נכתבת ליעד המתאים.
התהליך חוזר שוב ושוב, במהירות עצומה.
8. שפת מכונה ו־Assembly
לכל מעבד יש Instruction Set Architecture — ISA. ה־ISA מגדיר אילו פקודות המעבד מבין.
באופן רעיוני פקודה יכולה להיראות כך:
LOAD R1, 5 LOAD R2, 7 ADD R1, R2 STORE R1, result
ברמת החומרה, הפקודות מיוצגות בסופו של דבר כביטים.
9. קומפיילרים, מפרשים ושפות תכנות
שפת תכנות מאפשרת לבני אדם לתאר אלגוריתמים בצורה מופשטת יותר.
Compiler
קומפיילר מתרגם תוכנית משפה אחת לייצוג אחר, למשל לקוד מכונה או לייצוג ביניים.
Interpreter / Runtime
בחלק מהשפות יש סביבת ריצה שמבצעת או מנהלת את הקוד באופן דינמי יותר. בפועל מערכות מודרניות משלבות לעיתים כמה טכניקות.
10. תכנות
משתנים
name = "Dana" age = 32
תנאים
if age >= 18:
print("adult")
else:
print("minor")
לולאות
for i in range(5):
print(i)
פונקציות
def add(a, b):
return a + b
result = add(5, 7)
print(result)
רשימות
numbers = [10, 20, 30]
for n in numbers:
print(n)
רקורסיה
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
11. אלגוריתמים
אלגוריתם הוא תהליך סופי ומוגדר היטב לפתרון בעיה.
חיפוש לינארי
for item in items:
if item == target:
return True
return False
מורכבות במקרה הגרוע: O(N).
חיפוש בינארי
אם הנתונים ממוינים, אפשר לחלק את מרחב החיפוש בכל שלב.
מורכבות: O(log N).
מיון
אלגוריתמי מיון שונים מבצעים פשרות שונות בין זמן, זיכרון ופשטות.
| סוג | רעיון כללי | מורכבות אופיינית |
|---|---|---|
| Bubble Sort | החלפות חוזרות | O(N²) |
| Merge Sort | חלוקה ומיזוג | O(N log N) |
| Quick Sort | Pivot וחלוקה | ממוצע O(N log N) |
Big O
| Complexity | משמעות |
|---|---|
| O(1) | זמן קבוע |
| O(log N) | גדילה איטית |
| O(N) | מעבר על הקלט |
| O(N log N) | נפוץ במיון יעיל |
| O(N²) | זוגות/השוואות רבות |
12. מבני נתונים
רצף של איברים. גישה לפי אינדקס.
איברים המקושרים זה לזה באמצעות הפניות.
LIFO — האחרון שנכנס יוצא ראשון.
FIFO — הראשון שנכנס יוצא ראשון.
מבנה המאפשר גישה לפי מפתח בעזרת פונקציית Hash.
מבנה היררכי של צמתים.
צמתים וקשרים ביניהם.
למה זה חשוב?
אלגוריתם ומבנה נתונים עובדים יחד. בחירה טובה של מבנה יכולה להפוך פעולה יקרה לפעולה יעילה בהרבה.
13. מערכת הפעלה
מה מערכת ההפעלה עושה?
- מנהלת תהליכים.
- מנהלת זיכרון.
- מנהלת קבצים.
- מנהלת התקני חומרה.
- מספקת מנגנוני הרשאות ואבטחה.
- מספקת ממשקים לתוכניות.
Virtual Memory
מערכת ההפעלה יכולה לספק לכל תהליך מרחב כתובות וירטואלי. היא מנהלת את המיפוי בין כתובות וירטואליות לבין זיכרון פיזי.
14. Processes, Threads ו־Concurrency
Process
תהליך הוא מופע של תוכנית שרץ עם משאבים ומרחב כתובות משלו.
Thread
Thread הוא מסלול ביצוע בתוך תהליך. תהליך יכול להכיל מספר Threads.
Parallelism מול Concurrency
Concurrency עוסקת בניהול מספר משימות במהלך אותו פרק זמן. Parallelism מתייחס לביצוע ממש בו־זמני על יחידות חישוב שונות.
Race Condition
כאשר כמה Threads ניגשים לנתון משותף, סדר הפעולות עלול להשפיע על התוצאה. לכן משתמשים במנגנוני סנכרון כמו Locks.
15. רשתות מחשבים
מחשב בודד הוא רק חלק ממערכת גדולה יותר. רשת מאפשרת למחשבים להעביר מידע זה לזה.
Packet
מידע ברשת מחולק בדרך כלל ליחידות העברה. כל יחידה מכילה נתונים ומידע הנדרש להעברה.
IP
IP מספק מנגנון כתובות וניתוב ברשתות.
TCP
TCP מספק תקשורת אמינה ומסודרת במקרים שבהם נדרש שירות כזה.
UDP
UDP מספק מנגנון פשוט יותר, ללא חלק מהערבויות של TCP.
16. איך האינטרנט עובד
DNS
DNS מאפשר להשתמש בשמות במקום לזכור כתובות מספריות.
HTTP
HTTP מגדיר מבנה של בקשות ותשובות בין לקוח לשרת.
HTTPS
HTTPS הוא HTTP המועבר באמצעות שכבת הצפנה ואימות המבוססת על TLS.
Client / Server
לקוח שולח בקשות ושירותים בצד השרת מעבדים אותן ומחזירים תשובות. בפועל מערכות גדולות יכולות להכיל שכבות ושירותים רבים.
17. אבטחת מידע
אבטחה עוסקת בהגנה על מערכות, נתונים וזהויות מפני שימוש לא מורשה או פגיעה בזמינות ובשלמות המידע.
שמירה על סודיות.
שמירה על שלמות המידע.
שמירה על זמינות.
הצפנה
הצפנה מאפשרת להפוך מידע לייצוג שאינו קריא ללא מפתח מתאים.
Hash
פונקציית Hash ממפה קלט לייצוג באורך מוגדר. שימושים כוללים זיהוי שינויים ואחסון מאפיינים מסוימים של נתונים.
Authentication
תהליך שבאמצעותו מערכת בודקת את זהות המשתמש או השירות.
18. בסיסי נתונים
אפליקציות זקוקות לעיתים לאחסן כמויות גדולות של מידע בצורה מסודרת.
טבלה
| id | name | age |
|---|---|---|
| 1 | Yael | 28 |
| 2 | Dan | 34 |
| 3 | Noa | 41 |
SQL
SELECT name FROM users WHERE age >= 30;
Index
אינדקס מאפשר למערכת למצוא מידע בצורה יעילה יותר מבלי לסרוק בהכרח את כל הרשומות.
Transactions
Transaction היא יחידת עבודה שמערכת בסיס הנתונים יכולה לנהל באופן שמאפשר עקביות בהתאם למאפייני המערכת.
19. CPU מול GPU
CPU
CPU תוכנן לביצוע מגוון רחב של משימות כלליות, עם לוגיקה מורכבת, בקרה, Cache ויכולות branching.
GPU
GPU מתוכנן לבצע כמויות גדולות של חישובים מקביליים, במיוחד כאשר ניתן להפעיל אותה פעולה על הרבה נתונים.
20. Machine Learning
בתכנות מסורתי אנחנו מגדירים את הכללים. ב־Machine Learning אנחנו יכולים לתת נתונים ויעד, ולתת לאלגוריתם להתאים פרמטרים של מודל.
Training
Training הוא תהליך התאמת פרמטרי המודל על בסיס נתוני אימון ומטרה מוגדרת.
Inference
Inference הוא השימוש במודל לאחר האימון כדי להפיק תחזית או פלט.
Overfitting
מודל עלול להתאים יותר מדי לדוגמאות האימון ולהתקשות בהכללה לדוגמאות חדשות.
21. רשתות עצביות
רשת עצבית היא מערכת של שכבות חישוב. כל יחידה מקבלת קלטים, משקללת אותם ומפעילה פונקציה מתאימה.
בצורה מופשטת:
הפרמטרים w ו־b משתנים במהלך האימון.
Deep Learning
כאשר משתמשים ברשתות בעלות שכבות רבות, מקובל לדבר על Deep Learning.
22. Transformers ו־LLM
מודלי שפה גדולים מודרניים מבוססים על ארכיטקטורות מתקדמות, ובפרט משפחת מודלים המבוססת על Transformer.
Tokens
טקסט מחולק ליחידות הנקראות Tokens. כל Token מקבל ייצוג מספרי.
Embeddings
Embedding הוא ייצוג מספרי של יחידה או אובייקט במרחב רב־ממדי.
Attention
מנגנון Attention מאפשר למודל לשקלל מידע ממיקומים שונים בהתאם להקשר.
LLM
מודל שפה גדול לומד קשרים סטטיסטיים מורכבים בין יחידות טקסט ומשתמש בהם כדי לחשב המשכים אפשריים בהתאם לקלט ולהקשר.
23. התמונה הגדולה
עכשיו אפשר לראות את כל מדעי המחשב כמערכת אחת.
דוגמה אחת — "5 + 7"
תרגול מסכם
מה הערך העשרוני של 1101?
פתרון
13.
חשב: 1011 + 0110.
פתרון
10001, כלומר 17.
מה התוצאה של 1 XOR 1?
פתרון
0.
איזה שער מחזיר 1 רק כאשר שני הקלטים הם 1?
פתרון
AND.
מהם שלושת השלבים הבסיסיים במחזור ביצוע פקודה?
פתרון
Fetch → Decode → Execute.
איזה חיפוש מתאים במיוחד לרשימה ממוינת?
פתרון
Binary Search.
מה ההבדל המרכזי בין O(N) לבין O(log N)?
פתרון
ב־O(N) מספר הפעולות גדל בקירוב ביחס ישר לגודל הקלט. ב־O(log N) מספר השלבים גדל לאט בהרבה.
למה תוכניות צריכות מערכת הפעלה?
פתרון
כדי לקבל שירותים מופשטים לניהול CPU, זיכרון, קבצים, התקנים, הרשאות ומשאבים נוספים.
מה תפקידו של DNS?
פתרון
לספק מנגנון המאפשר לפתור שמות מתחם לכתובות רשת.
מה ההבדל הבסיסי בין Training לבין Inference?
פתרון
Training מתאים את פרמטרי המודל. Inference משתמש במודל שכבר קיים כדי להפיק פלט.
מילון מושגים
יחידת מידע בינארית.
8 ביטים.
רכיב מוליך־למחצה הניתן לשליטה.
מעגל המבצע פונקציה לוגית.
יחידה חשבונית ולוגית.
יחידת עיבוד מרכזית.
אחסון קטן ומהיר בתוך המעבד.
זיכרון מהיר הקרוב למעבד.
זיכרון עבודה נדיף.
אחסון קבוע המבוסס על זיכרון Flash.
פקודה שהמעבד יודע לבצע.
ממשק הפקודות של ארכיטקטורת המעבד.
כלי המתרגם תוכנית לייצוג אחר.
שיטה סדורה לפתרון בעיה.
דרך לארגן נתונים.
מופע רץ של תוכנית.
מסלול ביצוע בתוך תהליך.
כללים מוסכמים לתקשורת.
מערכת שמות ברשת.
פרוטוקול בקשות ותשובות ברשת.
מערכת לניהול מידע.
מעבד המותאם במיוחד לחישוב מקבילי.
שיטות להתאמת מודלים מנתונים.
מודל חישובי בעל שכבות ופרמטרים.
ארכיטקטורה מרכזית במודלי AI מודרניים.
מודל שפה גדול.