اساس هر برنامه نویسی روی ... پازل

سلام، خابروفسکی‌ها!

در این مقاله، می‌خواهم تجربه‌ام را در تدریس برنامه‌نویسی ++C در یک دانشگاه فنی به اشتراک بگذارم. این یک تجربه بی‌نظیر بود که چیزهای زیادی به من آموخت. وقتی صحبت از حقایق جالب از گذشته شخصی‌ام می‌شود، این یکی از اولین چیزهایی است که به ذهنم می‌رسد.
برو

اول، کمی در مورد خودم.
در سال ۲۰۱۶، با مدرک افتخاری در رشته امنیت اطلاعات سیستم‌های خودکار از این موسسه فارغ‌التحصیل شدم. در طول تحصیل، بارها با نوشتن مقالات علمی و شرکت در مسابقات و جوایز، پتانسیل خود را به اثبات رساندم. در سال ۲۰۱۵، در مسابقه سراسری دانشمندان جوان روسیه، «UMNIK»، برنده شدم. در سال ۲۰۱۶، قبل از اتمام تحصیلاتم، توسط یک سازمان بزرگ شهری به عنوان «متخصص امنیت اطلاعات، رمزنگاری و رمزگذاری» استخدام شدم.
خلاصه، چیزی شبیه به این. می‌توانید تصور کنید که من ایده‌هایی در مورد برنامه‌نویسی داشتم.

و بعد سال ۲۰۱۷ بود. دوره تحصیلات تکمیلی. از من خواسته شد که به مدت یک ترم در یک دانشگاه ++C تدریس کنم، و به من قول پاداش‌های سخاوتمندانه‌ای برای سبک کردن بار دانشجوی کارشناسی ارشد بودن داده شد، و نه بیشتر.

راستش را بخواهید، من واقعاً علاقه‌مند بودم که خودم را در این عقیده محک بزنم.

جفت اول
سپتامبر. هفته اول مدرسه. دانش‌آموزان پیش من آمدند. «نافرمان‌ترین گروه» - این اسمی بود که به آنها داده بودند.
۲۳ نفر. «برنامه‌نویس».

همانطور که انتظار می‌رفت، با معرفی خودم شروع کردم. آرام آرام محتوای بخش «اول، کمی درباره من» را برایشان تعریف کردم...
سپس وحشت شروع شد. وقتی از آنها پرسیده شد: «چه کاری می‌توانید انجام دهید؟» دانش‌آموزان (از این به بعد آنها را اینگونه صدا خواهیم زد) پاسخ دادند که چیزی بیش از هیچ نمی‌دانند (خب، این بدان معناست که برخی از آنها می‌دانستند MS Visual Studio چه شکلی است و می‌توانند یک پروژه «Hello World» ایجاد کنند)... برنامه‌نویسان. سال آخر آنها...

سپس آنها با جزئیات، با جزئیات واضح، توضیح دادند که چیزی به آنها آموزش داده نشده و از برنامه‌نویسی به طور کلی ناامید شده‌اند...

تقریباً تمام روزهای تا درس بعدی برای من اینگونه گذشت:
اساس هر برنامه نویسی روی ... پازل

... اما روز قبل، این ایده در ذهن و ضمیر این جوانان شکل گرفت که برای اصلاح وضعیت فعلی تلاش شود. و سپس "اوستاپ از کوره در رفت."

مقدمه‌ای بر برنامه‌نویسی
برای درس بعدی... یک معما آوردم.
بله، بله. یک معما. «چگونه اژدهای خود را تربیت کنید». قوانین ساده بودند. گروه به سه تیم تقسیم شد. هر تیم قطعه خودش را سرهم کرد. بعضی‌ها جنگل، بعضی دیگر زمین و بعضی دیگر اژدهای مرکز تصویر بودند. در حالی که داشتند روی معما کار می‌کردند، توضیح دادم که چیدن یک پازل هم نوعی برنامه‌نویسی استاینکه برنامه‌نویسان اغلب از کد دیگران استفاده می‌کنند، اینکه هر پروژه چندین دستور، ویژگی، ماژول و... مختلف دارد.
کم کم تنبل ترین دانش آموزان هم به این روند پیوستند.
وقتی ایده برنامه‌نویسی برای مفاهیم، ​​فرآیندها و... پازل‌های تجاری را کاملاً بررسی کردم، وقت آن بود که قوانین یادگیری را تعیین کنم.
برای هر کلاس، هر دانش‌آموز باید ۱۰ اصطلاح فناوری اطلاعات را در دفترچه‌اش می‌نوشت. هر کدام. هر کسی اصطلاح خودش را داشت. ایده این بود که من دفترچه یکی از دانش‌آموزان را بردارم و آن اصطلاحات را از بین همه پیدا کنم. تا حد امکان عملی و از دانشجوی دیگری در مورد آنها پرسید. وقتی دانشجوی دیگری گفت: «من آن اصطلاح را یادداشت نکرده‌ام»، (به دلیل عقل سلیم) قابل مجازات نبود، اما آن دانشجو مجبور بود اصطلاحات «گمشده» را (مانند هر کس دیگری که آنها را نداشت) بنویسد و تا کلاس بعدی آنها را جستجو کند.

