روزهای اولی که دانشجویان با مفهوم برنامهنویسی آشنا میشوند، روزهای بسیار مهم و حیاتیای است! اگر مدرس نتواند خوب از پس تدریس این مباحث بر بیاید، دانشجو خیلی سریع از برنامهنویسی بیزار میشود! مثلاً من خودم وقتی مبانی برنامهنویسی را تدریس میکنم و فرضاً امروز دانشجو میخواهد اولین برنامهاش را اجرا کند، حتماً به او میگویم قبل از فشردن کلید اجرا، من را خبر کند تا من بیایم و برنامهاش را چک کنم. چون وقتی کلید اجرا را زد و یک پیغام خطای قرمز رنگ در برنامهاش دید (که در ۹۹ درصد مواقع اولین برنامه دانشجو خطا دارد) توی ذوقش میخورد و یک دفعه از برنامهنویسی بیزار میشود! خیلی سخت است که اولین تجربه تلخی که داشته را جبران کنی...
یا مثلاً همانطور که در مطلب «یک خواهش از مدرسین زبان C : با نرم افزار Scratch آشنا شوید» گفته بودم، Scratch یک انقلاب در تدریس برنامهنویسی به حساب میآید!
از وقتی این برنامه را در تدریس برنامهنویسی به کار گرفتهام اشتیاق عجیبی در دانشجوها برای یادگیری برنامهنویسی میبینم. (نسبت به آن بیزاری که قبلاً وجود داشت، واقعاً متفاوت است) مثلاً این نظر که در این ترم و بعد از به کارگیری Scratch در درس مبانی برنامهنویسی به دستم رسید را بخوانید:
سلام استاد.از بابت آموزش امروز ممنون.چون دیپلم من مرتبط نیست برنامه نویسی برام کمی سخت بود اما امروز خیلی برام راحت شد.مرسی
اما چه شد که من خودم به برنامهنویسی علاقهمند شدم؟
شاید روز اول دانشگاه (در دوره کارشناسی) برای من یکی از بهترین روزها بود! وقتی از دانشگاه برگشتم، خواهرم گفت: خوب مهندس! چه خبر از روز اول دانشگاه؟ :)
گفتم: منصوره! همین روز اول بحث در مورد روبات و اینکه یک برنامه بنویسیم که روبات حرکت کنه و از اتاق بیرون بیاد، بود. احتمالاً تا روز آخر دانشگاه اگر خدا بخواد یه آپولو روی مریخ نشوندیم!!
حالا جریان این روبات چه بود؟
استاد عزیزی که داشتیم (و من واقعاً مدیون او هستم و امیدوارم هر کجا هست موفق باشد)، روز اول را با یک بازی شروع کرد:
ایشان چند مثال حل کردند و انتهای کلاس، چند تکلیف برای جلسه بعد دادند که یکی از سختترینهای آنها این بود: حالا سعی کنید دستورات را طوری بچینید که اگر روبات در یک اتاق ۳ در ۳ باشد و محل در و محل روبات مشخص نباشد، روبات با آن دستورات بتواند در را پیدا کند و خارج شود.
باور کنید من از بس روی تکالیف مربوط به این روبات کار کرده بودم، عاشق این روبات شده بودم! اصلاً دلم میخواست آنرا Robi صدا کنم! کلی خیالپردازی در موردش کرده بودم.
خلاصه فکر میکنم در آن کلاس، تنها کسی که به این روبات و برنامههایش علاقه داشت و تحویل میداد من بودم!
این مسأله را خودم یک PDF کردهام و در دروس مربتط با برنامهنویسی به دانشجویان میدهم که در موردش فکر کنند و حتی چند بار در دانشگاهها مسابقه گذاشتهایم که ببینیم کدام دانشجو بالاخره میتواند این مسأله را حل کند و روبات بیچاره را از اتاق بیرون بیاورد؟
و اما چند روز پیش که در سایت Code.org گشت میزدم، چشمم به یک برنامه خورد که بسیار شبیه به این مسأله است:
سایت رسمی آن Codehs.com است.
این پروژه هم چیزی شبیه به آن روبات است. فقط اینجا یک سگ داریم به نام Karel که گوش به فرمان شماست. این سگ چند دستور بیشتر نمیفهمد:
move(); یک حرکت به جلو
takeBall(); توپ را برمیدارد
putBall(); توپ را زمین میگذارد
turnLeft(); به سمت چپ میچرخد
بقیه دستورات را میتوانید خودتان بسازید. مثلاً اگر میخواهید به سمت راست بچرخد میتوانید یک تابع بسازید که با فراخوانی آن کارل سه بار به سمت چپ میچرخد (پس به سمت راست چرخیده).
این پروژه یک راهنمای جالب هم دارد که میتوانید آنرا طی کنید تا متوجه شوید روال به چه صورت است. ابتدا عضو سایت شوید و وارد Introduction to Karel کلیک کنید...
اما من فکر میکنم این پروژه میتوانست بسیار بهتر باشد! معتقدم پروژه روبات استاد ما دوستداشتنیتر بود. مصر شدهام که چیزی شبیه به کارل اما با Robi خودم بسازم ;) فکر میکنم بسیار بسیار جالبتر از این کارل بشود... منتظر Robi باشید ;)
موفق باشید؛
حمید رضا نیرومند