Skip to content

Latest commit

 

History

History
273 lines (147 loc) · 36.8 KB

GENERAL.md

File metadata and controls

273 lines (147 loc) · 36.8 KB

نکات عمومی تی‌ای بودن

صحبت با دانشجو

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

  1. تحویل‌ پروژه و تمرین: در زمان‌های خاصی مثلا بعد از اتمام مهلت تمرین یا پروژه در زمان‌های مشخصی چند تی‌ای آنلاین می‌شوند و دانشجوها به هریک تمارین را تحویل می‌دهند.

  2. فیدبک دادن برای تمرین: در برخی تیم‌ها تی‌ای‌ها مثل منتوری دلسوز به دانشجو بابت بهبود تکلیف گذشته‌اش فیدبک می‌دهند.

  3. سوال و جواب عمومی: سوال و جواب عمومی معمولا در قسمت سوال و جواب کوئرا یا گروه discussion چنل اتفاق می‌افتد.

  4. سوالات دانشجو به شکل شخصی

تحویل تمرین و پروژه

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

با توجه به مورد گفته شده ،در این زمان معمولا برخورد سرد رسمی است (حتی اگر آشناییت قبلی با دانشجو وجود دارد)

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

زمان تحویل بسته به تمرین و پروژه متفاوت است اما معمولا از ۵ دقیقه تا نیم ساعت است.

فیدبک روی تمرین

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

مشکل دیگر این است که در زمان فیدبک دادن باید با لحن دوستانه فیدبک داد که با لحن جدی تحویل گرفتن در تناقض است.

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

پاسخ به دانشجو در گروه

برای پاسخگویی به سوالات دانشجویان می‌توان راه حل های مختلفی در نظر گرفت اما مهم‌ترین آن‌ها همین گروه درسی یا به شکل شخصی است.

در کل داشتن گروه برای دانشجویان که سوالات درسی‌شان را بپرسند بسیار توصیه می‌شود و معمولا جو درسی خوبی حاکم خواهد شد.

در گروه باید توجه داشت که متن خیلی صمیمانه نباشه چون گاهی باعث حساسیت دانشجویان دیگر می‌شود، مخصوصا اگر کمتر روی تی‌ای پاسخ دهنده شناخت داشته باشند.

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

پاسخ شخصی به سوال دانشجو

هرچقدر هم جو گروه صمیمی باشد، باز هم یکسری سوالات به شکل شخصی (حضوری یا پی‌وی) از تی‌ای‌ها پرسیده می‌شوند، حتی یکسری سوال هم هرگز پرسیده نمی‌شوند. دلیل این موضوع معمولا خجالت دانشجویان ورودی جدید یا ترس از مبتدی بودن سوال باشد در حالی که معمولا بهترین سوالات همین سوالات مبتدی هستند و بهتر است که در گروه مطرح شوند و جواب بگیرند.

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

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

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

حتی بهتر اینکه اگر سوال مربوط به تمرین‌ است در صورت تمرین هم اضافه شوند تا اگر از تمرین در آینده استفاده می‌شود سوال کامل باشد.

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

نکات پاسخ دادن به سوالات دانشجو

تشویق به سوال پرسیدن

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

توجه به احساسات و اعتماد به نفس دانشجو

اگر دانشجو ضمنی اشاره کرد که اعتماد به نفسش پایین است مثلا «من اصلا نمی‌تونم برنامه نویس بشم» یا «من که زبانم ضعیفه اصلا نمی‌تونم» یا «من دخترم/پسرم نمی‌تونم» حتما به موارد زیر دقت کنید:

  • در این موارد بهتر است اصلا سراغ خودکفا کردن دانشجو نروید بلکه پاسخش را کامل بدهید و حمایتش کنید.
  • به او حس مهم بودن بدهید و بگویید که می‌تواند سوالات بعدی‌اش را نیز از شما بپرسد یا مثلا اگر جوابتان مشکلش را حل نکرد باز هم بپرسد.
  • حتما جدا از جواب دادن به سوالش با او صحبت کنید و مثال‌های انگیزه آور (مثل مثال‌های خود استاد سر کلاس) بزنید.
  • بهتر است این مورد را با هدتی‌ای هم مطرح کنید، شاید این مشکل جمعی باشد، در این موارد باید در سطح تدریس یا تمرین‌ها تجدید نظر کرد.

