קורס עצמאי • יסודות → חומרה → תוכנה → AI

מדעי המחשב

מסע מלא מהפיזיקה של החשמל והטרנזיסטור, דרך לוגיקה, בינארי, מעבדים, זיכרון, תכנות ואלגוריתמים, ועד מערכות הפעלה, אינטרנט, Machine Learning ו־AI.

מפת הקורס

המטרה אינה רק ללמוד לתכנת. המטרה היא להבין כיצד מחשב עובד בכל הרמות — מהפיזיקה ועד התוכנה.

PHYSICS ↓ ELECTRICITY ↓ TRANSISTORS ↓ LOGIC GATES ↓ BITS ↓ DIGITAL CIRCUITS ↓ ALU + REGISTERS + CONTROL ↓ CPU + MEMORY ↓ MACHINE CODE ↓ ASSEMBLY ↓ COMPILER / RUNTIME ↓ PROGRAMMING ↓ ALGORITHMS + DATA STRUCTURES ↓ OPERATING SYSTEM ↓ NETWORKS + INTERNET ↓ DATABASES ↓ MACHINE LEARNING ↓ NEURAL NETWORKS ↓ TRANSFORMERS ↓ AI
עיקרון יסוד: כל שכבה מסתירה מורכבות מהשכבה שמעליה. המתכנת לא צריך לחשוב על טרנזיסטורים, אבל הקוד שלו עדיין מסתיים בפעולות שהחומרה מבצעת.

0. מתמטיקה בסיסית למדעי המחשב

לא צריך להיות מתמטיקאי כדי להתחיל מדעי המחשב. אבל כמה רעיונות מתמטיים חוזרים שוב ושוב.

חזקות

בינארי מבוסס על חזקות של 2:

2⁰ = 1 2¹ = 2 2² = 4 2³ = 8 2⁴ = 16 2⁵ = 32

אלגברה

משתנים, משוואות ופונקציות הם בסיס להבנת אלגוריתמים, מודלים וניתוח נתונים.

לוגריתמים

לוגריתם עונה על השאלה: "כמה פעמים צריך להכפיל בסיס מסוים כדי להגיע לערך?"

למשל: log₂(8) = 3 כי 2³ = 8.

הסתברות

הסתברות חשובה במיוחד ב־Machine Learning וב־AI, שם מודלים לעיתים מייצגים אי־ודאות באמצעות התפלגויות הסתברות.

1. חשמל ואלקטרוניקה

לפני מחשבים צריך להבין מהו החומר שממנו הם בנויים.

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

חוק אוהם

V = I × R V = מתח I = זרם R = התנגדות

אלקטרוניקה משתמשת בתכונות האלה כדי ליצור אותות מבוקרים. במערכת דיגיטלית לא חייבים להשתמש בכל ערך אפשרי. אפשר להגדיר תחום שמייצג LOW ותחום שמייצג HIGH.

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

2. טרנזיסטורים

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

CONTROL │ ▼ ┌─────────────┐ │ TRANSISTOR │ └──────┬──────┘ │ ▼ OUTPUT control → משנה את היכולת של הזרם לעבור

למה הוא כל כך חשוב?

כי אפשר ליצור ממנו רכיב שמבחין בין מצבים. ואם מחברים טרנזיסטורים, אפשר ליצור שערים לוגיים. אם מחברים שערים, אפשר ליצור חישובים.

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

3. לוגיקה ושערים

כעת אנחנו עוברים מהפיזיקה למתמטיקה לוגית.

NOT

InputOutput
01
10

AND

ABOutput
000
010
100
111

OR

ABOutput
000
011
101
111

XOR

XOR מחזיר 1 כאשר הקלטים שונים.

ABXOR
000
011
101
110

NAND ו־NOR

NAND הוא NOT של AND. NOR הוא NOT של OR. הם מעניינים במיוחד משום שניתן לבנות מהם פונקציות לוגיות רבות.

רעיון מרכזי: המעבר מטרנזיסטורים לשערים הוא המעבר מפיזיקה ללוגיקה פורמלית.

4. בינארי — השפה של המחשב

ביט הוא יחידת מידע שיכולה לקבל שני מצבים.

0 = מצב אחד 1 = מצב שני

המרה בינארי → עשרוני

101101 = 1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1 = 45

Byte

8 ביטים = Byte אחד. לכן Byte יכול לייצג 256 ערכים שונים:

2⁸ = 256 0 ... 255

מספרים שליליים

מחשבים משתמשים בשיטות כמו Two's Complement כדי לייצג מספרים שליליים בצורה שמתאימה למעגלי חיבור בינאריים.

