⚡ IS231 · Lecture 01 · Dr. Mohamed Nour Eldien · أسئلة امتحانات 2021 – 2025

Intro to
Backend Development

مقدمة شاملة في تطوير الـ Backend — معمارية الويب، دورة الـ Request والـ Response، الفرق بين الـ Static والـ Dynamic، أساسيات Python، ومفاهيم Django — الشرح بالعربي والمصطلحات بالإنجليزي 🇪🇬

14
قسم شرح
20+
سؤال امتحان حقيقي
2021–2025
سنوات الامتحانات
نجاح 🎯
01

What is Backend Development? — إيه هو الـ Backend؟

العقل المدبر المخفي وراء أي تطبيق ويب

💡 تعريف الـ Backend Development

الـ Backend Development هو الجزء اللي بيشتغل على الـ Server Side (ناحية الخادم). المستخدم مش بيشوفه مباشرة، لكنه بيمثل "العقل" (The Brain) الفعلي للتطبيق.

هو اللي بيستقبل الـ Requests، ويشغّل الـ Business Logic، ويتعامل مع الـ Database، ويطبّق الأمان (Security)، ويبعت الـ Responses للمتصفح.

💡 من المحاضرة مباشرة: "Backend development is the part of a software system that runs on the server side. It receives requests, processes logic, talks to databases, enforces security, and returns responses."
⚙️ مسؤوليات Data & Logic
  • تخزين وجلب البيانات من الـ Database
  • التحقق من صحة المدخلات (Input Validation)
  • تطبيق قواعد العمل (Business Rules) زي الـ Login وحساب التقديرات
  • توليد المحتوى الديناميكي (Dynamic Content) بناءً على بيانات المستخدم
🔐 مسؤوليات Security & Integration
  • التحقق من هوية المستخدمين (Authentication) وإدارة الصلاحيات (Permissions)
  • معالجة الأخطاء (Error Handling)
  • التواصل مع الخدمات الخارجية (External APIs) زي بوابات الدفع
  • توفير البيانات للموقع أو تطبيقات الموبايل
🎯 أمثلة من حياتنا اليومية — Daily-Life Examples
  • 🔑 تسجيل الدخول (Login) لأي موقع
  • 🔍 البحث عن منتج وعرض النتائج المتاحة فعلاً
  • 📋 ملء فورم التقديم وحفظه في الـ Database
  • 👤 التحقق إن الـ Username متاح أم لأ
  • 📊 عرض لوحة درجاتك أنت بالذات (Personalized Dashboard)
  • 💬 حفظ تعليق جديد أو منشور جديد
02

Frontend vs Backend vs Database

مين بيعمل إيه في منظومة الويب

🖥️ Frontend (Client Side)

  • اللي المستخدم بيشوفه ويتعامل معاه
  • مبني بـ HTML, CSS, JavaScript
  • بيشتغل جوة المتصفح (Browser)
  • بيهتم بالشكل والألوان والتفاعل (UX)

⚙️ Backend (Server Side)

  • بيعالج الـ Requests القادمة من المستخدم
  • مبني بـ Python, JavaScript, Java, PHP…
  • بيشتغل على الـ Server
  • بيهتم بالـ Logic والأمان والبيانات

🗄️ Database (Data Layer)

  • بيحفظ البيانات بشكل دائم (Persistent)
  • زي SQLite, MySQL, PostgreSQL
  • لا تتكلم مع المستخدم مباشرة أبداً!
  • الـ Backend هو الوسيط بينها وبين الـ Frontend
🚨 قاعدة ذهبية للامتحان: الـ Database لا تتواصل أبداً مع المستخدم مباشرة! الـ Backend هو دايماً الوسيط اللي بيكلم الـ Database ويجهّز البيانات للـ Frontend.
🔄 رحلة البيانات — The Data Flow
👤
User / Browser
المستخدم
Request
Response
⚙️
Backend Server
Python / Django
Query
Data
🗄️
Database
SQLite / MySQL
03

3-Tier Application Architecture — نموذج الطبقات الثلاث

النموذج المعياري لتقسيم تطبيقات الويب