چطور پاسخ دهیم

اینکه یک موضوع را چگونه توضیح دهیم نیازمند تجربه و البته کمی استعداد است اما موارد زیر را در نظر داشته باشید:

  • مشکل xy: یعنی مشکل x وجود دارد ولی در واقع سوال y را می‌پرسد. توضیح بیشتر
  • نشانه‌های یک پاسخ بد: لینک مطلب
  • حتما سطح دانشجو را در نظر بگیرید، این سوال یک دانشجوی قوی با سابقه‌ی برنامه‌نویسی است یا یک دانشجوی ناآشنا با برنامه‌نویسی
  • به نکات پنهان سوال دقت کنید: مثلا ممکن است دانشجو اشاره کند که اگر به جای vscode برنامه را داخل notepad++ بنویسد شاید باگش رفع شود، بهتر است در کنار پاسخ دادن به سوال، به این تصورات غلط هم پاسخ دهید.

تشویق به خودکفا شدن

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

سوالاتی که باید جواب دهیم و نباید به سرچ تشویق کنیم

اولین کاری که باید انجام دهیم این است که سوال را ارزیابی کنیم.

  • اگر سوال قابل سرچ نیست: آیا سوال به شکلی هست که قابل سرچ باشد، مثلا «نظر شما در مورد فلان چیز چیه» را نمی‌توان سرچ کرد.
  • سوالات از خود کامپیوتر (نه درس) سوالات خیلی ابتدایی که معمولا در درس مبانی به‌وجود می‌آیند مثلا در مورد فرمت .c فایل یا ناتوانی در rename کردن یا نصب کامپایلر. این سوالات به دلیل سواد ناقص کامپیوتری هستند و باید با حوصله به آن‌ها جواب داد.
  • سوالات پایه‌ای حتی اگر جوابشان در اینترنت هست: فرض کنیم کسی پرسیده که تابع یا thread چیست، این سوال بسیار پایه‌ای است، بله تعداد زیادی مطلب در این مورد وجود دارد اما کسی که نمی‌داند اصلا تابع چیست چطور قرار است با سرچ کردن مطالب فنی را بخواند و بفهمد که تابع چیست؟ برای این موارد بهتر است خودمان توضیح دهیم و همچنین از استاد بخواهیم تا حد امکان این مطلب را مرور کند یا مثلا به یک قسمت از کتاب ارجاع دهیم.
  • اگر سرچ این مبحث زمانگیر است: همیشه پیدا کردن مطلب خوب معادل سرچ کردن نیست، مثلا ممکن است موضوع مورد نظر به دلیل شباهت واژه‌ای اصلا قابل سرچ نباشد (مثلا معروف kill child with fork) یا برای فهم جوابش نیاز به چند سرچ دیگر باشد، می‌توان در این موارد توضیح داد یا حداقل مطلبی پیدا کرد که با اصطلاحات ساده‌تری پاسخ داده باشد.
  • اگر شخص سوال کننده زبانش ضعیف است: اگر سرچ کند ولی مطالب را متوجه نشود اصلا سرچ کردن چه فایده‌ای دارد؟ سعی کنید خودتان و سطح زبانتان را نبینید، حدود ۵-۱۰ درصد دانشجوها اصلا از زبان انگلیسی سر در نمی‌آورند. برای این دسته حتما توضیح کامل دهید.
  • اگر قبل از امتحان است: در رفع‌اشکال‌های نهایی قبل از امتحان بهتر است به سرچ ارجاع ندهیم و خودمان توضیح مختصری دهیم چرا که شخص زمان بسیار محدود و استرس زیادی دارد.

چطور به سرچ تشویق کنیم؟