این کاری بود که ما انجام دادیم. هر کلاس با انتخاب تصادفی و پرشور دو یا سه دانش‌آموز شروع می‌شد. بچه‌ها از این روند مشتاقانه استقبال کردند.

مباحث درس
هنگام شروع آموزش، بسیار مهم است که به دانش‌آموزان منابع خوبی ارائه شود. به نظر من، منبع ایده‌آل این کتاب بود:
اساس هر برنامه نویسی روی ... پازل

در یک مقطع، مجبور شدم آن را به آرامی در حالی که مایکروسافت ویژوال استودیو را در آغوش گرفته بودم، بخوانم. سپس توانستم برنامه‌نویسی را عملاً از صفر بفهمم. ایده‌آل بود.

شما با فروتنی به دانش‌آموزان نزدیک می‌شوید و می‌گویید: «برای برنامه‌نویس شدن، تنها کاری که باید انجام دهید این است که همه مطالب این کتاب را بخوانید و امتحان کنید» و کتاب را روی میز پرت می‌کنید. نکته اصلی این است که کتاب‌های داخل کوله پشتی‌تان را قاطی نکنید...

قبل از هر موضوعی، مطمئناً باید تحقیقات زیادی انجام می‌دادم. من لافورت و چند منبع آنلاین جالب دیگر را خواندم.
توضیحات باید تقریباً از صفر انجام می‌شد. علاوه بر این، لازم بود به صورت قیاسی مشخص شود که دانش پایه دانش‌آموزان در کجا نقص داشته است.
آرایه‌ها -> کار با حافظه (سازنده‌ها) -> ارجاعات -> نحوه کار حافظه -> ذخیره‌سازی -> ذخیره‌سازی فیزیکی چیست -> نمایش دودویی داده‌ها...
اساس هر برنامه نویسی روی ... پازل

یک آزمون سخت و چالش‌برانگیز برای سنجش دانش من از اصول برنامه‌نویسی. من دیگر یک برنامه‌نویس نیستم، من یک مورخ هستم!

بنابراین، این نبردهای تاریخی برای چندین کلاس پشت سر هم ادامه یافت. یک روز، منشی از پشت تریبون به دفتر ما نگاه کرد و با دیدن گروه، چشمانش را گشاد کرد، به داخل نگاه کرد و در را بست. همانطور که بعداً به من گفتند، او از اینکه این گروه آنقدر ساکت نشسته بودند و با دقت به من گوش می‌دادند، شوکه شده بود... اه، خیلی راحت.

کار آزمایشگاهی
اولین اطلاعات عملی - اولین «آزمایشگاه‌ها». در مجموع، گروه در طول ترم 10 آزمایشگاه را تکمیل کرد. در اولین آزمایشگاه‌ها، آنها کنسول ساده‌ای انجام دادند. الف+بو در مورد دوم، آنها برنامه‌های کاربردی، هرچند مبتنی بر کنسول، اما کاملاً جالب، مانند محاسبه مقدار انتگرال یک تابع دلخواه با استفاده از یکی از سه روش - تقریباً همان وظایف در گواهینامه نهایی - دوره‌های آموزشی را نوشتند.

این فقط رویکرد پذیرش است هیچ آشنا بود. در تمام دوران دانشگاهم، با این واقعیت روبرو بودم که باهوش بودن و توانایی ارائه گزارش، دو چیز متفاوت هستند. این موضوع اساساً مرا ناراحت می‌کرد.

«بچه‌ها، داشتم فکر می‌کردم. بیایید یک رابطه‌ی «مفهومی» برقرار کنیم. اگر هر کدام از شما فکر می‌کنید برنامه‌نویسی برای شما مناسب نیست، در آنجاست. من به شما رایگان آموزش می‌دهم. من فقط افراد کنجکاو، دلسوز و مشتاق اینجا می‌خواهم. بقیه، لطفا وقت همه را تلف نکنید.» این را در اولین روز تکالیف آزمایشگاهی گفتم. پنج نفر بلافاصله از شرکت در کلاس انصراف دادند. این منطقی و قابل انتظار بود. می‌شد سعی کرد با بقیه کاری معنادار انجام دهد.