🖥️
Presentation Layer
HTML · CSS · JavaScript
الواجهة اللي المستخدم بيشوفها ويتعامل معاها في المتصفح. هي الـ Frontend.
⚙️
Application Layer
Python · Django
المنطق والعمليات والقواعد. ده هو الـ Backend اللي بيشتغل على السيرفر.
🗄️
Data Layer
SQLite · MySQL · PostgreSQL
مكان تخزين البيانات بشكل دائم. ما بتكلمش المستخدم مباشرة أبداً.
⚡ نقطة امتحان مكررة (2021 & 2024): Django بيقع في الـ Application Layer (الـ Backend) — مش في الـ Presentation Layer ولا الـ Data Layer.
04

Request–Response Cycle — دورة الطلب والاستجابة

كل حركة على الويب هي سؤال وجواب

🌐 كيف يعمل الموقع؟ — How a Website Works (6 خطوات)
1
المستخدم يدخل URL أو يدوس Link
المستخدم بيكتب عنوان في الـ Browser أو بيضغط على رابط.
2
الـ Browser بيبعت HTTP Request
طلب مكتوب بصيغة HTTP بيتبعت للسيرفر عبر شبكة الإنترنت.
3
الـ Backend بيستقبل ويعالج الـ Request
السيرفر بيشوف الطلب، بيفحص الصلاحيات، وبيقرر إيه اللي هيعمله.
4
الـ Backend بيكلم الـ Database
لو محتاج بيانات، بيبعت Query للـ Database ويستنى النتيجة.
5
السيرفر بيبعت HTTP Response
الرد بيتكون من Status Code + Headers + Body (HTML/JSON).
6
الـ Browser يعرض الصفحة (Render)
المتصفح بيستلم الرد ويحوله لصفحة مرئية للمستخدم.
📤 مكونات الـ HTTP Request
الجزءالوصف
HTTP Methodنوع العملية زي GET أو POST
URL Pathالمسار المطلوب زي /login
Headersمعلومات إضافية (Metadata) عن الـ request
Bodyالبيانات الفعلية — اختياري، موجود في POST/PUT بس
📌 من الامتحان: HTTP request message always contains a Request Line and a Header — الـ Body اختياري!
📥 مكونات الـ HTTP Response
الجزءالوصف
Status Codeرقم نتيجة الطلب (200, 404, 500…)
Headersمعلومات إضافية زي Content-Type
Bodyالمحتوى الفعلي (HTML, JSON…)
📌 من الامتحان: HTTP Response message must contain a Status Code — ده الإلزامي!
05

Static vs Dynamic Websites — الفرق بين الساكن والديناميكي

ليه أصلاً بنحتاج الـ Backend؟

📄 Static Website (موقع ساكن)

  • بيعرض نفس المحتوى لكل الناس بدون تغيير
  • الصفحات ملفات HTML ثابتة على السيرفر
  • مناسب للمواقع التعريفية البسيطة
  • عشان تعدل، لازم تعدل ملف الـ HTML يدوياً
  • لا يحتاج لـ Database
STATIC EXAMPLE
<h1>Welcome to the department</h1>
<p>Office hours: 9:00 AM - 2:00 PM</p>
<!-- نفس الكلام لكل الناس -->

⚡ Dynamic Website (موقع ديناميكي)

  • المحتوى بيتغير بناءً على المستخدم أو البيانات
  • الصفحة بتتولد لحظياً بكود الـ Backend
  • ضروري للمتاجر، البوابات، الـ Dashboards
  • البيانات بتيجي من الـ Database
  • يدعم Login وبيانات مخصصة لكل شخص
DYNAMIC EXAMPLE — Django View
def dashboard(request):
    student_name = 'Mona'
    cgpa = 3.8
    return render(request, 'dashboard.html', {
        'student_name': student_name,
        'cgpa': cgpa
    })
💡 تشبيه بسيط: الـ Static زي لافتة مكتوب عليها "ساعات العمل: 9–2" — نفس الكلام لكل الناس. الـ Dynamic زي الـ News Feed بتاع الفيسبوك — كل شخص بيشوف محتوى مختلف بناءً على صفحاته وأصحابه.
06

HTTP Methods & Status Codes — الأوامر ورموز الحالة

لغة الحوار بين الـ Client والـ Server