فرض کنیم سوالی از ما پرسیده شده که همه موارد بالا را دارد، قابل سرچ است، فرض زبان انگلیسی قوی‌ای دارد و از مفاهیم پایه نیست، چگونه به او بگوییم که سرچ کند؟

  • مستقیم نگویید «سرچ کن». اینطوری نه تنها غرورش شکسته می‌شود بلکه هرگز هم سرچ نخواهد کرد.

  • عبارت «سرچ کردی چی اومد» می‌تواند خوب باشد، معمولا جواب می‌دهد که هنوز سرچ نکرده ام.

  • عبارت بهتر «بیا با هم سرچ کنیم» هم مناسبه.

  • پیشنهاد دادن کلیدواژه سرچ: همه از ابتدا خوره‌ی گوگل نیستند، برای سرچ کردن کلیدواژه خوب لازم است، یکی از کارهای خوب پیشنهاد دادن کلیدواژه‌ای است که با سرچ کردن آن به جواب می‌رسیم. بهتر از دلیل این انتخاب را هم بگویید.

  • فرستادن لینک سرچ‌شده‌ی گوگل: می‌توان علاوه بر مورد بالا، لینک یک سرچ در خود گوگل را برای دانشجوها فرستاد، مثلا سرچ کنیم void pointer in c و لینک همان صفحه را بفرستیم. مثلا: «ببین من سرچ کردم این‌ها اومد، به نظرم مورد ۱ و ۲ جالب میان»

  • فرستادن لینک نتیجه اما با گفتن کلیدواژه: یک راه دوستانه دیگر این است که بگوییم «ببین من این کلیدواژه رو سرچ کردم و به این لینک رسیدم، بخون ببین نظرت درموردش چیه»

  • در مجموع باید دقت داشت که اعتماد به نفس دانشجو را پایین نیاوریم و به نحوی به او بگوییم که خودش بدون پرسیدن می‌تواند پاسخ سوالش را پیدا کند.

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

چه سوالاتی را جواب ندهیم

قرار نیست همه سوالات را جواب دهیم، نشانه‌هایی از سوال‌های بد که نباید جواب دهیم می‌تواند موارد زیر باشد:

  • اگر سوال اصلا مربوط به درس نیست: البته می‌توانیم هم جواب دهیم ولی حتما باید بگوییم که در مبحث درس نیست و خارج از رابطه‌ی تی‌ای و دانشجو پاسخ می‌دهیم.

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

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

  • اگر پاسخ سوال را نمی‌دانیم: اگر پاسخ سوالی را نمی‌دانیم احتمالا به این معنی است که سوال جزو درس نیست، یا حداقل جزو بخش‌های مهم درس نیست. حتی اگر جزو بخش‌های مهم درس هم باشد نمی دانیم دیگر! بهتر است این موارد را خودمان هم سرچ نکنیم و مستقیم بگوییم که نمی‌دانیم، مثلا برود از یک تی‌ای با تجربه تر یا خود استاد بپرسد.

  • اگر سوال به ظاهر مرتبط به درس است اما در واقع نیست: فرض کنید دانشجوی مبانی میخواسته در مورد تابع بازگشتی بخواند اما به tail recursion رسیده و از شما پرسیده، شما هم یا می دانید که tail recursion چیست یا نمی‌دانید، اما مهم تر از جواب دادن، این است که به او بگویید این مبحث جزو درس نیست و لازم نیست نگرانش باشد، اگر دانشجوی قوی‌ای است خودش برود بازهم مطالعه کند، اما اگر ضعیف است آن را رها کند و به خود درس بپردازد.

  • اگر راهنمایی یا پاسخ مستقیم تمرین را خواستند: البته که برای حل سوالات تمرین برایشان سوال پیش می‌آید اما سعی کنید به شکل خصوصی و بدون هماهنگی مسئول تمرین‌ها در مورد تمرینی راهنمایی نکنید و البته سوال را برای کسی حل نکنید. بگذارید راهنمایی‌ها و حل سوالات (بعد از ددلاین) توسط هدتی‌ای و به شکل عمومی انجام شود.

  • زمانی که از ما دیباگ کد می‌خواهند (قسمت بعد)

کد دیباگ نکنید

قبول کردن این قسمت برای خودم هم سخت بود، هنوز هم که مجموعا ۱۱ ترم-درس ۳ واحدی تی‌ای بودم برایم سخت است. برای همین یک قسمت جدا باز کردم که حسابی موارد مختلف را مورد بحث قرار دهیم.