— … من علاقه‌ای ندارم ببینم کسی کار شما را انجام می‌دهد فقط برای اینکه آن را تحویل بدهم. شما ممکن است برنامه‌نویس نباشید، اما می‌توانید جزو افرادی باشید که در کلاس‌های من شرکت می‌کنند. باید به.

این شکلی بود:

case отличник

یک دانش‌آموز کنار من می‌نشیند تا تکالیفش را تحویل دهد.
- خودت انجامش دادی؟
- بله
— این چیه؟
— *به درستی پاسخ می‌دهد*.
*درباره چند چیز دیگر هم می‌پرسم. او درست جواب می‌دهد*
- قبول. عالی.

case болтун

- خودت انجامش دادی؟
- بله
— این چیه؟
— *پاسخ نادرست می‌دهد / جواب نمی‌دهد*.
*درباره چند چیز دیگر هم می‌پرسم. همان نتیجه*
— پذیرفته نشده. شکست. منتظر تکرارش هستم.

case хорошист

- خودت انجامش دادی؟
- بله
— این چیه؟
— *درست جواب می‌دهد، اما نه با اطمینان، شناور می‌شود*.
*درباره چند چیز دیگر هم می‌پرسم. همان نتیجه*
- قبول. خوب.

case ровныйТроечник

- خودت انجامش دادی؟
- نه
- چرا؟
— سخته. کمکم کرد… *صادقانه اسم بهترین دانش‌آموز گروه را می‌گوید*
- متوجه شدی؟
- بله، تقریباً همه چیز را فهمیدم.

— این چیه؟
— *به درستی پاسخ می‌دهد*.
*درباره چند چیز دیگر هم می‌پرسم. پاسخ‌هایش کم و بیش درست است، گاهی اوقات کاملاً اشتباه، حتی اگر ۵۰/۵۰ درست یا غلط باشد.*
- قبول. خوب.

فایده‌ای ندارد که همه موارد دیگر را توصیف کنم. بله، یک دانش‌آموز «ب» ممکن است از اینکه یک دانش‌آموز «ج» با تکیه بر صداقت، همان نمره را می‌گیرد، ناراضی باشد. در آن صورت همه چیز به حال و هوا بستگی دارد. یا از دانش‌آموز «ب» می‌خواهم که به زمین نگاه کند، چون «می‌خواهم کمی خرد به خرج دهم» و سپس جوهره رویکرد را توضیح می‌دهم، آنچه را که در زندگی ارزشمندتر است توصیف می‌کنم و توضیح می‌دهم که قبولی در امتحان برای دانش‌آموز «ج» بسیار سخت‌تر از او، یعنی دانش‌آموز «ب» بوده است و همینطور ادامه پیدا می‌کند...
... یا، مثل کاری که استادم یه بار کرد، یه دندون کوچولو تو مربع دفترچه کنار اون دانشجوی ناراضی می‌کشم و دفعه‌ی بعد تکلیف آزمایشگاه رو مخصوص اون انجام می‌دم. فقط به خاطر اینکه. تا همکلاسی‌هاش رو "سرزنش" نکنه.

اساس هر برنامه نویسی روی ... پازل

Оценки
روند آموزشی، مانند سایر نقاط جهان، به معنای واقعی کلمه در برچسب‌های قیمت و نمرات غرق شده است.
دانشجویان هم آدم هستندبا این حال، به نظر من، «چارچوب» اینجا هم باید «متزلزل» می‌شد.
در طول ترم، به هر نفر یک تکلیف اضافه داده شد. برای ثبت نام اقدام کنید github.com، یک پروژه خالی ++C آپلود کردم، دو به‌روزرسانی انجام دادم، آنها را commit کردم و ارسال کردم. برای این اقدامات، ۱۵ امتیاز به من تعلق گرفت. بله، نه ۴، نه ۵، بلکه ۱۵. سه نفر از ما این را فهمیدیم. این موضوع تا حدودی با توجه به تیپ شخصیتی دانش‌آموز قابل درک بود، اما بعد اتفاق دیگری افتاد.
یک بار، کلاس ما طوری برنامه‌ریزی شد که آخرین کلاس شد و درست بعد از یک پنجره کلاسی. با این حال، هنوز ۱۵ نفر آمده بودند. نمی‌خواستم به افتخار چنین قهرمانی، موضوع جدیدی را توضیح دهم، چون قبلاً در مورد موضوعات پیشرفت خوبی داشتیم و موضوع بعدی برای ذهن‌های خسته ما (هم ذهن من و هم ذهن دانش‌آموزان) چالش‌برانگیز بود. بنابراین تصمیم گرفتم در مورد فلسفه صحبت کنم.