ייצוג טקסט

תו אינו "אות" מבחינת המחשב. הוא מיוצג באמצעות מספר. Unicode מאפשר לייצג מגוון עצום של מערכות כתב וסמלים.

תמונה

תמונה היא מידע מספרי על פיקסלים. לכל פיקסל ניתן להקצות ערכי צבע.

וידאו

וידאו הוא רצף של תמונות בתוספת מידע נוסף, למשל שמע.

5. איך מחשב באמת מחבר מספרים

זה החלק שמחבר בין "0 ו־1" לבין חישוב אמיתי.

Half Adder

Half Adder מקבל שני ביטים.

A ─────┬──── XOR ───→ SUM │ B ─────┘ A ─────┬──── AND ───→ CARRY │ B ─────┘

אם:

A = 1 B = 1 SUM = 0 CARRY = 1 ולכן: 1 + 1 = 10

Full Adder

כאשר מחברים מספרים גדולים, צריך לטפל גם ב־Carry שמגיע מהביט הקודם. לכן משתמשים ב־Full Adder.

A B Carry In │ ▼ ┌─────────────┐ │ FULL ADDER │ └──────┬──────┘ │ ┌───┴───┐ SUM Carry Out

חיבור מספרים

1011 + 0110 ------ 10001 1011 = 11 0110 = 6 11 + 6 = 17
מכאן מגיע החישוב: לא קיימת "פקודת חיבור קסומה". יש מעגלים לוגיים שמבצעים את החיבור ביט־אחר־ביט.

6. זיכרון ומעגלים דיגיטליים

Combinational Logic

במעגל קומבינטורי, הפלט נקבע לפי הקלט הנוכחי.

Sequential Logic

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

Clock

מערכות דיגיטליות סינכרוניות משתמשות באות שעון כדי לתזמן פעולות.

CLOCK: _‾_‾_‾_‾_‾_‾_‾_‾_‾_ כל חזית יכולה לשמש כאירוע תזמון

Flip-Flop

Flip-Flop הוא רכיב בסיסי שיכול לשמור ביט. באמצעות הרבה רכיבים כאלה אפשר ליצור רגיסטרים ומבני זיכרון.

Register

Register הוא אוסף קטן של ביטים המאוחסן קרוב מאוד ללוגיקה של המעבד.

Memory Hierarchy

שכבהמהירותנפחרעיון
Registersגבוהה מאודקטןבתוך CPU
Cacheגבוההקטןקרוב ל־CPU
RAMגבוהה יחסיתגדול יותרזיכרון עבודה
SSDנמוכה יותרגדולאחסון קבוע

7. CPU — המנוע של המחשב

CPU הוא מערכת מורכבת של יחידות לוגיות, רגיסטרים, בקרות וממשקים לזיכרון.

┌────────────────────┐ │ CPU │ │ │ │ ┌──────┐ ┌──────┐ │ │ │ ALU │ │CTRL │ │ │ └──────┘ └──────┘ │ │ │ │ ┌───────────────┐ │ │ │ REGISTERS │ │ │ └───────────────┘ │ └─────────┬──────────┘ │ ▼ RAM

ALU

Arithmetic Logic Unit מבצעת פעולות חשבוניות ולוגיות.

Control Unit

יחידת הבקרה מפענחת פקודות ומפעילה את הנתיבים והיחידות המתאימים.

Registers

אוגרים שומרים ערכים זמניים, כתובות ומידע הדרוש לביצוע פקודות.

Fetch → Decode → Execute

Fetch
המעבד מביא את הפקודה מזיכרון.
Decode
המעבד מפענח מה הפקודה אומרת.
Execute
המעבד מבצע את הפעולה.
Write Back
התוצאה נכתבת ליעד המתאים.

התהליך חוזר שוב ושוב, במהירות עצומה.

8. שפת מכונה ו־Assembly

לכל מעבד יש Instruction Set Architecture — ISA. ה־ISA מגדיר אילו פקודות המעבד מבין.

באופן רעיוני פקודה יכולה להיראות כך:

LOAD R1, 5
LOAD R2, 7
ADD  R1, R2
STORE R1, result

ברמת החומרה, הפקודות מיוצגות בסופו של דבר כביטים.

ASSEMBLY ↓ MACHINE INSTRUCTION ↓ CONTROL SIGNALS ↓ DIGITAL CIRCUITS ↓ TRANSISTORS
זהו אחד החיבורים החשובים ביותר בקורס: פקודת תוכנה → פעולה במעבד → אותות חשמליים.

9. קומפיילרים, מפרשים ושפות תכנות