📋 HTTP Methods — أوامر الـ Request
Methodالاستخدام
GETقراءة بيانات — الـ Body فاضي! البيانات في الـ URL
POSTإرسال وإنشاء بيانات جديدة — البيانات في الـ Body
PUTتعديل كامل لـ resource موجود
PATCHتعديل جزئي (Partial Update) — مهم!
DELETEحذف resource معين
🚨 من امتحان 2025: الـ PATCH (مش PUT) هو المستخدم للتعديلات الجزئية (Partial Updates). الـ PUT بيبدّل الـ resource بالكامل.
GET vs POST — الفرق المهم
الصفةGETPOST
الهدفقراءة بياناتإرسال / تغيير بيانات
البياناتفي الـ URL (مكشوفة!)في الـ Body (مخفية)
الأمانغير آمن للبيانات الحساسةأكثر أماناً
Bodyلا يحتوي Bodyيحتوي على Body
⚡ من امتحان 2021: "POST is more robust and secure than GET" — الـ POST أقوى وأأمن من الـ GET لأن البيانات مش بتظهر في الـ URL.
🚦 HTTP Status Codes — رموز الحالة الأكثر تكراراً في الامتحانات
1xx Informational 2xx Success 3xx Redirection 4xx Client Error 5xx Server Error
Codeالمعنىتذكّره كده
200 OKطلبك اتنفذ بنجاح — User is authorized to see the response✅ كله تمام
301 Moved Permanentlyالـ Resource اتنقل لعنوان جديد بشكل دائم🔀 تحويل دائم
304 Not Modifiedاستخدم النسخة المحفوظة في الـ Cache — ما اتغيرش💾 خد من الكاش
400 Bad Requestالـ Request غلط في التنسيق❌ طلبك غلط
401 Unauthorizedمحتاج تسجل دخول الأول — Not authenticated🔑 اعمل Login
403 ForbiddenServer reachable but user not authorized — وصلت للسيرفر بس ممنوع🚫 ممنوع دخول
404 Not Foundالـ Resource مش موجود أصلاً🔍 مش هنا
500 Internal Server Errorفيه Bug في كود الـ Backend💥 السيرفر اتكسر
🚨 الفرق بين 401 و 403 — سؤال متكرر:
401 = مش authenticated بعد (لازم تعمل Login أول) — مثال: دخلت موقع بدون تسجيل
403 = عملت Login بس مش عندك Permission — مثال: حاولت تدخل Admin Panel وانت طالب عادي
💾 HTTP Caching — التخزين المؤقت

Time-Based Caching — بيعتمد على تاريخ ووقت معين. السيرفر بيقول "الملف ده هيبقى صالح لحد كذا تاريخ".

RESPONSE HEADER
Expires: Tuesday, 17 Dec 2020 18:30 GMT
⚠️ من امتحان 2021 & 2024: هيدر Expires ده Response header (مش Request!) ومعناه Time-Based Caching لأنه بيحدد تاريخ انتهاء الصلاحية.

Content-Based Caching — بيعتمد على مقارنة محتوى الملف نفسه. لو الملف ما اتغيرش، السيرفر بيرجع 304 Not Modified.

Headerنوعهوظيفته
ExpiresResponseTime-Based Caching
If-Modified-SinceRequestConditional Caching
Cache-ControlResponseالتحكم في الـ Cache
🔐 Authentication vs Authorization — الفرق المهم

Authentication (التحقق من الهوية): إنت مين؟ بيتحقق من هوية المستخدم عبر Username/Password.

مثال: شاشة الـ Login

Authorization (التصريح بالإذن): إنت عندك إذن بإيه؟ بيحدد الـ Permissions بعد الـ Login.

💡 من الامتحان: "To denote permission of using a resource, you must use Authorization" — Authorization مش Authentication!
🔒 Lock Icon في الـ Browser: الأيقونة دي بتدل على اتصال HTTPS عبر بروتوكول TLS المشفّر — "Secured Hypertext Transfer Protocol over TLS, secured connection"
07

URL Anatomy — تشريح عنوان الويب

فهم مكونات الـ URL خطوة خطوة