«من دارم یه پیشنهاد سخاوتمندانه و بی‌سابقه رو اعلام می‌کنم. همه دارن بهم می‌گن برای کلاس امروزش چه نمره‌ای بهش بدم.»
همه پنج می‌خواستند.
گفتم: «فکر کنید که از قبل آنجاست.» همه خوشحال بودند.
سکوت
- چرا هیچکس نخواست؟ 7-کو یا 10-کو؟
چشم‌های همه گرد شد و شروع به لبخند احمقانه‌ای کردند.
صدایی از ته کلاس آمد: «واقعاً می‌خوای تو دفتر خاطراتت بنویسیش؟!»
گفتم: «آسونه! دارم یه مسابقه‌ی اصطلاحات اعلام می‌کنم. هرکی به ده تا سوال من جواب بده، برنده می‌شه.» 20-کو توی مجله، گیر نمیاد، هر کی جواب نمیده - به اون یکی -10 (منفی ده).

«تیم سرحال شد و بحثی درگرفت.» همه نمرات سخت به دست آمده خود را گرفته بودند. دو نفر داوطلب شدند. با چند مشکل جزئی، آنها به نوبت به 10 سوال در مورد پشته‌ها، صف‌ها، سازنده‌ها، مخرب‌ها، جمع‌آوری‌کننده‌های زباله، کپسوله‌سازی، چندریختی، توابع هش... پاسخ دادند.
برای هر کدام تصویری در مجله کشیده شده بود 20 کا...اما اهمیت دفترچه و نمرات در نظر همه کم شد. حالا پشیمانم که نپرسیدم آیا دوست دارند نمره‌شان را با کسی «به اشتراک» بگذارند. فکر می‌کنم این کار را می‌کردند... از حالا به بعد، همه با دانش و صداقت از «آزمایشگاه» عبور کردند.

از این نقطه به بعد، نوع دیگری از آزمایش آزمایشگاهی ظاهر شد:


case честноНеЕгоНоОнПытался

- خودت انجامش دادی؟
- نه
- چرا؟
— سخته. کمکم کرد… *صادقانه اسم بهترین دانش‌آموز گروه را می‌گوید*
- متوجه شدی؟
— سرگئی نیکولاویچ، راستش را بخواهید، من چیزی نمی‌فهمم. خودم کنار هر خط کامنت نوشتم. «خب، این کار من نیست، من راننده تراکتور خواهم شد.»
— این چیه؟
— *نظر روبرو را می‌خواند*.
- ...
- ...
— تفاوت بین MTZ بلاروس و Don 500 و K700 چیست؟
— ??!.. اولین مورد، یک تراکتور چرخدار ساخت مینسک است که اغلب در کاربردهای کشاورزی سبک و نیمه سنگین استفاده می‌شود. همچنین دارای چرخ‌های کوچک در جلو و چرخ‌های بزرگ در عقب است. Don 500 در درجه اول یک کمباین است و K-700 Kirovets یک تراکتور چرخدار چندمنظوره مربوط به دوران شوروی با قابلیت پیمایش افزایش‌یافته در سطح کشور و کلاس کشش ۵ است.
— قبول. خوبه (!!!).
- متشکرم، سرگئی نیکولایویچ!!!

در سرزمین من، گپ زدن سر یک تراکتور تقریباً مثل گپ زدن سر یک تخته سنگ است.

نبوغ
من در کلاسم یک نابغه داشتم. او از همان کلاس اول دیر آمد و در کنار بقیه در حل کردن پازل شرکت نکرد. بنابراین از او خواستم کاری را که برای درس بعدی برای بقیه برنامه‌ریزی کرده بودم، انجام دهد - روی یک تکه کاغذ بنویسد که به چه چیزی علاقه دارد و به چه چیزی علاقه دارد. آن «نابغه» در نهایت دو یا سه خط نوشت: چیزی شبیه به این: «من پوچی هستی را درک می‌کنم.»

... خدای من، من یک لائوتسه و کوجیمای دوم در گروهم دارم که همه در یک نفر جمع شده‌اند ...
اساس هر برنامه نویسی روی ... پازل