שפת תכנות מאפשרת לבני אדם לתאר אלגוריתמים בצורה מופשטת יותר.

Compiler

קומפיילר מתרגם תוכנית משפה אחת לייצוג אחר, למשל לקוד מכונה או לייצוג ביניים.

SOURCE CODE ↓ LEXING ↓ PARSING ↓ SEMANTIC ANALYSIS ↓ OPTIMIZATION ↓ CODE GENERATION ↓ MACHINE CODE

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).

חיפוש בינארי

אם הנתונים ממוינים, אפשר לחלק את מרחב החיפוש בכל שלב.

1000 elements ↓ 500 ↓ 250 ↓ 125 ↓ ...

מורכבות: O(log N).

מיון

אלגוריתמי מיון שונים מבצעים פשרות שונות בין זמן, זיכרון ופשטות.

סוגרעיון כללימורכבות אופיינית
Bubble Sortהחלפות חוזרותO(N²)
Merge Sortחלוקה ומיזוגO(N log N)
Quick SortPivot וחלוקהממוצע O(N log N)

Big O

Complexityמשמעות
O(1)זמן קבוע
O(log N)גדילה איטית
O(N)מעבר על הקלט
O(N log N)נפוץ במיון יעיל
O(N²)זוגות/השוואות רבות

12. מבני נתונים

Array

רצף של איברים. גישה לפי אינדקס.

Linked List

איברים המקושרים זה לזה באמצעות הפניות.

Stack

LIFO — האחרון שנכנס יוצא ראשון.

Queue

FIFO — הראשון שנכנס יוצא ראשון.

Hash Table

מבנה המאפשר גישה לפי מפתח בעזרת פונקציית Hash.

Tree

מבנה היררכי של צמתים.

Graph

צמתים וקשרים ביניהם.

למה זה חשוב?

אלגוריתם ומבנה נתונים עובדים יחד. בחירה טובה של מבנה יכולה להפוך פעולה יקרה לפעולה יעילה בהרבה.

13. מערכת הפעלה

APPLICATION ↓ SYSTEM CALL ↓ OPERATING SYSTEM ↓ KERNEL ↓ DRIVERS ↓ HARDWARE

מה מערכת ההפעלה עושה?

  • מנהלת תהליכים.
  • מנהלת זיכרון.
  • מנהלת קבצים.
  • מנהלת התקני חומרה.
  • מספקת מנגנוני הרשאות ואבטחה.
  • מספקת ממשקים לתוכניות.

Virtual Memory

מערכת ההפעלה יכולה לספק לכל תהליך מרחב כתובות וירטואלי. היא מנהלת את המיפוי בין כתובות וירטואליות לבין זיכרון פיזי.

המשמעות היא שתוכנית אינה חייבת לדעת היכן פיזית נמצא כל Byte בזיכרון.

14. Processes, Threads ו־Concurrency

Process

תהליך הוא מופע של תוכנית שרץ עם משאבים ומרחב כתובות משלו.

Thread

Thread הוא מסלול ביצוע בתוך תהליך. תהליך יכול להכיל מספר Threads.

PROCESS │ ├── THREAD 1 ├── THREAD 2 └── THREAD 3

Parallelism מול Concurrency

Concurrency עוסקת בניהול מספר משימות במהלך אותו פרק זמן. Parallelism מתייחס לביצוע ממש בו־זמני על יחידות חישוב שונות.

Race Condition

כאשר כמה Threads ניגשים לנתון משותף, סדר הפעולות עלול להשפיע על התוצאה. לכן משתמשים במנגנוני סנכרון כמו Locks.

15. רשתות מחשבים

מחשב בודד הוא רק חלק ממערכת גדולה יותר. רשת מאפשרת למחשבים להעביר מידע זה לזה.

Packet

מידע ברשת מחולק בדרך כלל ליחידות העברה. כל יחידה מכילה נתונים ומידע הנדרש להעברה.

IP

IP מספק מנגנון כתובות וניתוב ברשתות.

TCP

TCP מספק תקשורת אמינה ומסודרת במקרים שבהם נדרש שירות כזה.

UDP

UDP מספק מנגנון פשוט יותר, ללא חלק מהערבויות של TCP.

APPLICATION ↓ TRANSPORT TCP / UDP ↓ INTERNET IP ↓ LINK ↓ PHYSICAL

16. איך האינטרנט עובד

DNS

DNS מאפשר להשתמש בשמות במקום לזכור כתובות מספריות.

HTTP

HTTP מגדיר מבנה של בקשות ותשובות בין לקוח לשרת.