فکت‌های زیر را در نظر بگیرید:

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

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

البته بهانه برای کد دیباگ کردن هم زیاد است مثلا:

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

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

برای موردی که طرف به کامپیوتر شخصی دسترسی ندارد هم لطفا سرخود تصمیم نگیرید و کمک‌های غیرمعمول مثل نوشتن یک تمرین یا دیباگ کردن کد نکنید.

چند سوال و نکاتی که باید دقت کرد

سوال۱: آسان + خجالت

صورت سوال: سلام خوب هستین؟ ببخشید یه سوال دارم اما خجالت می‌کشم بپرسم. من می‌خوام تمرین رو حل کنم اما نمی‌دونم این علامته که ته خط‌ها می‌ذارن چیه. شما می‌دونید باید چیکار کنم؟

نکات پاسخ دادن:

  • در این سوال خجالت فرد سوال کننده مشهود است، از سوال پرسیدن واهمه دارد که می‌توان حدس زد به خاطر دانش بسیار پایینش باشد.
  • اعتماد به نفس سوال کننده نیز پایین است.
  • پاسخ به سوال بسیار ساده است اما نکته مهم در پاسخ دادن، دادن پاسخی همراه با بالا بردن اعتماد به نفس دانشجو است.
  • کار مهلکی که اکثرا در پاسخ دادن دچارش می‌شوند، دادن پاسخ با کلمات سنگین مثلا سینتکس و statement (و حتی بدتر، صبحت از گرامر زبان) است.
  • پاسخ این سوال باید به ساده‌ترین شکل ممکن داده شود ولی نه به صورتی که سوال ساده و پیش پا افتاده است.
  • یک نمونه پاسخ بسیار بد: این همون علامتیه که ته خط ها توی پایتون لازم نداره، پایتون خیلی زبان خوبیه. (اصلا به سوال نپرداخته)
  • یک نمونه پاسخ بد: روی کیبورد پیداش میکنی. (اعتماد به نفس دانشجو را ندیده گرفته و سربالا جواب داده.)
  • یک نمونه پاسخ بد دیگر: سمت راست حرف L روی کیبورده، اسمش سمی کالنه. (قسمت علمی جواب حداقلی است ولی بخش احساسی را در نظر نگرفته)
  • یک نمونه پاسخ نسبتا خوب: سلام، مرسی شما خوبی؟ سوال پرسیدن که خجالت نداره، بالاخره ما اینجاییم که سوال‌های شما رو جواب بدیم. خیلی خوبه که از الان داری برای تمرین‌ها وقت می‌ذاری. این ایرادا هم اول برنامه نویسی رایجن، منم اولش با کلید insert مشکل داشتم. توی زبان سی و سی پلاس پلاس آخر هر دستور یه سمی کالن (;) می‌ذاریم و بعد دستور بعدی رو می‌نویسیم تا کامپیوتر بفهمه چی داریم می‌نویسیم. (بحش احساسی خوب بود، بخش علمی تقریبا دقیق بود اما بهتر بود که جای کلید روی کیبورد هم اشاره می‌کرد.)

سوال ۲: سوال به ظاهر مرتبط ولی نامربوط به درس

صورت سوال: استاد سر کلاس مبانی در مورد تابع بازگشتی گفتن، بعد من خودم سرچ کردم به تیل‌ریکرژن رسیدم اما متوجه نشدم. می‌شه برام توضیح بدین؟ (tail recursion)