🔗 أجزاء الـ URL
https://example.com:443/students/list/?level=2
https
Protocol
example.com
Host / Domain
443
Port (اختياري)
/students/list/
Path
?level=2
Query String
الجزءالوصفمثال
Protocolالبروتوكول المستخدمhttp أو https
Host / Domainاسم الموقع على الإنترنتgoogle.com
Portرقم المنفذ — اختياري، مفصول بنقطتين : عن الـ HostHTTP=80, HTTPS=443
Pathمسار الصفحة أو الـ Resource على السيرفر/students/list/
Query Stringمعاملات إضافية، بتبدأ بـ ??level=2&year=1
⚠️ من امتحان 2021 (Q36): "In a URL, an optional Port Number can be inserted between the host and the path, separated from the host by a colon." — الإجابة: Port Number!
🍪 Cookie — من اللي بيعملها؟

الـ Cookie هي بيانات صغيرة بيتم تخزينها في متصفح المستخدم. بيستخدمها السيرفر عشان يتذكر المستخدم بين الـ Requests المختلفة (لأن HTTP بطبيعته Stateless).

🚨 من امتحان 2021 (Q37): الـ Cookie يتم إنشاؤها بواسطة الـ Server — مش الـ Client! السيرفر بيبعتها في الـ Response Header وبعدين المتصفح بيحتفظ بيها ويبعتها مع كل Request جديد.
08

Why Python & What is a Framework? — ليه Python؟ ويعني إيه Framework؟

اللغة القوية والهيكل الجاهز

🐍 مميزات Python في الـ Backend
  • Readable Syntax: الكود قريب من اللغة الإنجليزية الطبيعية — سهل القراءة والفهم
  • Indentation: المسافات البادئة جزء من الـ Syntax — بتخلي الكود نظيم غصب عنك
  • Large Community: مجتمع ضخم + مكتبات للويب والبيانات والـ AI
  • مستخدمة في Google و Instagram و Spotify و YouTube
  • سهلة للمبتدئين ومستخدمة في الشركات الكبيرة
🏗️ ما هو الـ Framework؟

الـ Framework هو مجموعة أدوات وقواعد وهيكل جاهز بيساعد المطورين يبنوا تطبيقات أسرع بدون ما يبدأوا من الصفر.

الـ Framework بيتكفل بالـ Routing, Database Access, Security, Templates — وانت تتفرغ للـ Business Logic.

🏠 تشبيه: بدون Framework = تبني البيت وتصنع الطوب والأسلاك بنفسك. بالـ Framework (Django) = شقة جاهزة فيها كل المرافق، بس انت تفرشها!
09

Django Framework & MVT Architecture

إطار العمل الأشمل لتطوير الويب بـ Python

🛠️ ما هو Django؟

Django هو High-level Python Web Framework بيساعد المطورين يبنوا مواقع آمنة وقابلة للصيانة بشكل سريع. بيتبع مبدأ "Batteries Included" يعني بييجي معاه أدوات كتير جاهزة من الأول.

الأدوات الجاهزة في Django:

  • URL Routing — ربط الـ URLs بالـ Views
  • ORM — التعامل مع الـ Database بكود Python بدون SQL
  • Admin Panel — لوحة إدارة جاهزة فوراً
  • Authentication — نظام Login جاهز
  • Template Engine — لإنشاء صفحات HTML ديناميكية

Stack الكورس:

الأداةالدور
🐍 PythonProgramming Language
🏗️ DjangoWeb Framework
🗄️ SQLiteDefault Database
📝 VS CodeCode Editor
⌨️ TerminalRun Commands
📐 MVT Architecture — نمط معمارية Django

M — Model

  • بيمثل هيكل البيانات
  • التعامل مع الـ Database
  • زي نموذج الـ Student أو الـ Course

V — View

  • الـ Logic والمعالجة
  • بيقرر إيه الداتا اللي هترجع
  • مثله زي الـ Controller في MVC

T — Template

  • واجهة العرض (HTML)
  • بتستقبل البيانات من الـ View
  • تستخدم {{ variable }}
🚨 سؤال متكرر (2021 & 2024): Django is based on MVT (Model-View-Template) — مش MVC! الـ V في Django بيقوم بدور الـ Controller في MVC التقليدي.
10

WSGI vs ASGI — طريقة معالجة الـ Requests

سؤال ظهر في امتحان 2025

🔄 WSGI — Web Server Gateway Interface