Browser │ │ DNS ▼ Domain → IP │ │ HTTPS ▼ Server │ ├── Application ├── Database └── Files │ ▼ Response │ ▼ Browser

HTTPS

HTTPS הוא HTTP המועבר באמצעות שכבת הצפנה ואימות המבוססת על TLS.

Client / Server

לקוח שולח בקשות ושירותים בצד השרת מעבדים אותן ומחזירים תשובות. בפועל מערכות גדולות יכולות להכיל שכבות ושירותים רבים.

17. אבטחת מידע

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

Confidentiality
שמירה על סודיות.
Integrity
שמירה על שלמות המידע.
Availability
שמירה על זמינות.

הצפנה

הצפנה מאפשרת להפוך מידע לייצוג שאינו קריא ללא מפתח מתאים.

Hash

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

Authentication

תהליך שבאמצעותו מערכת בודקת את זהות המשתמש או השירות.

18. בסיסי נתונים

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

טבלה

idnameage
1Yael28
2Dan34
3Noa41

SQL

SELECT name
FROM users
WHERE age >= 30;

Index

אינדקס מאפשר למערכת למצוא מידע בצורה יעילה יותר מבלי לסרוק בהכרח את כל הרשומות.

Transactions

Transaction היא יחידת עבודה שמערכת בסיס הנתונים יכולה לנהל באופן שמאפשר עקביות בהתאם למאפייני המערכת.

19. CPU מול GPU

CPU

CPU תוכנן לביצוע מגוון רחב של משימות כלליות, עם לוגיקה מורכבת, בקרה, Cache ויכולות branching.

GPU

GPU מתוכנן לבצע כמויות גדולות של חישובים מקביליים, במיוחד כאשר ניתן להפעיל אותה פעולה על הרבה נתונים.

CPU → מעט יחסית יחידות חזקות וגמישות GPU → הרבה יחידות חישוב שמתאימות לעבודה מקבילית
ההבדל אינו "CPU חכם ו־GPU טיפש". אלה ארכיטקטורות שנבנו עם דגשים שונים.

20. Machine Learning

בתכנות מסורתי אנחנו מגדירים את הכללים. ב־Machine Learning אנחנו יכולים לתת נתונים ויעד, ולתת לאלגוריתם להתאים פרמטרים של מודל.

DATA ↓ MODEL ↓ PREDICTION ↓ LOSS ↓ OPTIMIZATION ↓ UPDATED PARAMETERS ↓ REPEAT

Training

Training הוא תהליך התאמת פרמטרי המודל על בסיס נתוני אימון ומטרה מוגדרת.

Inference

Inference הוא השימוש במודל לאחר האימון כדי להפיק תחזית או פלט.

Overfitting

מודל עלול להתאים יותר מדי לדוגמאות האימון ולהתקשות בהכללה לדוגמאות חדשות.

21. רשתות עצביות

רשת עצבית היא מערכת של שכבות חישוב. כל יחידה מקבלת קלטים, משקללת אותם ומפעילה פונקציה מתאימה.

x₁ ──┐ x₂ ──┼──→ [ Neuron ] ──→ y x₃ ──┘

בצורה מופשטת:

z = w₁x₁ + w₂x₂ + ... + b y = activation(z)

הפרמטרים w ו־b משתנים במהלך האימון.

Deep Learning

כאשר משתמשים ברשתות בעלות שכבות רבות, מקובל לדבר על Deep Learning.

22. Transformers ו־LLM

מודלי שפה גדולים מודרניים מבוססים על ארכיטקטורות מתקדמות, ובפרט משפחת מודלים המבוססת על Transformer.

Tokens

טקסט מחולק ליחידות הנקראות Tokens. כל Token מקבל ייצוג מספרי.

"שלום, איך אתה?" ↓ [token] [token] [token] ... ↓ numeric representation ↓ neural network

Embeddings

Embedding הוא ייצוג מספרי של יחידה או אובייקט במרחב רב־ממדי.

Attention

מנגנון Attention מאפשר למודל לשקלל מידע ממיקומים שונים בהתאם להקשר.

Token A ─┐ Token B ─┼──→ ATTENTION ──→ contextual representation Token C ─┘

LLM

מודל שפה גדול לומד קשרים סטטיסטיים מורכבים בין יחידות טקסט ומשתמש בהם כדי לחשב המשכים אפשריים בהתאם לקלט ולהקשר.

גם מערכת AI מתקדמת עדיין יושבת על אותה תשתית: חומרה → זיכרון → חישובים → תוכנה → אלגוריתמים → מודל.

23. התמונה הגדולה

עכשיו אפשר לראות את כל מדעי המחשב כמערכת אחת.

