جلسه 1 Living with computers
مقدمه: چرا «زندگی با کامپیوتر» مهم است؟
کامپیوترها امروز فقط یک ابزار فنی نیستند؛ بخشی از زندگی روزمرهی ما شدهاند. از گوشی همراه تا سیستمهای اداری، از بازیها تا خدمات بانکی، همه بر پایهی مفاهیم بنیادی کامپیوتر کار میکنند.
هدف این فصل آن است که شما را با دیدگاه درست و کاربردی نسبت به کامپیوتر و رشتهی کامپیوتر آشنا کند تا در ادامه مسیر یادگیری، مفاهیم را دقیقتر درک کنید.
1) کامپیوتر چیست و چه کارهایی انجام میدهد؟
کامپیوتر دستگاهی است که با دریافت دادهها، آنها را پردازش کرده و خروجی تولید میکند. این چرخه معمولاً شامل مراحل زیر است:
ورودی (Input): دریافت داده (مثلاً از کیبورد، موس، فایل، سنسورها)
پردازش (Processing): انجام عملیات بر روی دادهها با الگوریتم
خروجی (Output): نمایش یا تولید نتیجه (مثلاً نمایشگر، صدا، ذخیره فایل)
ذخیرهسازی (Storage): نگهداری دادهها و برنامهها
نکات کلیدی
کامپیوتر «فکر نمیکند»؛ بلکه طبق دستورالعملها (برنامهها) عمل میکند.
کیفیت خروجی به دادهی ورودی و الگوریتم وابسته است.
بخش مهمی از کار کامپیوتر را مفاهیم داده، دستورالعمل و ترتیب انجام کارها تشکیل میدهند.
2) اجزای اصلی یک سیستم کامپیوتری
برای اینکه بدانید رایانه چگونه کار میکند، باید با اجزای اصلی آن آشنا شوید:
2-1) سختافزار (Hardware)
سختافزار شامل بخشهای فیزیکی است، مانند:
CPU (واحد پردازش مرکزی): مغز رایانه و اجرای دستورالعملها
RAM (حافظه موقت): نگهداری دادهها و برنامههایی که در لحظه استفاده میشوند
Storage (حافظه دائمی): مثل SSD/HDD برای نگهداری طولانیمدت
GPU (واحد پردازش گرافیکی): برای پردازشهای سنگین گرافیک و موازی
Motherboard (برد اصلی): ارتباط بین اجزا
Input/Output Devices: صفحهکلید، موس، مانیتور، چاپگر، میکروفون و…
2-2) نرمافزار (Software)
نرمافزار به دو دسته مهم تقسیم میشود:
سیستمعامل (Operating System): مدیریت منابع سختافزار و اجرای برنامهها
برنامهها (Applications): نرمافزارهای کاربردی مثل مرورگر، IDE، بازی و…
نکات کلیدی
RAM سریع است اما موقتی است.
SSD/HDD کندتر اما دائمی است.
CPU معمولاً در نقش «مدیر فرمانها» و اجرای دستورالعملهاست.
بدون نرمافزار، سختافزار عملاً کار مشخصی انجام نمیدهد.
3) داده و اطلاعات: تفاوت مهم
داده: خام و بدون پردازش (مثلاً عددها یا متنهایی که وارد میشوند)
اطلاعات: دادهای که پردازش شده و برای تصمیمگیری معنا دارد
مثال
اگر یک لیست از زمانهای پاسخ کاربران داشته باشیم:
داده: ( 120, 98, 140 ) میلیثانیه
اطلاعات: میانگین و نتیجه تحلیل مثل «سیستم در حال کند شدن است»
نکات کلیدی
کامپیوتر از دادهها «اتفاقی» اطلاعات نمیسازد؛ این کار نیازمند پردازش و مدل تحلیل است.
در رشته کامپیوتر، تمرکز بر تبدیل داده به اطلاعات است.
4) الگوریتم چیست و چرا مهم است؟
الگوریتم مجموعهای از دستورالعملهای دقیق است که برای حل یک مسئله اجرا میشود.
ویژگیهای یک الگوریتم خوب:
واضح و دقیق (بدون ابهام)
قابل اجرا (در زمان مشخص)
متناهی بودن (پس از پایان به جواب میرسد)
کارایی (استفاده منطقی از منابع)
نمونه ساده
برای پیدا کردن بزرگترین عدد در یک لیست:
بزرگترین را اولین عنصر قرار بده
از عنصر دوم تا آخر حرکت کن
هر جا عدد بزرگتر دیدی، آن را به عنوان بزرگترین ذخیره کن
در پایان بزرگترین را چاپ کن
نکات کلیدی
برنامهنویسی در اصل یعنی: تبدیل الگوریتم به کد.
اگر الگوریتم درست نباشد، حتی بهترین کد هم نتیجهی صحیح نمیدهد.
5) برنامهنویسی به زبان ساده
برنامهنویسی یعنی نوشتن دستورها به زبان قابل فهم برای کامپیوتر.
زبانهای برنامهنویسی
زبانهایی مثل Python، Java، C، C++، JavaScript و…
هر زبان:
نحوهی نوشتن کد را مشخص میکند
کتابخانهها و ابزارهای خاص خودش را دارد
روند کلی برنامهنویسی
تعریف مسئله
طراحی الگوریتم
نوشتن کد (کدنویسی)
تست (آزمایش با ورودیهای مختلف)
رفع خطا و بهبود
نکات کلیدی
اشکالیابی (Debugging) بخشی جداییناپذیر از برنامهنویسی است.
هیچ برنامهای بدون تست، مطمئن نیست.
6) سیستمعامل و مفهوم مدیریت منابع
سیستمعامل مثل یک مدیر در رایانه عمل میکند:
اجرای برنامهها
مدیریت حافظه (RAM)
مدیریت فایلها
زمانبندی پردازشها
کنترل دسترسی سختافزارها
نکات کلیدی
اگر سیستمعامل نبود، هر برنامه باید مستقیم با سختافزار صحبت میکرد.
سیستمعامل باعث میشود کارها منظم و امن باشند.
7) شبکه و ارتباط بین کامپیوترها
کامپیوترها برای تبادل اطلاعات معمولاً از شبکه استفاده میکنند:
LAN (شبکه محلی)، WAN (شبکه گسترده)
اینترنت نمونهی بزرگ و جهانی شبکه است
مفاهیم پایه
آدرس IP: هویت دستگاهها در شبکه
پروتکلها: قوانین ارتباط (مثل HTTP/HTTPS)
ارسال بستهها: دادهها به بخشهای کوچکتر تقسیم میشوند و در مسیر منتقل میگردند
نکات کلیدی
اینترنت بر اساس قراردادهای مشخص کار میکند.
اگر پروتکلها را بشناسید، بسیاری از خطاهای اتصال قابل درک میشوند.
8) امنیت در زندگی با کامپیوتر
امنیت فقط برای هکرها نیست؛ برای همهی کاربران ضروری است.
تهدیدهای رایج
بدافزارها (ویروس، تروجان، باجافزار)
فیشینگ (دریافت اطلاعات با ترفند)
سرقت رمزعبور
سوءاستفاده از ضعفهای سیستم
اصول پایهی امنیت
استفاده از رمز عبور قوی و متفاوت برای هر سرویس
فعال کردن تأیید دو مرحلهای (2FA)
بهروزرسانی سیستمعامل و نرمافزارها
احتیاط در لینکها و فایلهای ناشناس
نکات کلیدی
«امنیت» یعنی کاهش احتمال رخداد و کاهش اثر رخداد.
عادتهای درست از ابزارهای امنیتی مهمترند.
9) مسیر یادگیری رشته کامپیوتر از دیدگاه کاربردی
اگر بخواهید یادگیری را هدفمند شروع کنید، بهتر است یک نقشه راه داشته باشید:
پیشنهاد مسیر کلی
مبانی کامپیوتر: داده، الگوریتم، سختافزار/نرمافزار
برنامهنویسی پایه: متغیر، شرط، حلقه، توابع
ساختار دادههای پایه: لیست، صف، دیکشنری (بسته به زبان)
یادگیری مفاهیم نرمافزاری: فایل، ورودی/خروجی، خطاها
مبانی شبکه و امنیت
پروژههای کوچک و مرحلهای
نکات کلیدی
پروژههای کوچک باعث میشوند یادگیری «واقعی» شود.
به جای حفظ کردن، تلاش کنید مسئلهها را تحلیل کنید.
جمعبندی فصل
در این فصل آموختیم:
کامپیوتر چگونه ورودی را میگیرد و خروجی تولید میکند.
تفاوت داده و اطلاعات.
مفهوم الگوریتم و نقش آن در برنامهنویسی.
نقش سختافزار و نرمافزار (بهخصوص سیستمعامل).
مبانی شبکه و اصول اولیه امنیت.
یک مسیر یادگیری کاربردی برای شروع رشته کامپیوتر.
تمرین پایان فصل (پیشنهادی و کامل)
تمرین 1: تشخیص اجزا
به سوالها پاسخ دهید:
RAM چه تفاوتی با Storage دارد؟
وظیفهی CPU دقیقاً چیست؟
دو نمونه از دستگاههای ورودی و دو نمونه از دستگاههای خروجی نام ببرید.
چرا سیستمعامل را «مدیر منابع» مینامند؟
تمرین 2: چرخه ورودی-پردازش-خروجی
یک مثال واقعی از زندگی روزمره انتخاب کنید (مثل ماشین حساب موبایل یا فرم ثبتنام در سایت). سپس به صورت ساختارمند بنویسید:
ورودیها چه هستند؟
پردازش چگونه انجام میشود؟
خروجی چیست؟
آیا ذخیرهسازی وجود دارد؟ اگر بله کجاست؟
تمرین 3: طراحی الگوریتم
مسئله: میانگین یک لیست عددی را حساب کنید.
الگوریتم را مرحلهبهمرحله بنویسید.
سپس فرمول ریاضی میانگین را هم بنویسید.
(راهنما: اگر ( n ) عدد داشته باشیم و مجموع آنها ( S ) باشد، میانگین چیست؟)در انتها توضیح دهید اگر لیست خالی باشد چه باید کرد.
تمرین 4: برنامهریزی برای تست
برای الگوریتمی که در تمرین 3 نوشتید، حداقل 5 تست طراحی کنید:
تست با اعداد مثبت
تست با اعداد منفی
تست با اعداد اعشاری
تست با یک عدد تنها
تست با لیست خالی
برای هر تست بنویسید «انتظار داریم چه خروجیای ببینیم».
تمرین 5: تحلیل خطا (Debugging)
سناریو: یک برنامه برای پیدا کردن بزرگترین عدد مینویسید ولی همیشه اولین عدد را به عنوان بزرگترین برمیگرداند.
حدس بزنید احتمالاً چه اشتباهی رخ داده است؟ (حداقل دو احتمال)
برای پیدا کردن علت، چه کارهایی انجام میدهید؟ (حداقل سه روش)
مثال: چاپ مقادیر میانی، بررسی حلقه، بررسی شرطها
تمرین 6: امنیت رفتاری
به سوالها پاسخ دهید:
چرا استفاده از رمز عبور یکسان برای چند سرویس خطرناک است؟
2FA چه کمکی میکند؟
سه رفتار روزمره که امنیت شما را بالا میبرد نام ببرید.
تمرین 7: شبکه و پروتکل
مفهوم IP را در حد چند جمله توضیح دهید.
پروتکل چیست و چرا لازم است؟
اگر مرورگر شما «خطای 404» بدهد، معنی آن چیست؟ (توضیح کوتاه)
تمرین 8: پروژه کوچک (مقدماتی)
یک پروژهی کوچک تعریف کنید (در حد 1 تا 2 صفحه توضیح) که به مفاهیم این فصل مربوط باشد. یکی از موضوعها را انتخاب کنید:
«ماشین حساب ساده» (جمع، تفریق، ضرب، تقسیم)
«تبدیل دما» (سانتیگراد به فارنهایت و برعکس)
«بررسی عدد زوج یا فرد»
«محاسبه میانگین نمرات»
در طرح خود این موارد را بنویسید:
مسئله دقیق چیست؟
ورودیها و خروجیها چه هستند؟
الگوریتم به چه صورت است؟
چه تستهایی انجام میدهید؟
تمرین 9: سوالات مفهومی کوتاه
به صورت کوتاه پاسخ دهید:
تفاوت داده و اطلاعات چیست؟
یک الگوریتم چه ویژگیهایی دارد؟
چرا «تست» برای برنامه مهم است؟
سیستمعامل در اجرای برنامهها چه نقشی دارد؟
تمرین 10: چالش تحلیلی
مسئله: فرض کنید یک برنامهی تحلیل داده دارید و گزارش میدهد میانگین زمان پاسخ کاربران ( 250 ) میلیثانیه است.
اما بازرسی نشان میدهد برخی کاربران زمان پاسخ ( 2000 ) میلیثانیه داشتهاند.
ممکن است گزارش میانگین گمراهکننده باشد؟ چرا؟
پیشنهاد کنید چه معیار دیگری میتواند بهتر باشد؟ (میانه/صدکها و…)
چه دادههایی را باید در اختیار گزارش بگذارید تا تصمیمگیری بهتر شود؟