آموزش درست؛ شرط عقله.

همیشه بهمون میگن احتیاط شرط عقله. اما هیچ‌وقت از مصادیق احتیاط صحبت نمیشه! نمی‌گن که این احتیاط چه مصادیقی داره. یکی از اون مصادیق، آموزشه. در این مطلب قصد دارم یه مورد خیلی ساده رو توضیح بدم. چیزی که این روزها زیاد باهاش درگیر بودم و اگر آموزش درستی داشتم در قبل، انقدر هزینه و زمان بهم تحمیل نمی‌شد. احتمالا همه فهمیدین که من مهندسی کامپیوتر خوندم. اگر هم نفهمیدین حالا بفهمید ? در ترم‌ اول مهندسی کامپیوتر معمولا این دروس به دانشجو داده میشه (این اطلاعات مربوط به سال ۹۳ می‌باشد! لطفا خرده نگیرید) : ریاضی ۱فیزیک ۱مبانی کامپیوتر و برنامه‌نویسی آزمایشگاه مبانی کامپیوترادبیات فارسییه درس معارف (برای ما، انقلاب اسلامی بود)خب، برای مبانی و آزمایشگاه میشه دلیل محکم آورد «مهندس کامپیوتر» نیاز داره اینا رو بدونه. برای انقلاب هم دلیلش گذشته از این که احتمالا آشنایی با انقلاب اسلامی و دلیل رشد و شکل‌گیریش در ایران بوده، اصولا به چشم یه درس نمره‌بیار هم بهش نگاه میشه (حقیقتا هم هست، بخصوص اگر استادتون عین اون استادی که من داشتم باشه ?). برای ادبیات، من دلایل خاصی دارم. اما این مطلب جاش نیست. شاید بعدا در موردش نوشتم. اما بریم سر ریاضی و فیزیک. اینا درسایین که خیلی همیشه با سر و صدا همراهن و همیشه حتی خود من میگم نیازی نیست بخونیمشون. اما موضوع اینه که نیاز نیست اونطوری که بهمون درسشون میدن بخونیمشون. یعنی چی؟ یعنی به بدترین شکلی که میشه اون‌ها رو درس داد، تدریس میشن. برای مثال، ریاضیاتی که در مهندسی کامپیوتر وجود داره رو بررسی کنیم (اینا فقط درسهای تخصصی با پایه ریاضی هستند): ساختمان‌های گسستهساختمان‌های داده مدارهای منطقیمعماری کامپیوترنظریه زبان‌ها و ماشین‌ها سیگنال‌ها و سیستم‌ها سیستم کنترل خطی (سخت‌افزار)انتقال داده (سخت‌افزار)اصول طراحی کامپایلر و ... حالا بیاید طور دیگه ببینیم، این‌ها ریاضیاتی هستند که بعنوان «علوم پایه» در رشته کامپیوتر تدریس میشن : ریاضی عمومی ۱ریاضی عمومی ۲معادلات دیفرانسیلآمار و احتمالات مهندسی ریاضیات مهندسیو ... (همه‌ش یادم نیومد ?)حالا بریم سراغ یه تجربه ساده. خیلی وقت پیش، دلم میخواست که در زمینه پردازش سیگنال دیجیتال کار کنم. چیزی که طبیعتا در سیگنال باید بهمون یه قسمتیش رو می‌گفتند. از اون گذشته، یه سری مفاهیم ریاضی عجیب و غریب تو این قضیه هست. این رو نگاه کنید: یه موج سینویسیه که به یه موج دندانه‌اره‌ای تبدیل شده. این تبدیل، چیزیه که تو پردازش سیگنال دیجیتال معمولا انجام میشه برای تولید سیگنال‌های خاص، جنس صدای متفاوت و ... . دنبال این بودم که این رو پیاده کنم. مدتی دنبالش گشتم. آزمون و خطا کردم. ته تهش به چی رسیدم؟ به این که چیزی داریم به عنوان دنباله فوریه که به ساخت این شکل‌موج‌های جدید؛ کمک میکنه! حالا چرا باید دقیقا مدت طولانی بعد از تدریسش این رو می‌فهمیدم؟ چون آموزش نادرستی داریم. چیزی که تو آموزش دانشگاهی کشور اتفاق می‌افتهاستاد معمولا شخصیه که علوم پایه خونده تو دانشگاه. میاد و اگر استاد خوبی باشه، اون موضوع رو کاملا تئوریک و با فرض این که شما هم دانشجوی علوم پایه هستید توضیح میده. استاد خوبی نباشه، یه جزوه رو رسما و عملا کپی-پیست می‌کنه روی تخته و یه سری سوال مشخص هم برای امتحان میده (احتمال اینکه بندازه که پرستیژ خودش رو حفظ کنه هم زیاده!). روش غیراصولی و روتین تدریس. چیزی که باید اتفاق بیفتهخیلی از رشته‌های علوم پایه یه شکل کاربردی هم دارند. مثلا ریاضیات کاربردی داریم. این شکل کاربردی، معمولا به گرایش‌های متفاوتی تقسیم میشه. در مورد ریاضیات کاربردی، مطمئنم که گرایش کامپیوتر داره حتی (استادی که باهاش طراحی الگوریتم رو بار اول اخذ کردم چنین رشته‌ای خونده بود). خب؛ درستش اینه که این استادها، بیان و به بچه‌های مهندسی - تازه به تفکیک رشته - تدریس کنن. بعد درستش اینه که مثالهای کاربردی بزنن! مثلا معادلات دیفرانسیل میتونه در هوش مصنوعی خیلی کاربردی باشه. لازمه چنین چیزی به دانشجو گفته بشه. شاید فکر کنید تاثیر چندانی نداره اما داره. این که دانشجو بدونه در لایه‌های زیرین کارش چه اتفاقاتی میفته واقعا مهمه! نتیجه روش فعلی، نتیجه خوبی نیست. نتیجه چی شده مگه؟اگر تو دنیای برنامه‌نویسی هستید یک بار خوب نگاه کنید. چقدر آدم می‌بینید که الگوریتم رو درک کرده باشه؟ بدونه سیستم‌عامل چطور پردازه‌ها رو مدیریت می‌کنه؟ بتونه متناسب به معماری پردازنده‌ای که روی یک سرور در اختیارشه، کد بزنه؟ تجربه خودم خیلی کم بوده. آدمای کمی دیدم. اکثر ما شدیم کپی‌کار. کپی‌کاری در کامپیوتر عجیب نیست. اما عمدتا بیشتر از کپی پیست کردن پیش نرفتیم. هرچی بوده این بوده که بریم stackoverflow یه کدی رو کپی کنیم بعد تو کد خودمون پیست کنیم و خوشحال از این که درستش کردیم. نه، درستش نکردیم. خرابش کردیم. بدون این که درکش کنیم. بدون این که بفهمیم پشت اون قضیه چیه! در کل، اگر میخواید مفاهیم رو درست و حسابی یاد بگیرید، خودتون شروع کنید به خوندن مطالب. خیلی از این مباحث ریاضیاتی هم پیاده‌سازی کامپیوتریشون هست (چه با کد، چه با مدارات منطقی). در آخر هم امیدوارم موفق باشید و اگر استاد این دروس هستید، یکم به خودتون بیاید :)