الـ WSGI هو الواجهة التقليدية اللي بيستخدمها Django. بيعالج الـ Requests بشكل Sequential (تتابعي/متزامن) — يعني طلب ورا طلب واحد واحد.

🚨 من امتحان 2025: "If an application is running on WSGI, then it will handle client requests in a sequential manner." — الإجابة: True ✅
ASGI — Async Server Gateway Interface

الـ ASGI هو البديل الحديث اللي بيدعم الـ Asynchronous (غير المتزامن) — بيقدر يعالج طلبات كتير في نفس الوقت، مناسب للـ WebSockets والتطبيقات Real-time.

الـ ASGI أسرع وأكثر كفاءة للتطبيقات الحديثة التي تحتاج لـ Real-time features.
11

Python Variables & Data Types — المتغيرات وأنواع البيانات

حجر الأساس لكتابة أي كود Python

📦 المتغيرات (Variables) وقواعد التسمية

المتغير هو مكان محجوز في الذاكرة (Memory) لتخزين قيمة معينة وإعادة استخدامها في الكود لاحقاً.

🚨 قواعد التسمية — مهمة للامتحان:
  • لا يبدأ برقم: 1name ❌ ← name1
  • لا يحتوي على مسافات: student name ❌ ← student_name
  • لا يحتوي على علامة الناقص/Dash: my-var ❌ ← my_var ✅ (من امتحان 2025!)
  • حساس لحالة الأحرف (Case-Sensitive): Age غير age
📊 أنواع البيانات الأساسية — Basic Data Types
Python — Basic Data Types
name = 'Ali'        # str — نص بين علامات تنصيص
level = 2          # int — رقم صحيح
gpa = 3.8         # float — رقم عشري
is_active = True  # bool — منطقي (لازم Capital!)

# معرفة نوع المتغير
print(type(level))  # <class 'int'>
النوعالرمزملاحظة مهمة
نص (Text)strبين single أو double quotes
رقم صحيحintبدون نقطة عشرية
رقم عشريfloatفيه نقطة عشرية
قيمة منطقيةboolTrue أو False — الحرف الأول Capital!
💬 التعليقات (Comments) في Python

التعليقات بنستخدمها لشرح الكود. الـ Python Interpreter بيتجاهلها تماماً.

Python Comments
# ده تعليق سطر واحد — بيبدأ بعلامة #
name = 'Mohamed'

# مفيش في Python تعليقات بـ // زي JavaScript
# ولا /* */ زي C أو Java للـ single-line
12

User Input & Type Casting — المدخلات وتحويل الأنواع

كيف نخلي البرنامج يتفاعل مع المستخدم

⌨️ دالة input() — مدخلات المستخدم

بنستخدم input() عشان البرنامج يوقف ويستنى المستخدم يكتب حاجة من الكيبورد.

🚨 الفخ الشهير في الامتحانات: دالة input() بترجع دايماً String — حتى لو المستخدم كتب رقم 20، البرنامج بيشوفه كـ '20' نص! لو حاولت تجمع رقمين هيعملوا Concatenation مش Addition.
🔄 Type Casting — تحويل الأنواع

عشان تتعامل مع الأرقام بصح، لازم تعمل Type Casting:

  • str() — تحويل لنص
  • int() — تحويل لرقم صحيح
  • float() — تحويل لرقم عشري
  • bool() — تحويل لقيمة منطقية
Type Casting Example
# بدون Casting — هيعمل Concatenation!
age_str = input("Enter age: ")
print(age_str + 1)  # ERROR! Can't add str + int

# مع Casting — صح!
age = int(input("Enter age: "))
print(age + 1)  # يعمل Addition صح
13

Control Flow & Loops — الشروط والحلقات

التحكم في مسار البرنامج والتكرار

⚖️ if / elif / else — الشروط
Python Conditions — مع الـ Indentation الإجباري
score = 75

if score >= 85:
    print("Excellent")      # 4 مسافات إجبارية!
elif score >= 60:
    print("Good")
elif score >= 50:
    print("Pass")
else:
    print("Fail")
⚠️ أهم قاعدة في Python: الـ Indentation (المسافات البادئة) إجبارية! لو نسيت المسافات، هتاخد IndentationError والكود مش هيشتغل.
🔄 for Loop