نکات پاسخ دادن:

  • این سوال فقط در مورد کلمه‌ی tail recursion پرسیده اما در بطنش چند تا نکته دیگه داره: دانشجو نگران درسشه، موضوع توابع بازگشتی رو متوجه نشده و براش سرچ کرده، مطالبی دیده که هیچ ایده‌ای در موردش نداره و ترسیده.
  • در واقع اینجا با یک xy problem طرف هستیم، مشکل ضعف در توابع بازگشتی است ولی به شکل این سوال به نمایش در آمده.
  • برای پاسخ دادن بهتر است اصلا وارد قسمت تکنیکی قضیه نشویم، بلکه بگوییم این جزو مباحث درس نیست و در درس ساختمان داده می‌خونید.
  • جدا از پاسخ دادن به خود سوال، حتما باید به جوانب فرعی پرداخت: درمورد تابع بازگشتی سوال داری؟ میخوای مفاهیمش رو با هم مرور کنیم؟ می‌خواستی تمرین رو حل کنی؟
  • شاید بگویید دانشجویی که این را پرسیده قوی است و برای تقویت خود پرسیده: نه. اگر قوی بود می‌دانست این مربوط به درس نیست، می‌توانست خودش جست‌وجو کند و اینقدر مطالعه کند تا موضوع را بفهمد، اگر قوی بود با حالت ناامیدانه جمله‌بندی نمی‌کرد و البته به استاد سر کلاش اشاره نمی‌کرد. مثلا جمله‌بندی یک دانشجوی قوی: سلام، من می‌خواستم در مورد تابع بازگشتی بیشتر بدانم، به تابع tail recursive رسیدم اما خیلی متوجه نشدم، به نظرتون ارزش داره بیشتر وقت بذارم و بخونمش؟
  • در مجموع بهترین جواب به این سوال این است که بگوییم جزو مباحث درس مبانی نیست و خیال دانشجو را راحت کنیم.
  • اگر موضوع را بلد نیستیم چیکار کنیم؟ با فرض اینکه خودتان هنوز ساختمان داده نگذارنده‌اید و این مورد برایتان تازگی دارد می‌توانید فقط بگویید که من بلد نیستم، پس نشون میده جزو مباحث درس نیست و جای نگرانی نداره. البته می‌توانید برای خودتان سرچ کنید ولی چیزی را که با سرچ و به سختی متوجه شده‌اید را توضیح ندهید.
  • اگر موضوع را بلد هستیم و می‌دانیم مربوط به چه درسی است فقط می‌توانیم بگوییم در ترم ۳ درس ساختمان داده قرار است توضیخ داده شود.
  • اگر اصرار داریم که توضیح دهیم: با کلمات خیلی ساده توضیح دهیم مثلا: یکسری از توابع بازگشتی هستند که با هربار صدا شدن، توی stack فضای جدیدی نمی‌گیرند و از همون فضای قبلی استفاده می‌شه. این‌ها در اصل باید یه خاصیتی داشته باشند، میتونی تو این لینک بخونی..

سوال مبتدی + تله‌ی دیباگ

صورت سوال: من فکر کنم وی‌اس‌کدم خراب شده. هر کدی که اسکن‌اف داره رو اجرا می‌کنم بهم سگمنتیشن فالت میده. باید چیکار کنم؟ می‌تونم از دِوسی‌پلاس‌پلاس استفاده کنم؟ دوستام میگن خیلی خوبه. (dev cpp)

نکات پاسخ دادن:

  • مشخصا دانشجوی تازه‌کاری است و فرق کامپایلر و ide و ادیتور و کد را نمی‌داند، پس باید سطح پاسخ را بسیار پایین بیاوریم.
  • اینجا یک xy problem وجود دارد، مشکل درواقع & داخل scanf است اما دانشجو به vs code و نه حتی کامپایلر ایراد می‌گیرد.
  • برای پاسخ دادن باید به این نکته اشاره کرد که یک کد در هر سیستمی برود و با هر کامپایلر و ide‌ای کامپایل شود درست و غلط بودن آن فرقی نمی‌کند (با کمی تساهل البته!)، مثلا اگر با dev cpp هم کامپایل شود مشکل حل نمی‌شود.
  • می‌توان مقایسه کوچکی بین vs code و dev cpp داشت و گفت که موضوع سلیقه‌ای است اما بهتر است هم‌سنگ با باقی دانشجوها از همین ابزار استفاده شود.
  • خوب است در مورد سگمنتیشن فالت بسیار مختصر توضیح داد اما نباید وارد پوینتر شد (دانشجو مبتدی است) مثلا: دو جور ارور داریم، زمان کامپایل و زمان اجرا، حالا این مشکل شما زمان اجراست، یعنی برنامه توی یکی از خطهایی که داره اجرا میکنه به مشکل میخوره، این مشکل اینقدر بزرگه که نمیتونه اجرا بشه و بسته میشه.
  • آیا دیباگ کنیم یا مشکل را بگوییم؟ اکیدا نه. درست کردن مشکل به سادگی گفتن «کافیه قبل از اسم متغیر & بذاری» قابل حله اما این کار را نمی‌کنیم. بلکه دیباگ کردن را یاد می‌دهیم، مثلا اینکه اگر همه scanfها مشکل دارن، شاید داری scanf رو اشتباه می‌نویسی، میخوای کدت رو با اسلاید‌ها چک کنی؟
  • چرا در مورد پوینتر توضیح نمی‌دهیم؟ چون دانشجو بسیار تازه‌کار است و هنوز فرق کامپایلر و IDE را نمی‌داند، دیباگ هم بلد نیست و در اولین قسمت برنامه نویسی مانده، قطعا هرچقدر هم ساده و خوب توضیح دهیم متوجه نمی‌شود، البته در حال حاضر به کارش هم نمی‌آید.