┌─────────────────────────────────────────┐ │ APPLICATION / AI │ ├─────────────────────────────────────────┤ │ Algorithms + Data Structures │ ├─────────────────────────────────────────┤ │ Programming Languages │ ├─────────────────────────────────────────┤ │ Runtime / Compiler / Libraries │ ├─────────────────────────────────────────┤ │ Operating System │ ├─────────────────────────────────────────┤ │ Machine Instructions │ ├─────────────────────────────────────────┤ │ CPU + Memory + GPU │ ├─────────────────────────────────────────┤ │ Digital Logic + Circuits │ ├─────────────────────────────────────────┤ │ Transistors │ ├─────────────────────────────────────────┤ │ Electricity + Semiconductor │ ├─────────────────────────────────────────┤ │ PHYSICS │ └─────────────────────────────────────────┘

דוגמה אחת — "5 + 7"

Python: 5 + 7 ↓ Language / Runtime ↓ Machine Instructions ↓ CPU ↓ Registers ↓ ALU ↓ Binary 0101 + 0111 ↓ Logic Gates ↓ Transistors ↓ Electrical states ↓ 12
זו למעשה כל שרשרת מדעי המחשב במשפט אחד: אנחנו משתמשים בפיזיקה כדי לבנות רכיבים, ברכיבים כדי לבנות לוגיקה, בלוגיקה כדי לבנות מחשבים, ובמחשבים כדי לבצע תוכנה שמאפשרת לנו לבנות שכבות מופשטות יותר.

תרגול מסכם

1. בינארי

מה הערך העשרוני של 1101?

פתרון

13.

2. חיבור בינארי

חשב: 1011 + 0110.

פתרון

10001, כלומר 17.

3. XOR

מה התוצאה של 1 XOR 1?

פתרון

0.

4. לוגיקה

איזה שער מחזיר 1 רק כאשר שני הקלטים הם 1?

פתרון

AND.

5. CPU

מהם שלושת השלבים הבסיסיים במחזור ביצוע פקודה?

פתרון

Fetch → Decode → Execute.

6. אלגוריתמים

איזה חיפוש מתאים במיוחד לרשימה ממוינת?

פתרון

Binary Search.

7. Big O

מה ההבדל המרכזי בין O(N) לבין O(log N)?

פתרון

ב־O(N) מספר הפעולות גדל בקירוב ביחס ישר לגודל הקלט. ב־O(log N) מספר השלבים גדל לאט בהרבה.

8. מערכת הפעלה

למה תוכניות צריכות מערכת הפעלה?

פתרון

כדי לקבל שירותים מופשטים לניהול CPU, זיכרון, קבצים, התקנים, הרשאות ומשאבים נוספים.

9. רשת

מה תפקידו של DNS?

פתרון

לספק מנגנון המאפשר לפתור שמות מתחם לכתובות רשת.

10. AI

מה ההבדל הבסיסי בין Training לבין Inference?

פתרון

Training מתאים את פרמטרי המודל. Inference משתמש במודל שכבר קיים כדי להפיק פלט.

מילון מושגים

Bit
יחידת מידע בינארית.
Byte
8 ביטים.
Transistor
רכיב מוליך־למחצה הניתן לשליטה.
Logic Gate
מעגל המבצע פונקציה לוגית.
ALU
יחידה חשבונית ולוגית.
CPU
יחידת עיבוד מרכזית.
Register
אחסון קטן ומהיר בתוך המעבד.
Cache
זיכרון מהיר הקרוב למעבד.
RAM
זיכרון עבודה נדיף.
SSD
אחסון קבוע המבוסס על זיכרון Flash.
Instruction
פקודה שהמעבד יודע לבצע.
ISA
ממשק הפקודות של ארכיטקטורת המעבד.
Compiler
כלי המתרגם תוכנית לייצוג אחר.
Algorithm
שיטה סדורה לפתרון בעיה.
Data Structure
דרך לארגן נתונים.
Process
מופע רץ של תוכנית.
Thread
מסלול ביצוע בתוך תהליך.
Protocol
כללים מוסכמים לתקשורת.
DNS
מערכת שמות ברשת.
HTTP
פרוטוקול בקשות ותשובות ברשת.
Database
מערכת לניהול מידע.
GPU
מעבד המותאם במיוחד לחישוב מקבילי.
Machine Learning
שיטות להתאמת מודלים מנתונים.
Neural Network
מודל חישובי בעל שכבות ופרמטרים.
Transformer
ארכיטקטורה מרכזית במודלי AI מודרניים.
LLM
מודל שפה גדול.
Hosted & Compiled with HtmlRunner.com