بنستخدمها لما نكون عارفين عدد المرات مسبقاً أو بنمر على قائمة.

for loop
# هيطبع 0, 1, 2, 3, 4
for i in range(5):
    print(i)

# المرور على قائمة
students = ['Ali', 'Mona', 'Sara']
for name in students:
    print(name)
🔁 while Loop

بتفضل تكرر طول ما الشرط True. لازم تتأكد إن الشرط هيتغير!

while loop
count = 0
while count < 3:
    print(count)
    count += 1  # مهم! لو نسيناه → Infinite Loop
# Output: 0, 1, 2
⚠️ تحذير: لو ما غيّرتش الشرط جوة الـ while، هتحصل Infinite Loop ودي هتوقف السيرفر!
14

Lists & Functions — القوائم والدوال

تنظيم البيانات وإعادة استخدام الكود

📋 Lists — القوائم

الـ List هي هيكل بيانات بيحفظ قيم كتير ورا بعض في متغير واحد. بتتكتب بين أقواس مربعة []. العناصر بتبدأ بـ Index رقمه 0.

List Operations
students = ['Ali', 'Mona', 'Sara']

print(students[0])   # Ali (أول عنصر)
print(students[-1])  # Sara (آخر عنصر)

students.append('Omar')  # يضيف في الآخر
last = students.pop()    # يشيل الآخر ويرجعه
print(last)              # Omar
🚨 من امتحان 2025 (Q21):
myNumbers = [1,2,3]
x = myNumbers.pop()

الـ pop() بتشيل العنصر الأخير وهو 3 — مش 1!
الإجابة: False (لو قالوا "سيُشال 1")
💡 قواعد Pop:
list.pop() → يشيل آخر عنصر
list.pop(0) → يشيل أول عنصر
set.pop() → عشوائي! (Sets unordered)
⚙️ Functions — الدوال

الدالة هي بلوك من الكود ليه اسم وبنستخدمه أكتر من مرة. بنعرّفها بكلمة def.

Function Definition & Call
def add_numbers(a, b):
    return a + b

result = add_numbers(5, 10)
print(result)  # 15

# Lambda function (دالة قصيرة)
double = lambda x: x * 2
print(double(7))  # 14
🚨 الفرق بين print() و return:
  • print() → يعرض على الشاشة بس — القيمة مش بترجع للبرنامج
  • return → يرجع القيمة للكود اللي نادى الدالة عشان يستخدمها
💡 تذكّر: الدالة بدون return بترجع None بشكل افتراضي.
🎯

Quiz — أسئلة الامتحانات الحقيقية (Lecture 1)

جميع الأسئلة المتعلقة بمحتوى المحاضرة من امتحانات 2021 · 2024 · 2025

