מפת הקורס
הקורס בנוי מלמטה למעלה. כל שכבה נשענת על השכבה שמתחתיה.
1. מתמטיקה דיסקרטית
מדעי המחשב משתמשים במתמטיקה מסוג שונה מהמתמטיקה הפיזיקלית הקלאסית. הרבה מהעולם הממוחשב הוא בדיד: קבוצות, ביטים, גרפים, לוגיקה ומבנים סופיים.
קבוצות
פונקציות
פונקציה מקבלת קלט ומחזירה פלט.
אינדוקציה
אינדוקציה היא שיטת הוכחה חשובה: מראים שהטענה נכונה עבור מקרה בסיס, ואז שהנכונות במקרה אחד גוררת את הנכונות במקרה הבא.
קומבינטוריקה
שאלות כמו "כמה אפשרויות קיימות?" מופיעות באלגוריתמים, הסתברות, אבטחה ותורת המידע.
גרפים
גרף מורכב מצמתים וקשתות. הוא משמש לייצוג רשתות, מפות, קשרים, תלות בין משימות ועוד.
2. חשמל ופיזיקה
מטען חשמלי.
הפרש פוטנציאלים.
זרימת מטען.
התנגדות לזרם.
חוק אוהם
מערכות דיגיטליות משתמשות באותות חשמליים, אך במקום להתייחס לכל ערך רציף, מגדירים תחומי מתח המייצגים מצבים לוגיים.
3. טרנזיסטורים
טרנזיסטור הוא רכיב מוליך־למחצה שמאפשר שליטה בזרימת זרם. בתכנון דיגיטלי ניתן להשתמש בטרנזיסטורים כדי ליצור מתגים.
טרנזיסטור בודד אינו CPU. אבל מיליארדי טרנזיסטורים המאורגנים במבנים מתאימים יכולים ליצור מערכות חישוב מורכבות מאוד.
4. Boolean Algebra
Boolean Algebra היא המתמטיקה של ערכים לוגיים.
חוקים בסיסיים
חוקי De Morgan
Karnaugh Map
K-Map היא שיטה לפישוט פונקציות בוליאניות. המטרה היא להפחית את מספר השערים והחיבורים הנדרשים.
5. שערים לוגיים
| A | B | AND | OR | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
NOT
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
Universal Gates
NAND ו־NOR נחשבים שערים פונקציונלית שלמים: ניתן לבנות מהם פונקציות לוגיות כלליות.
6. מעגלים דיגיטליים
Multiplexer
MUX בוחר אחד מתוך מספר קלטים.
Decoder
Decoder מקבל קוד ומפעיל אחת מתוך אפשרויות רבות.
Comparator
משווה בין ערכים ומפיק מידע כמו: A גדול מ־B, שווה לו או קטן ממנו.
Finite State Machine
FSM מאפשר לבנות מערכות שמתנהגות אחרת בהתאם למצב שבו הן נמצאות.
7. איך המחשב מבצע חישוב
Half Adder
Full Adder
Full Adder מקבל:
Ripple Carry Adder
ה־Carry מתקדם בין השלבים. כך ניתן לחבר מספרים בינאריים בעלי מספר ביטים רב.
ALU
ALU יכולה לבצע פעולות כמו חיבור, חיסור, AND, OR, XOR והשוואות, בהתאם לארכיטקטורה.
8. זיכרון
Latch / Flip-Flop
רכיבים אלה מאפשרים לשמור מצב לוגי.
Register
Register הוא קבוצה של ביטים הנשמרים יחד.
SRAM
SRAM משתמש בתאים המבוססים על מעגלים לוגיים ושומר מידע כל עוד קיימת אספקת חשמל.
DRAM
DRAM משתמש בתא המבוסס על קבל וטרנזיסטור, ודורש רענון מחזורי.
Hierarchy
9. ארכיטקטורת מחשבים
Program Counter
PC מצביע על הכתובת של הפקודה הבאה.
Instruction Register
IR מחזיק את הפקודה הנוכחית שנמצאת בתהליך ביצוע.
Stack Pointer
SP מצביע על מיקום המחסנית.
Bus
מעביר כתובות.
מעביר נתונים.
מעביר אותות בקרה.
10. Pipeline
במקום לבצע כל פקודה מתחילתה ועד סופה לפני התחלת הפקודה הבאה, ניתן לחלק את העבודה לשלבים ולעבד כמה פקודות במקביל בשלבים שונים.
Hazards
- Data Hazard
- Control Hazard
- Structural Hazard
Branch Prediction
במעבד מודרני, branch יכול לשנות את זרימת הפקודות. המעבד עשוי לנסות לחזות מראש מה יהיה הנתיב.
SIMD
Single Instruction, Multiple Data: אותה פעולה על מספר פריטי מידע במקביל.
11. Machine Code ו־Assembly
LOAD R1, 5 LOAD R2, 7 ADD R1, R2 STORE R1, result
Assembly היא ייצוג קריא יותר של פקודות מכונה.
בסופו של דבר המעבד מבצע הוראות בהתאם ל־ISA שלו.
12. Compiler
AST
Abstract Syntax Tree הוא ייצוג מבני של תוכנית.
Optimization
קומפיילר יכול לבצע אופטימיזציות שמקטינות עבודה מיותרת או משפרות שימוש במשאבים, בהתאם לשפה ולמערכת.
13. תכנות
Variables
x = 10 name = "Dana"
Conditions
if x > 5:
print("large")
else:
print("small")
Functions
def add(a, b):
return a + b
Objects
class User:
def __init__(self, name):
self.name = name
def hello(self):
return "Hello " + self.name
Abstraction
המטרה היא להסתיר פרטים שאינם נחוצים למשתמש של רכיב מסוים.
sort(),
אנחנו לא חייבים לדעת איזה אלגוריתם מיון פועל מתחתיה.
14. זיכרון בתכנות
Stack
משמש בדרך כלל למידע הקשור לקריאות פונקציה ולמצב ביצוע.
Heap
אזור שבו ניתן להקצות אובייקטים ונתונים בעלי אורך חיים דינמי.
Pointer
מצביע הוא ערך שמייצג כתובת או הפניה למיקום בזיכרון, בהתאם לשפה ולמודל הזיכרון.
Garbage Collection
בשפות מסוימות סביבת הריצה מנהלת אוטומטית חלק מתהליך שחרור הזיכרון של אובייקטים שאינם נגישים עוד.
15. אלגוריתמים
Divide & Conquer
Merge Sort הוא דוגמה קלאסית.
Greedy
בכל שלב בוחרים בחירה מקומית לפי כלל מסוים, בתקווה ובמקרים מסוימים עם הוכחה שהיא מובילה לפתרון מתאים.
Dynamic Programming
מפרקים בעיה לתת־בעיות וחוסכים תוצאות שכבר חושבו.
Backtracking
מנסים אפשרות, ואם היא מובילה למבוי סתום חוזרים לאחור.
גרפים
חיפוש לרוחב.
חיפוש לעומק.
מסלולים קצרים תחת תנאים מתאימים.
סידור של גרף מכוון חסר מעגלים.
16. מבני נתונים
| מבנה | שימוש |
|---|---|
| Array | גישה לפי אינדקס |
| Linked List | קשרים בין איברים |
| Stack | LIFO |
| Queue | FIFO |
| Hash Table | גישה לפי מפתח |
| Heap | Priority Queue |
| Tree | מבנה היררכי |
| Graph | קשרים כלליים |
| Trie | חיפוש לפי רצפי תווים |
| Union-Find | רכיבים וקבוצות |
Balanced Trees
עצים כמו AVL ו־Red-Black Tree שומרים על איזון מסוים כדי למנוע מצב שבו העץ הופך למעשה לרשימה ארוכה.
17. Complexity
| Complexity | דוגמה אינטואיטיבית |
|---|---|
| O(1) | גישה ישירה |
| O(log N) | Binary Search |
| O(N) | סריקה |
| O(N log N) | מיון יעיל |
| O(N²) | השוואת זוגות |
| O(2ᴺ) | חלק מהחיפושים האקספוננציאליים |
P ו־NP
תורת הסיבוכיות חוקרת את המשאבים הדרושים לפתרון ואימות בעיות. P ו־NP הן מחלקות מרכזיות בתיאוריה.
השאלה האם P=NP היא אחת השאלות המרכזיות במדעי המחשב התאורטיים.
18. מערכות הפעלה
System Calls
ממשק שמאפשר לתוכנית לבקש מהמערכת שירותים שהקרנל מספק.
Scheduling
מערכת ההפעלה מחליטה אילו תהליכים או Threads יקבלו זמן CPU.
Interrupt
אירוע שמאפשר למערכת להגיב לאירועים של חומרה או תוכנה.
Virtual Memory
File System
מערכת הקבצים מארגנת נתונים על התקן אחסון ומספקת פעולות כמו יצירה, קריאה, כתיבה ומחיקה.
19. Concurrency
Process
מופע רץ של תוכנית.
Thread
מסלול ביצוע בתוך תהליך.
Race Condition
כאשר תוצאת התוכנית תלויה בסדר שבו Threads מבצעים פעולות על מידע משותף.
Lock
מנגנון שמאפשר להגביל גישה מקבילית למשאב משותף.
Deadlock
IPC
Inter-Process Communication כולל מנגנונים לתקשורת בין תהליכים, כגון Pipes, Queues ו־Shared Memory.
20. רשתות מחשבים
MAC
כתובת ברמת קישור הנתונים של ממשק רשת.
ARP
מנגנון המשמש בסביבות רשת מסוימות למיפוי בין כתובות IP לכתובות שכבת הקישור.
Subnetting
חלוקת מרחב כתובות IP לרשתות קטנות יותר.
Routing
בחירת נתיב להעברת מנות בין רשתות.
NAT
מנגנון נפוץ שמאפשר תרגום בין מרחבי כתובות, למשל בין כתובות פרטיות לציבוריות.
21. האינטרנט
DNS
HTTP
GET /index.html HTTP/1.1 Host: example.com
HTTPS
HTTPS משלב HTTP עם TLS כדי לספק הצפנה, אימות שרת והגנה על שלמות התקשורת בהתאם למאפייני הפרוטוקול.
HTTP/2 ו־HTTP/3
גרסאות חדשות יותר משפרות היבטים של יעילות התעבורה. HTTP/3 משתמש ב־QUIC מעל UDP.
CDN
רשת שרתים מבוזרת שמאפשרת להגיש תוכן ממיקום קרוב יותר למשתמשים.
Load Balancer
רכיב שמחלק בקשות בין מספר שרתים.
22. אבטחת מידע
סודיות
שלמות
זמינות
Symmetric Encryption
אותו סוד משמש להצפנה ולפענוח.
Asymmetric Encryption
שימוש בזוג מפתחות — ציבורי ופרטי — במערכות הצפנה וחתימה בהתאם לאלגוריתם.
Hash
פונקציה שממפה קלט לייצוג בגודל קבוע.
Digital Signature
מנגנון המאפשר לקשר הודעה לזהות בעלת מפתח מתאים ולבדוק שלמות ואותנטיות בהתאם למערכת.
PKI
תשתית מפתחות ציבוריים כוללת תעודות, רשויות אישור ומנגנונים לניהול אמון.
Authentication vs Authorization
OWASP
עולם פיתוח האפליקציות כולל קטגוריות סיכון כמו Injection, בעיות הרשאה, ניהול זהויות לקוי ועוד.
23. בסיסי נתונים
Relational Model
| id | name | age |
|---|---|---|
| 1 | Dan | 32 |
| 2 | Noa | 28 |
SQL
SELECT name FROM users WHERE age >= 30;
JOIN
SELECT users.name, orders.id FROM users JOIN orders ON users.id = orders.user_id;
Normalization
עקרונות שמטרתם לצמצם כפילות ולשמור על מבנה עקבי של מידע.
Transactions
ACID
הכול או כלום.
שמירה על כללי העקביות.
בידוד בין פעולות מקבילות.
שמירת תוצאה לאחר Commit.
Indexes
אינדקסים מאפשרים חיפוש יעיל יותר במקרים מתאימים, אך דורשים מקום ועלות תחזוקה.
24. מערכות מבוזרות
מערכת מבוזרת מורכבת ממספר מחשבים או שירותים שעובדים יחד כדי לספק שירות.
Replication
שמירת עותקים של מידע במספר מקומות.
Sharding
חלוקת הנתונים בין מספר שרתים.
Fault Tolerance
תכנון מערכת כך שכשל ברכיב אחד לא בהכרח ישבית את השירות כולו.
Queues
מערכות תורים מאפשרות להעביר עבודה בין רכיבים באופן אסינכרוני.
CAP
תורת CAP עוסקת בפשרות אפשריות במערכות מבוזרות במצבים של partition.
Consensus
אלגוריתמים של הסכמה מבוזרת מנסים לאפשר לקבוצת צמתים להגיע להחלטה משותפת בתנאים מוגדרים.
25. GPU
חישובי מטריצות ווקטורים מתאימים במיוחד לעבודה מקבילית, ולכן GPUs הפכו לרכיב מרכזי באימון מודלים גדולים.
26. Machine Learning
Linear Regression
Logistic Regression
מודל הסתברותי המשמש בין היתר לסיווג בינארי.
Decision Tree
Train / Validation / Test
מחלקים נתונים למטרות שונות כדי להעריך למידה והכללה.
Overfitting
מודל עשוי ללמוד פרטים ספציפיים מדי לנתוני האימון ולבצע פחות טוב על מידע חדש.
27. Neural Networks
Neuron
Activation
פונקציות כמו ReLU מאפשרות לרשת לייצג קשרים לא־לינאריים.
Gradient Descent
Backpropagation
Backpropagation מחשב כיצד שגיאת הפלט קשורה לפרמטרים דרך שכבות הרשת, כדי לאפשר עדכון שלהם.
Regularization
שיטות שמטרתן לעודד מודל שלא להתאים יתר על המידה לנתוני האימון.
28. Transformers
Transformer הוא ארכיטקטורה המבוססת במידה רבה על מנגנון Attention ומאפשרת עיבוד יעיל של קשרים בין חלקים שונים של רצף.
Self-Attention
Multi-Head Attention
מספר מנגנוני Attention יכולים ללמוד דפוסים שונים של קשרים במקביל בתוך אותה שכבה.
Feed Forward
לאחר Attention, כל ייצוג עובר דרך רשת Feed Forward.
Residual Connections
חיבורים שיוצרים מסלול ישיר יותר להעברת מידע וגרדיאנטים בין שכבות.
Layer Normalization
נורמליזציה של הייצוגים כחלק ממבנה הרשת.
29. איך LLM עובד
Tokenization
המודל אינו מקבל טקסט ישירות. הטקסט מחולק ליחידות Token שממופות למספרים.
Embeddings
לכל Token מוקצה וקטור מספרי במרחב רב־ממדי.
Logits
בסיום החישוב מתקבלים ציונים עבור האפשרויות הבאות.
Softmax
Softmax ממיר ציונים להתפלגות הסתברותית.
Next Token Prediction
המודל בוחר או דוגם Token בהתאם למנגנון הבחירה שהמערכת משתמשת בו, מוסיף אותו להקשר וממשיך את החישוב.
30. הנדסת תוכנה
Version Control
מערכות כמו Git מאפשרות לעקוב אחר שינויים בקוד, ליצור branches ולשתף פעולה.
Testing
בדיקה של רכיב קטן.
בדיקת שילוב בין רכיבים.
בדיקת תרחיש שלם.
CI/CD
תהליכים אוטומטיים לבנייה, בדיקה והפצה של תוכנה.
Software Architecture
מערכות גדולות דורשות חלוקה ברורה של אחריות בין רכיבים, ממשקים, ניהול תלויות וטיפול בכשלים.
31. פרויקטים לאורך הקורס
Logic Simulator
בניית שערים ושילובם במעגלים.
Binary Calculator
מחשבון בינארי עם Carry.
Tiny CPU
מעבד פשוט עם ISA בסיסי.
Interpreter
שפה קטנה עם Parser ו־Runtime.
Graph Explorer
BFS, DFS ומסלולים.
HTTP Server
שרת HTTP מינימלי.
Mini Database
טבלאות, אינדקס וחיפוש.
Neural Network
רשת עצבית קטנה מאפס.
32. פרויקט גמר — מחשב קטן מאפס
הפרויקט המסכם מחבר את כל הקורס.
AND / OR / NOT / XOR.
Half Adder / Full Adder / ALU.
Registers / RAM / Program Counter.
Fetch / Decode / Execute.
הגדרת פקודות מכונה.
כתיבת תוכנית עבור המעבד.
תרגום שפה פשוטה ל־ISA.
ניהול זיכרון, קבצים ותהליכים.
חיבור המחשב למערכת חיצונית.
הוספת מודל חישובי מעל כל שכבות המערכת.
מילון מושגים
ערך בינארי יחיד.
8 ביטים.
רכיב מוליך־למחצה.
שער לוגי.
יחידה אריתמטית ולוגית.
מעבד.
אחסון קטן ומהיר במעבד.
זיכרון מהיר קרוב למעבד.
זיכרון עבודה.
ממשק פקודות של מעבד.
מתרגם תוכנית.
שיטת פתרון בעיה.
מבנה לארגון נתונים.
תהליך רץ.
מסלול ביצוע.
כללי תקשורת.
מערכת שמות מתחם.
פרוטוקול Web.
מערכת ניהול נתונים.
שכפול מידע.
חלוקת מידע.
מעבד לחישוב מקבילי.
למידת מכונה.
רשת עצבית.
מנגנון לשקלול קשרים בין ייצוגים.
ארכיטקטורת רשת עצבית.
מודל שפה גדול.
תרגול מסכם
פשט:
A AND 1
פתרון
A
מה הערך העשרוני של 101101?
פתרון
45.
מה קורה כאשר Half Adder מקבל 1 ו־1?
פתרון
SUM=0, CARRY=1.
מה תפקיד ה־Program Counter?
פתרון
לשמור את הכתובת של הפקודה הבאה בהתאם למנגנון הביצוע של המעבד.
איזה אלגוריתם מתאים במיוחד לחיפוש ברשימה ממוינת?
פתרון
Binary Search.
מה ההבדל בין Process לבין Thread?
פתרון
Process הוא סביבת ביצוע עם משאבים ומרחב כתובות משלו; Threads הם מסלולי ביצוע בתוך תהליך.
מה תפקידו של DNS?
פתרון
לפתור שמות מתחם למידע כתובות מתאים.
מה משמעות ACID?
פתרון
Atomicity, Consistency, Isolation, Durability.
מה ההבדל בין Training לבין Inference?
פתרון
Training מתאים את פרמטרי המודל; Inference משתמש במודל כדי להפיק תוצאה.
מהו הרעיון הבסיסי של Next Token Prediction?
פתרון
בהינתן ההקשר הקיים, המודל מחשב התפלגות על Token אפשרי הבא, בוחר או דוגם אחד, מוסיף אותו להקשר וממשיך.