سوال فلسفه‌ای

صورت سوال: من دیشب سایز‌آف یه بولین رو گرفتم، گفت یه بایت، خب مگه بولین توی یه بیت جا نمیشه؟ چرا ۱ بایت رو اشغال می‌کنه؟

نکات پاسخ:

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

سوال فلسفه‌ای + بعد اعتماد به نفسی

صورت سوال: چرا کامپیوترها اینقدر خنگن؟ من یه آرایه ۱۰ تایی دارم خونه آخرش چرا ۹ئه؟ من اصلا نمی‌تونم برنامه نویس بشم.

نکات پاسخ دادن:

  • مهم‌ترین قسمت این سوال عبارت «من نمی‌تونم برنامه نویس بشم» است، باقی سوال فقط یک نشانه‌است که اعتماد به نفس دانشجو را گرفته.
  • در واقع اصلا این دانشجو سوال ندارد، همانطور که مشخص است خودش می‌داند که خانه آخر آرایه ۱۰ تایی ۹ است، می‌تواند یک توجیه ساده مثلا اینکه «قرار داد کردن» یا «اینطوری برا کامپیوتر ها ساده تره» مناسب باشد.
  • واحب است به این نکته پرداخته شود که کامپیوترها واقعا خنگ و با مشکلات خاص خودشان هستند، ولی یک ایراد کوچک دلیل نمی‌شود که دلسرد شویم و برنامه‌نویسی را کنار بگذاریم.
  • یک پاسخ بد: چون ما اینجا بر خلاف همبشه که شمارش رو از 1 شروع میکردیم ، از 0 شروع میکنیم . یعنی یه آرایه اگه 10 تا خونه داشته باشه شمارش از 0 شروع میشه و وقتی 10 تا ازش بریم جلو به 9 میرسیم . پس آرایه خونه 10 ام نداره . (به بعد احساسی اشاره نکرده)
  • یک پاسخ نسبتا خوب: اینم یه جور دستور زبانه دیگه که به جای اینکه شمردن از یک شروع بشه از صفر شروع میشه و وقتی میرسه به نه تعدادش ده تا میشه زبون زبون کامپیوتر اینجوریه بعدشم ببین این یه زبون کاملا جدیده برات مثه اول دبستان که تازه داری الفبا یاد میگیری یکم سخته و باهاش سخت همراه میشی اینم همون جوریه یه هفته بگذره اوکی میشی (مثال می‌توانست دقیق تر باشد)
  • یک پاسخ نسبتا خوب دیگر: والا ما هم موندیم چرا این کارو کردن :دی ربطی به برنامه نویس بودن کسی نداره. کسایی هستن که برنامه نویس حرفه ای شدن و دارن کامپیوترا رو واسه اینکه به جای اینکه از یک شمردنو شروع کنه، از صفر شروع میکنه تو آرایه ها، مسخره می‌کنن. (زیادی غیرفنی است و شخص را برای اینکه در آینده دلیل واقعی را بفهمد دچار اشکال می‌کند.)