Q1 Final 2021 & 2024 — متكرر!
Django is based on which framework / architecture?
A
MVC (Model-View-Controller)
B
MVVM (Model-View-ViewModel)
C
MVT (Model-View-Template)
D
None of the above
✅ الإجابة: C — MVT (Model-View-Template)
Django بيعتمد على نمط MVT — وليس MVC. الـ Model يمثل البيانات، الـ View يمثل الـ Logic (زي الـ Controller في MVC)، والـ Template يمثل واجهة العرض (HTML). السؤال ده ظهر في 2021 و2024.
Q2 Final 2021 — Q43 & Final 2024 — Q23
"Expires: Tuesday, 17 Dec 2020 18:30 GMT" is a ______ header denoting ______.
A
Request, Time-Based Caching
B
Response, Content-Based Caching
C
Request, Content-Type Caching
D
Response, Time-Based Caching
✅ الإجابة: D — Response, Time-Based Caching
الهيدر Expires بيتبعته السيرفر في الـ Response (مش الـ Request). وبما إنه بيحدد تاريخ ووقت معين فده يُسمى Time-Based Caching. السؤال ده أشهر سؤال متكرر في الكورس — ظهر في 2021 و2024!
Q3 Final 2021 — Q4
HTTP uses the services of ______ on well-known port 80.
A
TCP
B
UDP
C
SMTP
D
HTTPS
✅ الإجابة: A — TCP
HTTP يشتغل فوق بروتوكول TCP على الـ Port 80 بشكل افتراضي. الـ TCP بيضمن وصول البيانات بالترتيب وبدون أخطاء. HTTPS بيشتغل على TCP على الـ Port 443.
Q4 Final 2021 — Q6
An HTTP request message always contains ______.
A
A Header and A Body
B
A Request Line and A Header
C
A Status Line, A Header and A Body
D
None of the above
✅ الإجابة: B — A Request Line and A Header
الـ HTTP Request لازم يحتوي دايماً على: Request Line (Method + URL + Version) + Headers. أما الـ Body فهو اختياري وبيكون موجود في POST/PUT بس — مش في GET. الـ Status Line دي بتبقى في الـ Response مش الـ Request!
Q5 Final 2021 — Q7
______ is more robust and secure than ______.
A
GET, POST
B
POST, PUT
C
POST, GET
D
None of the above
✅ الإجابة: C — POST, GET
الـ POST أقوى وأأمن من الـ GET لأن البيانات في الـ POST بتتبعت في الـ Body مخفية، مش في الـ URL زي الـ GET. لو بعتت Password بـ GET، هيظهر في الـ URL ويتسجل في الـ Browser History!
Q6 Final 2021 — Q36
In a URL, an optional ______ can be inserted between the host and the path, separated from the host by a colon.
A
Port Number
B
Protocol
C
Host
D
None of them
✅ الإجابة: A — Port Number
في الـ URL، الـ Port Number اختياري وبييجي بعد الـ Host مفصول بنقطتين. مثال: https://example.com:443/path — الـ 443 ده الـ Port. لو مش موجود، المتصفح بيستخدم الـ Default (80 لـ HTTP أو 443 لـ HTTPS).
Q7 Final 2021 — Q37
A cookie is created by ______.
A
Server
B
Client
C
Host
D
None of them
✅ الإجابة: A — Server
الـ Cookie بيتم إنشاؤها بواسطة الـ Server وبيتبعتها في الـ Response Header بـ Set-Cookie. المتصفح (Client) بيحتفظ بيها وبيبعتها مع كل Request جديد للـ Server. دور الـ Client هو الحفظ والإرسال فقط، مش الإنشاء.
Q8 Final 2021 — Q38
The ______ of the ______ can contain parameters sent to the server.
A
Header, Response
B
Header, Request
C
Body, Response
D
Body, Request
✅ الإجابة: D — Body, Request
الـ Parameters اللي بتتبعت للسيرفر (زي بيانات فورم Login) بتكون في الـ Body بتاع الـ Request. الـ Response Body هو اللي بييجي من السيرفر للـ Client — مش العكس!
Q9 Final 2021 — Q42
An HTTP Response message must contain ______.
A
Content coming from the server
B
Content coming from the client
C
Status code
D
None of them
✅ الإجابة: C — Status Code
الـ HTTP Response لازم يحتوي دايماً على Status Code (زي 200, 404, 500…). الـ Body اختياري — مثلاً الـ 204 No Content بييجي بدون Body. لكن الـ Status Code إجباري في كل Response.
Q10 Final 2021 — Q44
To denote permission of using a resource, you must use ______.
A
Authentication
B
Validation
C
Authorization
D
None of them
✅ الإجابة: C — Authorization
الـ Authorization هو عملية تحديد الـ Permissions — يعني "هل مسموح للمستخدم ده يستخدم الـ Resource ده أم لأ؟". الـ Authentication هي عملية التحقق من هوية المستخدم (مين إنت؟). الفرق: Authentication = من إنت؟ | Authorization = مسموح لك بإيه؟
Q11 Final 2021 — Q45 & Final 2025 — Q36
Using authorization, having a response of status 200 means that ______.
A
The user is not authorized to see the response
B
Content cannot be displayed after authorization
C
None of the answers
D
User is authorized to see the response
✅ الإجابة: D — User is authorized to see the response
الـ Status 200 OK معناه "نجح الطلب" — في سياق الـ Authorization، يعني المستخدم عنده إذن وشاف المحتوى بنجاح. السؤال ده ظهر في 2021 و2025!
Q12 Final 2025 — Q37
Using authorization, having a response of status 403 means that ______.
A
Server is reachable but the user is not authorized to see the response
B
Server is not reachable, and the user is not authorized
C
Server is reachable and no content available
D
None of the answers
✅ الإجابة: A — Server is reachable but user is not authorized
الـ 403 Forbidden = وصلت للـ Server (السيرفر شغال ومتاح) لكن مش عندك Permission للـ Resource ده. الـ 404 = الـ Resource مش موجود. الـ 500 = فيه مشكلة في السيرفر نفسه.
Q13 Final 2021 — Q46
A lock icon in the browser denotes ______ for ______ connection.
A
Hypertext Transfer Protocol over TCP, secured
B
Secured Hypertext Transfer Protocol over TLS, secured
C
Hypertext Transfer Protocol over TCP, unsecured
D
None of the answers
✅ الإجابة: B — Secured Hypertext Transfer Protocol over TLS, secured
أيقونة القفل في المتصفح تعني إن الاتصال مشفر بـ HTTPS (Hypertext Transfer Protocol Secure) فوق بروتوكول TLS (Transport Layer Security). ده اتصال آمن ومشفر. لو مفيش قفل = HTTP عادي غير مشفر.
Q14 Final 2025 — Q15
If an application is running on Web Server Gateway Interface (WSGI), then it will handle client requests in a sequential manner. True or False?
A
True
B
False
✅ الإجابة: A — True
الـ WSGI (بينطق "Whiskey") هو الواجهة التقليدية اللي Django بيستخدمها. بيعالج الـ Requests بشكل Sequential (تتابعي/متزامن) — يعني طلب ورا طلب. عشان تدعم الـ Asynchronous تستخدم ASGI بدلاً منه.
Q15 Final 2025 — Q24
"my-var" is an incorrect variable name in Python. True or False?
A
True
B
False
✅ الإجابة: A — True
علامة الناقص أو الداش - غير مسموحة في أسماء المتغيرات في Python لأنها بتُفسَّر كعملية طرح (Subtraction). الصح هو استخدام الـ Underscore: my_var بدلاً من my-var.
Q16 Final 2025 — Q35
An HTTP response content type denotes ______.
A
The media type of the content
B
The image size of the content
C
The text size of the content
D
None of the answers
✅ الإجابة: A — The media type of the content
الـ Content-Type header في الـ Response بيحدد نوع الـ Media (MIME type) للمحتوى المُرسَل. مثلاً: text/html للصفحات، application/json للـ APIs، image/png للصور.
Q17 Final 2025 — Q21
In the following statement: myNumbers = [1,2,3] then x = myNumbers.pop() — The removed item will be 1. True or False?
A
True
B
False
✅ الإجابة: B — False
دالة pop() بدون أي argument بتشيل العنصر الأخير من القائمة — وده هو 3 مش 1. لو عايز تشيل أول عنصر اكتب pop(0). الـ Output: x = 3 والقائمة تبقى [1, 2].
Q18 Final 2025 — Q1
We use the PUT method in the HTTP request message for doing partial updates. True or False?
A
True
B
False
✅ الإجابة: B — False
الـ PUT مش للـ Partial Updates — ده للتعديل الكامل (Full Update) للـ Resource. اللي بيُستخدم للـ Partial Updates هو الـ PATCH. مثلاً: عايز تغير رقم موبايل شخص بس → استخدم PATCH. عايز تستبدل كل بيانات الشخص → استخدم PUT.
Q19 Final 2021 — Q3
Find the oddly matched HTTP status codes.
A
200 — OK
B
400 — Bad Request
C
304 — Not Found
D
301 — Moved Permanently
✅ الإجابة: C — 304 — Not Found (غلط!)
304 اسمه "Not Modified" مش "Not Found"! الـ "Not Found" ده اسم الـ 404. الـ 304 معناه "الـ Resource ما اتغيرش — استخدم النسخة اللي في الـ Cache". البقية كلها صح في تطابقها.
Q20 Final 2021 — Q1
The number of objects in a web page which consists of 4 JPEG images and HTML text is:
A
1
B
3
C
5
D
8
✅ الإجابة: C — 5
في بروتوكول HTTP، كل ملف بيُعدّ Object مستقل. عندنا: 4 JPEG images + 1 HTML text file = 5 objects. الـ Browser بيعمل HTTP Request لكل Object على حدة عشان يجمع الصفحة كاملة.