در کمال تعجب، او در طول دو کلاس اول به سوالات مربوط به اصطلاحات به طرز درخشانی پاسخ داد، اما این تأثیر زیاد دوام نیاورد. این «نابغه» دیگر در کلاس‌ها شرکت نکرد و فقط دفعه بعد برای اولین تکلیف آزمایشگاهی خود حاضر شد که آن را با موفقیت به پایان رساند. شکست خورده به دلایل عینی. سپس، به دلیل غیبت، او به طور طبیعی بدهی‌هایی را انباشته کرد که، به اعتقاد او، من فقط مجبور بودم آن را، به اصطلاح، «به شیوه‌ای برادرانه» به حساب بیاورم..
عدم شرکت در کلاس‌ها و احساس خودبزرگ‌بینی کاذب، با اصول ثابت شرکت در کلاس‌های من در تضاد بود. «نابغه» فقط دو گزینه داشت: خود را اصلاح کند (مسیر مورد انتظار) یا کلاس‌ها را رها کند و به نمره «C» از دفتر رئیس دانشکده برای خلاص شدن از شر فرد اهمال‌کار امیدوار باشد.
خب، این «نبوغ» است... اینجا به چیزی «درخشان» نیاز است. این مرد جوان نمی‌توانست کار بهتری از نوشتن یک سخنرانی خشمگینانه پر از فحش و ناسزا خطاب به من در بحث عمومی گروه VK (جایی که من و همه دانشجویان دیگر گروه بودیم) انجام دهد.

هوم... ناامیدی.
چیزی که بیش از همه من را تحت تأثیر قرار داد این بود که قبل از اینکه اقدام تنبیهی مدیریت کالج تمام شود، او تصمیم گرفت از من عذرخواهی کند. برای چه؟ صادقانه بگویم نمی‌فهمم. تا آن زمان، مدت‌ها بود که از انتقاد، به خصوص چنین انتقادات رک و پوست کنده احمقانه‌ای، مصون شده بودم. شخصیت من تحت تأثیر قرار نگرفته بود، اما فرآیندها فرآیند هستند و به عنوان یک معلم، نمی‌توانستم جلوی گزارش آنها را بگیرم. همانطور که معلوم شد، در طول تحصیلش آنقدر شکایت علیه او جمع شده بود که این آخرین مورد بود. او اخراج شد. از سال آخر هنرستان فنی و حرفه‌ای.
شاید مدت زیادی بود که از طریق دوربین تفنگ تک‌تیراندازی مرا زیر نظر داشت، اما راستش را بخواهید، برایم مهم نیست.
ای نابغه، تو خیلی سنگدلی...

خاتمه
برای من شخصاً، تدریس یکی از روشنگرترین تجربیات بود. این به من کمک کرد تا دانش بنیادی برنامه‌نویسی‌ام را پس از اتمام دانشگاه تثبیت کنم. در تخصص انتخابی‌ام (و طیف تخصص‌های موجود) احساس اعتماد به نفس می‌کردم. نکته‌ی مهم این بود که «سرکش‌ترین گروه» نسبت به من احترام و دوستی ایجاد کردند - این بسیار ارزشمند است. من موفق شدم با نوآوران درونی آنها ارتباط برقرار کنم و سعی کردم به جای آن اولویت‌های فرمولی، حس واقعیت را القا کنم. حیف است که ما به نقطه‌ی «معماها» در کدنویسی نرسیدیم - جایی که همه باید یک قطعه کد بنویسند و با ترکیب تمام قطعات در یک قطعه، یک برنامه‌ی بزرگتر و کاربردی خواهیم داشت...
امیدوارم روزی هر کدام از آنها این حس را داشته باشند... اما فعلاً در زیر اسکرین شات هایی به همراه نقد و بررسی چند دانشجو پس از ۲ سال قرار داده شده است.

اساس هر برنامه نویسی روی ... پازل

هنوز برای نتیجه‌گیری در مورد موفقیت هر یک از آنها به عنوان برنامه‌نویس خیلی زود است، زیرا بیشتر این گروه در حال حاضر در دانشگاه مشغول به تحصیل هستند. زمان همه چیز را مشخص خواهد کرد.

امیدوارم این مقاله مفید بوده باشد. از مطالعه شما متشکرم!
موفقیت خلاقانه و روحیه مثبت، همکاران!

منبع: www.habr.com

خرید هاست قابل اعتماد برای سایت های دارای حفاظت DDoS، سرورهای VPS VDS 🔥 خرید هاستینگ معتبر با محافظت در برابر حملات DDoS، سرورهای VPS و VDS | ProHoster