সি ++ [বন্ধ] বুনিয়াদিগুলির সাথে লড়াই করা শিক্ষার্থীদের শিক্ষাদান


26

আমি কয়েক জন শিক্ষার্থীকে টিউটোরিং করছি যাঁরা তাদের প্রথম প্রোগ্রামিং ভাষার বুনিয়াদি: সি ++ শিখতে উল্লেখযোগ্য সমস্যায় পড়ছেন। আমি অনেক দুর্দান্ত এবং উজ্জ্বল শিক্ষার্থী জানি যারা ব্যর্থ হয়েছে বা তাদের প্রথম সিএস কোর্স বাদ দিয়েছে। আমি প্রত্যেককেই প্রশিক্ষণ দিচ্ছি সে ক্লাসে তার অভিজ্ঞতার অনুরূপ বিবরণ দেয়: প্রশিক্ষক খুব দ্রুত এগিয়ে চলেছেন, বক্তৃতাগুলিতে কিছুই বোঝা যায় না, ইত্যাদি। এই সিএস ক্লাসের আগে, এই সংগ্রামী শিক্ষার্থীদের বেশিরভাগ কম্পিউটারে ওয়ার্ড প্রসেসর, ওয়েব ব্রাউজার বা বিনোদনমূলক কোনও উপায় ছাড়া আর কোনও আগ্রহ প্রকাশ করেনি। কম্পিউটার একটি ব্ল্যাকবক্স যা কাজ করে, তবে কেন এটির সাথে গোলমাল?

আমার সেরা অনুমানটি হ'ল কম্পিউটার বিজ্ঞানের বিমূর্ততাগুলি পরিচিত ধারণার সাথে সংযোগ করতে তাদের সমস্যা হচ্ছে। এটি বলার জন্য, এই শিক্ষার্থীরা কীভাবে গণিত, জীববিজ্ঞান বা পদার্থবিজ্ঞান শিখতে পারে তা জানত তবে প্রোগ্রামিংয়ের ক্ষেত্রে এই কৌশলগুলি কার্যকর হয় না।

কারও কি কোন পরামর্শ বা পরামর্শ আছে? আমি যে শিক্ষার্থীদের সহায়তা করছি তারা এই শ্রেণিতে ব্যর্থ হওয়ার যোগ্য নয়। এটা পরিষ্কার যে প্রশিক্ষক এই ছাত্রদের শেখার স্টাইলটি বিবেচনা করছেন না। এটি বলার অপেক্ষা রাখে না যে প্রশিক্ষক তার শিক্ষার্থীদের ব্যর্থ করছেন।


2
কমেন্টারস: আপনার যদি একটি উত্তর থাকে তবে এটি একটি উত্তর হিসাবে ছেড়ে দিন: এটি কোনও মন্তব্য হিসাবে রাখবেন না। আপনার উত্তরটি ইতিমধ্যে যুক্ত করা থাকলে, এটি ভোট দিন up আপনি যদি এই প্রশ্নের বিষয় অন্যের সাথে আলোচনা করতে চান তবে চ্যাট ব্যবহার করুন

1
না? আমার অভিজ্ঞতা থেকে যথেষ্ট লোক রয়েছে যারা প্রোগ্রাম করেন এবং

উত্তর:


42

এমন কয়েকটি জিনিস রয়েছে যা ব্যবহারিকভাবে প্রতিটি শুরুর সাথে লড়াই করা হয়। শিক্ষার্থীরা কোড কীভাবে লিখতে হয় তা শেখার আগে তাদের কোড শিখতে হবে।

  • অপরিহার্য ভাষার ক্রমিক প্রকৃতি। লোকেরা বুঝতে সমস্যা হয় যে ক্রমানুসারে ক্রিয়াকলাপগুলি কার্যকর করা হয়, একটি সময়ে একটি আইটেম রেসিপির মতো। এটি থেকে উত্তরণের একটি উপায় হ'ল ডিবাগারের মাধ্যমে কিছু কোড দেখানো।
  • =সি-স্টাইল ভাষায় অ্যাসাইনমেন্ট অপারেটর ( ) অত্যন্ত বিভ্রান্তিকর। আপনি খুব সাবধানে ব্যাখ্যা করার যে প্রয়োজন a = 5মানে হলো "পরিবর্তনশীল নির্ধারিত 5 a, না " একটি 5 সমান "।
  • নতুনদের জন্য, ফাংশনগুলি কোডের কাঠামোগত ব্লক হিসাবে বর্ণনা করা নিরাপদ যেখানে অন্য ফাংশনগুলি যেতে পারে। এছাড়াও, নতুনদের বুঝতে বুঝতে সমস্যা হয় যে সি ++ তে ফাংশন আর্গুমেন্ট নাম দ্বারা নয়, আদেশ দ্বারা চিহ্নিত করা হয়।
  • বেশিরভাগ অপরিহার্য প্রোগ্রামিং ভাষার কিছু ঘোষণামূলক উপাদান এবং কিছু পদ্ধতিগত উপাদান থাকে এবং সি ++ এর ব্যতিক্রমও নয়। নিশ্চিত হয়ে নিন যে শিক্ষার্থী বুঝতে পেরেছে যে কোডের কিছু অংশ প্রোগ্রামটির কাঠামো বর্ণনা করে এবং অন্যান্য অংশ (ফাংশন) প্রোগ্রামটি কী করা উচিত তা বর্ণনা করে।
  • ডিবাগার সহ একটি প্রোগ্রামের মাধ্যমে পদক্ষেপ নেওয়া একটি অত্যন্ত গুরুত্বপূর্ণ এবং প্রায়শ-উপেক্ষিত শিক্ষণ সরঞ্জাম
  • এক্সপ্রেশন ধরনের আছে3+3একটি পূর্ণসংখ্যা, 3.5 + 3একটি দ্বিগুণ, "3" + "3"(সি # তে) একটি স্ট্রিং, x == 5 * 3 + 25বুলিয়ান (বা সি ++ তে পূর্ণসংখ্যা)। এই ধারণাটি দিয়ে শিক্ষার্থী পুরোপুরি আরামদায়ক হয়েছে কিনা তা নিশ্চিত করতে প্রচুর সময় ব্যয় করুন ।
  • পরিবর্তনশীল সুযোগ হ'ল এমন একটি জিনিস যা শুরুতে সর্বদা বিভ্রান্ত হয়। স্কোপ কীভাবে কাজ করে তা শিক্ষার্থীদের ব্যাখ্যা করুন এবং তারা নিশ্চিত হন যে একটি xস্কোপে xসংজ্ঞায়িত অন্য স্কোপে সংজ্ঞায়িত থেকে আলাদা ।
  • প্রতিটি পরিবর্তনশীল তার জীবদ্দশায় কমপক্ষে তিনবার উল্লেখ করা হয়: ঘোষণা, অ্যাসাইনমেন্ট (প্রায়শই ঘোষণা হিসাবে একই লাইনে করা হয়), খরচ। এর মধ্যে যদি কোনও অনুপস্থিত থাকে তবে কোথাও একটি ধারণাগত ভুল রয়েছে। একই কারণে, যদি আপনি কোনও কর্মক্ষম প্রোগ্রামটি বিশ্লেষণ করেন তবে আপনি ভেরিয়েবলের উদ্দেশ্যটি বের করার জন্য কোডটিতে সর্বদা এই তিনটি জিনিস সন্ধান করতে পারেন।
  • forলুপগুলি ব্যবহার করে whileপুনরুক্তির পর্যাপ্ত উদাহরণ দেওয়া না হওয়া পর্যন্ত লুপগুলি শেখানো উচিত নয় । শর্টহ্যান্ড সিনট্যাক্স বিভ্রান্তিকর, এবং এটি শিক্ষার্থীরা কেন কেবল whileলুপ ব্যবহার করতে পারে না তা ভেবে অবাক করে দেয় । forলুপের শর্তে লুপ বর্ণনা করে এমন একটি চিট শীট whileথাকা সহায়ক হতে পারে।
  • অ্যারে এবং পয়েন্টারগুলি শেখানো মোটামুটি সহজ তবে শেখার জন্য একটি দুঃস্বপ্ন। অন্য কথায়, এটি ক্লিক না করা পর্যন্ত অনুশীলনটি গুরুত্বপূর্ণ is
  • কোডটি পাঠ্য এবং একটি সংকলিত প্রোগ্রাম আসলে ধারণা করা যায় যে কোনও ফাইলটি কিছু প্রাথমিকের কাছে অধরা। সেগুলি শেলের মধ্যে .cpp, .h এবং বাইনারি ফাইলগুলি দেখানোর বিষয়ে নিশ্চিত হন।

সি ++ এর ওওপি উপাদানগুলি সম্পূর্ণ পৃথক পৃথক জন্তু এবং আমি একধরনের আশা করি প্রশিক্ষক সেখানে পাবেন না - কারণ ওওপি হ'ল ভূত থেকে ওওপি হতে নকশাকৃত ভাষা ব্যবহার করে সবচেয়ে ভাল শেখানো হয়। আমার অভিজ্ঞতায়, সি ++ এর মাধ্যমে ওওপি শেখানো কখনও ভাল হয়নি।


2
"ক্রম অনুসারে কার্য সম্পাদন করা হয় তা বুঝতে লোকেরা সমস্যা হয়"? আমি মনে করি এটি হ'ল কার্যত কারওই সমস্যা নেই (কেবলমাত্র লোকেরা যারা ইতিমধ্যে পদ্ধতিগত শুরু করার আগে কিছু কার্যকরী ভাষা শিখেছেন)। তবে আপনি যা বলছেন সে সম্পর্কে আমি একমত।
শে

3
ডিবাগারটির সাথে পদক্ষেপ নেওয়ার জন্য +1, সুতরাং তারা প্রোগ্রামটি নিজেই এবং এটির প্রয়োগের মধ্যে পার্থক্যটি উপলব্ধি করে।
মাইক ডুনলাভে

4
আপনি কি অবাক হবেন? গণিতটি বেশিরভাগ ক্ষেত্রে ঘোষিত হয়, সুতরাং বীজগণিত শিখেছে এমন প্রত্যেককেই অপরিহার্য ভাষাগুলি ফেলে দিতে পারে।
রে মিয়াসাকা

2
এই উত্তরটি কেবল "ধারণাগুলি ছড়িয়ে দেওয়া" বলে মনে হচ্ছে। ধারণাগুলি নিঃসন্দেহে সঠিক এবং অবশ্যই গুরুত্বপূর্ণ, তবে এইভাবে শেখানো রাস্তার নিয়মগুলি ছড়িয়ে দিয়ে কীভাবে গাড়ি চালাবেন তা শেখানোর চেষ্টা করার মতো like
রিওয়ালক

@ স্টারগাজের 12১২ রাস্তা পরীক্ষার চেষ্টা করার অনুমতি দেওয়ার আগে প্রত্যেকে রাস্তার নিয়মগুলি শিখেন। আমি "অনুশীলন কী" বা "সৃজনশীল হোন" বা "যুক্তিযুক্তভাবে চিন্তা করুন" এর মতো ঝোঁকযুক্ত ব্রড স্ট্রোক ধারণাগুলি উপস্থাপন করতে পারি তবে এই বিষয়গুলি সম্ভবত কোনও প্রশিক্ষকের কাছেই বেশিরভাগ শিক্ষার্থীদের কাছে সম্ভবত স্পষ্ট। প্রোগ্রামিংয়ের অগ্রদূত হিসাবে কেউ বিচ্ছিন্ন গণিত বা ভাষার তত্ত্বের মতো বিমূর্ত জিনিসও শিখিয়ে দিতে পারে, তবে এটি তখনই গুরুত্বপূর্ণ হয়ে ওঠে যখন যান্ত্রিকগুলি এতটাই জটিল যে একা স্বজ্ঞানের দ্বারা সমস্যাগুলি সমাধান করা যায় না। যত তাড়াতাড়ি বা পরে লোকদের জেন হওয়া বন্ধ করতে হবে এবং বিষয়বস্তু শেখানো শুরু করতে হবে ।
রে মিয়াসাকা

19

আপনি কি আগে প্রোগ্রামিং শিখিয়েছেন?

আমি সিএস এবং নন-সিএস মেজরদের চার বছর ধরে প্রোগ্রামিং শিখিয়েছি। প্রথম সেমিস্টারে আমার অভিজ্ঞতাটি আপনার মতো ছিল, যতক্ষণ না আমি কিছু জিনিস শিখি।

আমার কাছে যা শূন্যপদে সহজ মনে হয়েছিল তা প্রাথমিকভাবে মোটেই সহজ ছিল না।

ভাষা নির্বিশেষে, আপনাকে একটি মানসিক কাঠামো স্থাপন করা দরকার - যে বিষয়গুলি এত স্পষ্টত আপনি বুঝতে পারেন না যে আপনি সেগুলি জানেন, যেমন:

  • কম্পিউটারগুলি একবারে একটি কাজ করে। (যে কেউ বলেন যে তাদের মধ্যে সমান্তরালতা এবং পাইপলাইনিং রয়েছে, তারা চলে যান। শিক্ষার্থীরা কিছু জানতে পেরে ফিরে আসুন।) কম্পিউটারগুলি কেবলমাত্র বিভিন্ন সংখ্যক কাজ করতে পারে, এবং পূর্ববর্তীটি শেষ না হওয়া পর্যন্ত তারা একটি পদক্ষেপ শুরু করতে পারে না। আমি কেবল এটিই বলছি, কারণ কম্পিউটারগুলি অনেকগুলি কাজ করে বলে মনে হয় এবং তা তাত্ক্ষণিকভাবে করে দেয়, যে কোনও শিক্ষানবিশকে দেখে মনে হয় যে তারা একবারে সমস্ত কিছু করে, এবং আপনার মনও পড়বে।

  • চলকগুলি গুরুত্বপূর্ণ। এটি বুঝতে গুরুত্বপূর্ণ যে কোনও চলকের নাম এবং রান সময় এটির বিষয়বস্তু দুটি সম্পূর্ণ ভিন্ন জিনিস। নতুনরা এটির সাথে লড়াই করে। যদি আমি বলি "আপনার নাম ইনপুট করার জন্য একটি প্রোগ্রাম লিখুন এবং তারপরে আপনাকে হ্যালো বলুন", তাদের সনাক্ত করতে হবে যে তাদের নাম ধরে রাখার জন্য তাদের একটি ভেরিয়েবলের প্রয়োজন এবং তারা ভেরিয়েবলের জন্য একটি নাম চিন্তা করতে হবে এবং তারা প্রলুব্ধ হয় এটিকে নিজের নামে নামকরণ এবং "ইনপুট" এর অর্থ কী।

  • আপনি যে সময় প্রোগ্রামটি লেখেন / সম্পাদনা করেন এবং যে সময় এটি কার্যকর করে তার মধ্যে একটি বিশাল পার্থক্য রয়েছে। তাদের প্রথম অনুশীলনের সময়, তাদের প্রায়শই এটির স্মরণ করিয়ে দেওয়া দরকার।

আমি যে ভাষাটি ব্যবহার করেছি সেটি বেসিক ছিল, কারণ এটি শিক্ষাগতদের পক্ষে খুব সহজ। বেসিক প্রোগ্রামিংয়ের দক্ষতার একটি সেট আপ করার পরে অন্য ভাষাগুলিতে অগ্রসর হওয়া কঠিন নয়।

আমরা প্রায়শই বোর্ডে একটি প্রোগ্রাম লিখতাম এবং তারপরে "কম্পিউটার প্লে" করি। এটি হ'ল, বর্তমান স্টেটমেন্টের পাশে একটি এক্স রাখুন, ম্যানুয়ালি এটি করুন, তারপরে এক্সটিকে পরবর্তী বিবৃতিতে সরান। চলকগুলি বোর্ডে আয়তক্ষেত্র ছিল, যেখানে আমরা বর্তমান বিষয়বস্তু লিখব write যখন কোনও অ্যাসাইনমেন্ট ঘটে তখন আমরা এটিকে মুছে ফেলতাম এবং নতুন মান স্থাপন করতাম।

আমি যে কৌশলটি বিকাশ করেছি তা হ'ল 1000 মেমোরি অবস্থানের সাথে একটি সিমুলেটেড দশমিক কম্পিউটার, প্রত্যেকটি 4-সংখ্যার সংখ্যা ধারণ করতে সক্ষম। সেখানে "অপকডস" এর একটি ছোট সেট ছিল যেমন সঞ্চয়ী লোড করা, যুক্ত করা, সঞ্চয় করা, লাফানো ইত্যাদি I আমি তাদের এই "মেশিন ল্যাঙ্গুয়েজে" ছোট প্রোগ্রাম লিখি এবং তারপরে এটি কাজ করে দেখার জন্য একক পদক্ষেপ নিই। তারপরে, ভেরিয়েবল, জাম্পিং ইত্যাদির মত ধারণাগুলি ব্যাখ্যা করা আরও সহজ।

আশা করি এইটি কাজ করবে.


আমি যে সিমুলেটেড কম্পিউটার ধারণা পছন্দ করি। আপনার কি এটির জন্য একটি আনুষ্ঠানিক ভাষা আছে, বা আপনি কেবল সিউডোকোড / সরল ইংরেজিতে ধারণাগুলি নিয়ে আলোচনা করবেন?
রেই মিয়াসাকা

@ রেই: আমি (বেসিকে) সহজ নামক একটি সিমুলেটর লিখেছিলাম। এটি সমস্ত কীবোর্ড ইন্টারফেস ছিল। ব্যবহারকারীর মান "মেমরি" এ প্রবেশ করতে পারে; তারপরে তারা চাইলে এটি একক পদক্ষেপ নিতে পারে এবং প্রতিটি বিন্দুতে সঞ্চয়ী এবং মেমরি পরীক্ষা করতে পারে। আমি মনে করি এটা সত্যিই গুরুত্বপূর্ণ ছিল কারণ এটা পেয়েছিলাম তাদের করছেন তা শুধু এটা কথা বলছি না।
মাইক ডুনলাভে

Ahh ঠিক. ধন্যবাদ, আমার এমন কিছু চেষ্টা করা উচিত।
রে মিয়াসাকা

এটি আমার মতে # 1 উত্তর হওয়া উচিত।
রিওয়ালক

12

আমার মতে সি ++ প্রথম ভাষা হিসাবে ওভারকিল।

আমি যদি আপনি ছিলাম, এবং হাতে পর্যাপ্ত সময় ছিলাম, আমি পাইথন (বা অনুরূপ) ব্যবহার করে প্রোগ্রামিং এবং সিএস এর ধারণাগুলি প্রবর্তন করতে যাব।

যখন ধারণাগুলি স্পষ্ট হয়, অর্থাত্‍ যখন তারা মৌলিক ডেটা স্ট্রাকচার, ইন্ডিয়ারেশন, বেসিক অ্যালগরিদম ইত্যাদিতে স্বাচ্ছন্দ্য বোধ করে, আমি ধীরে ধীরে সি ++ প্রবর্তন করব এবং তারা খুব শীঘ্রই তারা ইতিমধ্যে যা শিখেছে তা সম্পর্কিত করতে সক্ষম হবে।


2
আমি সম্মত, তবে অধ্যাপকদের সাধারণত কোন ভাষাটি শেখানো উচিত, তার চেয়ে অনেক কম টিএ বেছে নেওয়ার অধিকার নেই।
রে মিয়াসাকা

4
পাইথনের বিষয়ে আমি একমত নই। আমি আমার প্রথম সিএস 101 ক্লাসটি সি ++ তে গিয়েছিলাম এবং তারপরে পাইথনের সিএস 101 পড়ানো একটি স্কুলে স্যুইচ করেছি। পাইথন শিক্ষার্থীরা এমনকি বেসিকগুলি নিয়ে এত বিভ্রান্ত হয়েছিল যখন আমরা সবাই একই সিএস 201 ক্লাস নিয়েছিলাম ... তবে সমস্ত সি ++ শিক্ষার্থী দক্ষ ছিল।
ওঘমাওসিরিস

@ ওঘমা ওসিরিস, সত্যই, পাইথন সম্পর্কে আমি যথেষ্ট পরিমাণে জানি না, তবে আপনি যা দেখেছিলেন তা হতে পারে একটি স্ব-বাছাই পক্ষপাতিত্বের প্রকাশ। সর্বোপরি, সি ++ হ'ল কিছু শিক্ষার্থী (বিশেষত প্রোগ্রামিংয়ের সবচেয়ে অনভিজ্ঞ শিক্ষার্থীদের জন্য) ভীতিজনক।
স্টিফান ব্র্যাঞ্জিক

@ ওঘমা ২০১২ এর ক্লাসটি কী ছিল? যদি এটি নিম্ন-স্তরের কিছু হয় তবে এটি সম্ভবত পূর্বশর্ত হিসাবে সি এর সাথে নিজস্ব শাখা হওয়া উচিত।
রে মিয়াসাকা

1
@ ওঘমাওসিরিস: হুম আমাকে আমার অবিশ্বাস্য বিষয়ে একটি ভিন্ন অভিজ্ঞতা ভাগ করে নিতে হবে, প্রথম ভাষা হিসাবে পাইথনটিতে স্যুইচ করা আমার সচেতনতা অবধি অনেক কার্যকর প্রমাণিত হয়েছে (প্রথমটি জাভা ন সি ++ ছিল)। আমি মনে করি না যে পৃথক অভিজ্ঞতাগুলি গণ্য হিসাবে গণনা করা হয় যে একটির চেয়ে ভাল এটি অন্যটি, এটি কখনও শেষ না হওয়া শিখা যুদ্ধ। যদিও আমি তর্ক করতে পারি যে পাইথনটি শুরু করার জন্য একটি দুর্দান্ত প্রোগ্রামিং ভাষা হতে পারে কারণ এটি আপনার পথে না যায়, এটি বেশিরভাগ প্রোগ্রামিং ভাষায়, যে অনেক শিক্ষার্থী পায়
এটিই আরও ভাল করে তোলে

4

আমি যা পরামর্শ দেব তা এখানে:

  1. এটি নির্ধারণের জন্য তাদের প্রয়োজনীয় সমস্ত বিবরণ দিন
  2. তাদের বিবরণ বোঝার চেষ্টা করার জন্য উত্সাহিত করুন
  3. যখনই তাদের প্রয়োজন হবে তাদের কাছে कॉम्प্যাক্ট ফর্মটিতে বিশদ রয়েছে তা নিশ্চিত করুন

মূলত আমি আপনাকে সিঙ্গল এ 4 পেপার তৈরি করতে পরামর্শ দেব যাতে প্রয়োজনীয় সমস্ত বিবরণ রয়েছে। কিছু ধরণের রেফারেন্স ম্যানুয়াল যাতে সমস্ত বিবরণ রয়েছে। কিছু বইও সহায়তা করতে পারে, উদাহরণস্বরূপ "দ্য সি প্রোগ্রামিং ল্যাঙ্গুয়েজ" -বুকটি প্রচুর পরিমাণে সহায়তা করেছিল কারণ এতে কমপ্যাক্ট আকারে সমস্ত প্রয়োজনীয় বিবরণ ছিল। তথ্য সংক্ষেপণ এ 4 পেপার তৈরিতে প্রয়োজনীয় অংশ যাতে সমস্ত বিবরণ রয়েছে।


3

প্রোগ্রামিং অন্যান্য সাধারণ ডোমেনগুলি থেকে একজন শিক্ষার্থীর মুখোমুখি হয় তার থেকে যথেষ্ট আলাদা। কলেজের আগে অনেক শিক্ষার্থী কেবল ক্লাসে মনোযোগ দিয়ে এবং সম্ভবত সহজ সমস্যা এবং বইয়ের পিছনের উত্তরগুলির সাথে কয়েকটি হোমওয়ার্ক অ্যাসাইনমেন্ট দিয়ে সফল হয়েছিল। এটি মুখস্ত করার প্রক্রিয়া সম্পর্কে আরও বেশি, তারপরে সেগুলি তৈরি করা। এটিও প্রথমবারের মতো অনেক শিক্ষার্থীর জন্য বারবার ভুল উত্তর পাওয়া যায় (সিনট্যাক্স ত্রুটি, যুক্তি ত্রুটি, সেগ ফল্টস ইত্যাদি)। প্রোগ্রামগুলিতে কাজ করার সময় এটি শিক্ষার্থীদের অনুপ্রেরণা নিষ্কাশন করতে পারে।

প্রোগ্রামিংয়ের মাধ্যমে কী চলছে তা সত্যই জানতে, তাদের প্রচুর অনুশীলন করা দরকার। প্রায়শই অবহেলিত কৌশলটি হ'ল তাদের মাতৃভাষা প্রথমে যাই হোক না কেন তাদের পিছু কোড লিখতে হবে। সমস্যাটির মোটামুটি বিস্তারিত সমাধান না পাওয়া পর্যন্ত তাদের এটিকে প্রসারিত রাখতে বলুন। তারপরে এটি বাস্তব কোডে অনুবাদ করার বিষয়টি।


3

যখন আমি কলেজে ছিলাম, তখন আমি অন্যান্য কোর্সের মধ্যে ইন্ট্রো টু প্রোগ্রামিং কোর্সের একজন শিক্ষক থাকতাম। আপনি যে সমস্যাটি বর্ণনা করছেন তা অস্বাভাবিক নয়। আপনার নির্দিষ্ট ভূমিকা কী তার উপর নির্ভর করে আপনার নিতে বিভিন্ন ধরণের পন্থা থাকতে পারে।

প্রথমত, যদি এটি ক্লাসে শিক্ষার্থীদের উল্লেখযোগ্য অংশগুলিকে প্রভাবিত করে এমন একটি বিস্তৃত সমস্যা হয়, যদি আপনার কাছে এটির অ্যাক্সেস থাকে তবে আমি শিক্ষার্থীদের কী ধারণাটি উপলব্ধি করতে ব্যর্থ হচ্ছে সে সম্পর্কে সুনির্দিষ্ট মতামত সহ কোর্স পড়ানো অধ্যাপকের সাথে যোগাযোগ করব, যাতে তিনি বা তিনি পদটিতে আবার আসার সাথে সাথে সেই উপাদানটির অতিরিক্ত পর্যালোচনা অন্তর্ভুক্ত করতে পারেন, বা ভবিষ্যতের শর্তগুলির জন্য পাঠ্যক্রমের উন্নতি করতে পারেন।

আপনি যদি আপনার ল্যাব সময় ছাড়াও কোর্সের জন্য একটি আলোচনার বিভাগটি পড়ান, তবে বক্তৃতাগুলিতে বিভ্রান্তিকর বিষয়গুলি ব্যাখ্যা করার জন্য এবং সেগুলি আরও দৃ concrete়তর করতে এবং নিশ্চিত হওয়াতে মৌলিক বিষয়গুলি বুঝতে পেরে এক দুর্দান্ত সময় হবে।

আপনি যদি এই শিক্ষার্থীদের সাথে একমাত্র সময় টিউটোরিং ল্যাবটিতে সময় কাটাচ্ছেন তবে আপনি এখনও এই সময়টি শিক্ষার্থীদের যে কোনও একটিতে বা একসাথে কয়েকজনকে শেখানোর জন্য ব্যবহার করতে পারেন, ধারণাটি তৈরি করার জন্য যে ব্লকগুলি তাদের প্রয়োজন এবং তাদের বাড়ির কাজ সম্পূর্ণ করুন।

তারা ক্লাসে এতটা হারিয়ে যেতে পারে তারা কোথায় থামবে এবং প্রশ্ন জিজ্ঞাসা করতে পারে তাও জানেনা। যদি এটি হয় তবে তাদের সাথে বেসিকগুলিতে ফিরে যান। শেষ অবধি তারা যখন বুঝতে পেরেছিল তখন তারা কোথায় ছিল? যদি তারা অনিশ্চিত হয়, বা "কখনই বোঝে না", আপনাকে হ্যালো ওয়ার্ল্ড ব্যাখ্যা করার জন্য শুরুতে ফিরে যেতে হবে, ভেরিয়েবল কী কী, কম্পিউটার তাদের "নির্দেশাবলীর" তালিকা কীভাবে গ্রহণ করে এবং কীভাবে চেষ্টা করে তার মতো জিনিস শেখাতে পারে সেগুলি যথাযথভাবে করুন, তবে কম্পিউটারটি আমাদের মতো "স্মার্ট" নয় তাই আপনাকে খুব আক্ষরিক হতে হবে এবং কম্পিউটার বোঝার জন্য ঠিক কিছু বলতে হবে, ইত্যাদি etc.

এটি আসলে লড়াই এবং হতাশার একটি বিষয় আমি অ-মেজর প্রোগ্রামিং কোর্সে বেশিরভাগ ঘন ঘন দেখেছি। শিক্ষার্থীরা কিছু কোড লিখেন। এটি "সম্পর্কে" ঠিক বলে মনে হয় তবে তারা এটি সংকলন করতে যায় এবং এটি একটি ত্রুটি দেয়, একটি অত্যন্ত রহস্যজনক ত্রুটি। এবং এতে কোন সমস্যা আছে তা তাদের কোনও ধারণা নেই। এবং কয়েক ঘন্টা তাদের কোড তাকান। তারপরে অবশেষে এটি নির্ধারণ করুন এমন কিছু যা তুচ্ছ মনে হয়েছিল, যেমন অনুপস্থিত আধা-কোলনের মতো, বা ভুল জায়গায় একটি ধনুর্বন্ধনী। তারপরে তারা এটিকে আবার সংকলন করতে যায় এবং এখনও ত্রুটি রয়েছে, এটি অন্য কিছু। তারা দ্বিতীয়বার ব্যবহার করার পরে তারা কোনও পরিবর্তনশীল নামটি আলাদাভাবে বানান। ইত্যাদি। সুতরাং তারা কোনও বন্ধু বা গৃহশিক্ষক বা কাউকে সাহায্যের জন্য জিজ্ঞাসা করে এবং তারা তাদের মাথার উপরের অংশের উত্তর দিতে পারে "ওহ কেবল এটি এখানে যুক্ত করুন এবং তারপরে এটি কার্যকর হবে।" সুতরাং তাদের অভিজ্ঞতা হ'ল প্রোগ্রামিং কিছুটা "রহস্যময়"

এটি টিউটর হিসাবে এমন একটি অঞ্চল, যেখানে আপনার সাহায্য করার জন্য অনেক জায়গা রয়েছে। তাদের হতাশার স্তরের উপর নির্ভর করে, তাদের কোডটি কেন কাজ করছে না তা নির্ধারণ করার জন্য তাদের কাছে আমার বিভিন্ন পন্থা থাকতে পারে। যদি তারা তা পাওয়ার মতো হয় তবে আমি তাদেরকে ইঙ্গিতগুলি দিতে পারি এবং তাদের নিজেরাই চিত্রিত করতে সহায়তা করার চেষ্টা করতে পারি। তবে যদি তারা হতাশাকে ছাড়ার জন্য তাদের দড়িটির শেষে থাকে তবে আমি প্রায়শই তাদের দু'জনকে ফ্রি উত্তর দেই এবং তারপরে কমপক্ষে তাদেরকে এমন প্রশ্ন জিজ্ঞাসা করার চেষ্টা করব যে "কেন এই পরিবর্তনটি আপনার প্রোগ্রামটি স্থির করেছে তা কি আপনি বুঝতে পারছেন? ? "

কিছু শিক্ষার্থীর জন্য, বিশেষত অ-মেজরদের জন্য, তাদের কাছে একটি ভাল প্রোগ্রামার হওয়ার জন্য বা প্রোগ্রামিং উপভোগ করার জন্য প্রয়োজনীয় বিশদ সম্পর্কিত পদ্ধতিগত মনোযোগ না থাকতে পারে। বিশদগুলিতে মনোযোগ দেওয়ার জন্য কৌশলগুলির মাধ্যমে আপনি এগুলি ধরে রাখতে পারেন, এবং সমস্যাগুলির সমাধানের পক্ষে পর্যাপ্ত পদ্ধতিগত হলেও যদি তা তাদের পক্ষে চ্যালেঞ্জ হয়।

তবে শিক্ষার্থীরা তাদের কোডটি "সঠিকভাবে" ইনডেন্ট করা সম্পর্কে পায়ুপথ-প্রতিবেদনশীল - তাই প্রায়শই, প্রোগ্রামাররা বাসা বাঁধা এবং স্কোপ নিয়ে সমস্যা তৈরি করে কারণ তাদের অ-ম্যাচিংয়ের ধনুর্বন্ধনী রয়েছে বা এর মতো কারণ তারা কীসের অধীনে বাসা বাঁধে তাতে মনোযোগ দেয় না। তাদের "আপনার প্রোগ্রামটি কখন সংকলিত হবে না তা যাচাই করার জন্য" বিষয়গুলির একটি চেকলিস্ট দিন, যেমন সমস্ত কোড সঠিকভাবে ইনডেন্ট করুন এবং ব্রেসগুলি মিলছে তা নিশ্চিত করুন, বিশেষত লাইন নম্বরটির আশেপাশে যেখানে প্রথম ত্রুটিটি দেখায় সেখানে সমস্ত লাইন শেষ হয়েছে আপ, ইত্যাদি

তাদের তাড়াতাড়ি সংকলন করতে এবং প্রায়শই সংকলন করতে শেখান। ন্যূনতম কঙ্কাল কোড (বলুন, হ্যালো ওয়ার্ল্ড), সংকলন / পরীক্ষা লিখুন। কয়েকটি লাইন যুক্ত করুন, আবার সংকলন করুন। ত্রুটিগুলি খুঁজে পাওয়া আরও সহজ যদি আপনি কেবল একটি ছোট বালতি পরিবর্তনের একটি ছোট বালতি না দেখেন।

কীভাবে ছোট সমস্যা সমাধানযোগ্য সমস্যার মধ্যে কোনও সমস্যা ভাঙতে হয় তা শিখতে তাদের সহায়তা করুন। পেশাদার প্রোগ্রামাররা হিসাবে আরও শক্ত সমস্যাগুলি সমাধান করার জন্য আমরা এটিই করি যা কীভাবে সমাধান করতে হয় তা আমরা জানি না। আপনি কীভাবে সমাধান করতে জানেন বা কীভাবে সমাধান করতে হয় তা শিখতে কিছু গবেষণা করতে পারবেন এমন কোনও বিষয় না পাওয়া পর্যন্ত আপনি এটিকে টুকরো টুকরো করে রাখছেন। "একটি কার্যনির্বাহী সমাধান পেতে আপনার কী পদক্ষেপ নেওয়া দরকার?" ঠিক আছে, প্রথমে আপনাকে কিছু কঙ্কাল কোড (হ্যালো ওয়ার্ল্ড) লাগবে। আপনি কীভাবে তা জানেন? হ্যাঁ, দুর্দান্ত, সুতরাং যখন আমরা কথা শেষ করেছি আপনি তা করেই শুরু করতে পারেন! তারপরে ইনপুট হিসাবে কোনও ফাইল পড়তে হবে। আপনি চতুর্থ অধ্যায়ে যে সম্পর্কে পড়া মনে আছে? আসলে তা না? হ্যালো ওয়ার্ল্ড চলার পরে আপনি কেন সেদিকে নজর রাখবেন না এবং দেখুন যে আপনি এই কাজটি করতে কতটা কাছাকাছি যেতে পারেন এবং আমাকে আবার ফোন করুন এবং আমি ' আপনি যখন আটকে থাকবেন তখন আপনাকে আরও কিছুটা সহায়তা করবেন। প্রথম কয়েকবার আপনার সমস্যা সমাধানের জন্য প্রয়োজনীয় পদক্ষেপগুলির জন্য কেবল তাদের একটি তালিকাবদ্ধ তালিকা তৈরি করা প্রয়োজন, যাতে তারা উদাহরণটি থেকে কীভাবে সমস্যাটি পচন করতে পারে তা শিখতে পারে।

তারা যদি ক্লাসে থাকা সমস্ত উপাদান না পেয়ে সমস্ত উপাদান পেয়ে থাকে, তবে তাদের ক্লাসে প্রশ্ন জিজ্ঞাসা করতে উত্সাহিত করুন, কারণ দশজনের মধ্যে নয় বার, তারা একমাত্র শিক্ষার্থী নয় যা বুঝতে পারে না, এবং অধ্যাপক সম্ভবত কোনও গুরুত্বপূর্ণ বিষয় নিয়ে কেবল গ্লস করেছিলেন।

যদি তারা একটি বাগের দিকে তাকিয়ে "ঘন্টা" ব্যয় করে তবে তা নির্ণয় করে না, এটি তাদের সময় নষ্ট, তারা এগুলি থেকে খুব বেশি শিখছেন না। প্রায়শই বাগগুলি অন্তর্দৃষ্টি সমস্যা হয় এবং এটি সমাধানের জন্য সঠিক অন্তর্দৃষ্টি নিয়ে আসে এবং এ জাতীয় সমস্যার জন্য তাদের কোনও নকশা নাও থাকতে পারে। আটকে যাওয়ার সময় অন্যান্য সাধারণ পদ্ধতির পরামর্শ দিন: ক্লাসের অন্য এক বন্ধুকে সাহায্যের জন্য জিজ্ঞাসা করুন (এটি করার প্রয়োজনে কিছু সহপাঠীর সাথে পরিচিত হন), তাদের বাড়ির কাজটি সময়ের আগে শুরু করুন যাতে তাদের থামার সময় রয়েছে, এবং পরে আসুন টিউটর ল্যাব এবং খোলার সময় প্রশ্ন জিজ্ঞাসা করুন, বা অধ্যাপকের অফিস সময় যান। যদি তারা ক্র্যামিং করতে অভ্যস্ত হয়, যা মুখস্তকরণের বিষয়গুলির জন্য ভাল কাজ করে, তারা হতাশার প্রাচীরে আঘাত করবে যখন তারা ' মুখোমুখি হওয়ার চেয়ে সমস্যা সমাধানের বিষয়ে যা প্রোগ্রামিংয়ের মুখোমুখি। কীভাবে তাদের পাঠ্যপুস্তক, স্ট্যাকওভারফ্লো ইত্যাদি থেকে সিনট্যাক্সের উদাহরণগুলি সন্ধান করতে হবে তা তাদের দেখান।

কোডটি যেখানে কাজ করা বন্ধ করে দেয় সেখানে কীভাবে সংকীর্ণ হবে তা তাদের শিখান। আপনি চালিত কোনও কিছুতে ফিরে না আসা পর্যন্ত স্টাফ মন্তব্য করুন এবং তারপরে আবার সেগফাল্ট না পাওয়া পর্যন্ত আস্তে আস্তে জিনিসটি আবার যুক্ত করুন।

এই ধারণাগুলি অনেকগুলি হ্যান্ডসআউটে রূপান্তরিত হতে পারে যদি সেগুলি অনেক বেশি আসে। কৌশলগুলি সাধারণত অংশ অধ্যাপকদের চকচকে করে - তারা সিনট্যাক্স, লুপ, অ্যারে, আই / ও ইত্যাদি কীভাবে লিখতে হবে তার অর্থশাস্ত্রের উপর তাদের সময় ব্যয় করছে তবে "চেষ্টা করার পরে আমি কী করব? আমার কোড চালানোর জন্য এবং এটি কেবল আমার উপর সংকলন বা ক্র্যাশ করে না? "

যখন ধারণাগত বিষয়গুলির বিষয়ে আসে, বিশেষত মৌলিক বিষয়গুলির মতো, "একটি পরিবর্তনশীল কী" বা "লুপটি কী?" বুঝতে না পারলে বাকি কোর্সের সাথে তাল মিলিয়ে চলতে তাদের বাধা দেবে। একটি বক্তৃতা-ভিত্তিক কোর্সে, অধ্যাপকের প্রতিটি প্রশ্নের উত্তর দেওয়ার বা লাইটবুলবটি প্রতিটি শিক্ষার্থীর জন্য যেতে সাহায্য করার জন্য সময় থাকতে পারে না। এবং প্রোগ্রামারিং শেখার জন্য টিউটররা কেন এত গুরুত্বপূর্ণ তা সেই অংশ। নির্দিষ্ট বিষয়টিকে কংক্রিট করার জন্য তাদের অতিরিক্ত উপমাগুলি সহ স্বতন্ত্র নির্দেশের প্রয়োজন হতে পারে।

আপনি যেহেতু সি ++ তে শিক্ষকতা করছেন, আমি কল্পনা করব এমন ক্লাসগুলি একটি বিমূর্ত বিষয় হিসাবে উপস্থিত হবে যা কিছু শিক্ষার্থী "পেতে" লড়াই করে। প্রায়শই ক্লাসগুলির বিমূর্ততা কিছু এলোমেলো বাস্তব বিশ্বের বস্তুর সাথে সম্পর্কিত উদাহরণগুলির সাথে শেখানো হয়, যেমন একটি "এটিএম মেশিন" এর মতো, এবং বাস্তব বিশ্বের বস্তুর সাথে উপমা তৈরি করা হয়। আপনার ভিতরে কতটা অর্থ রয়েছে তার উপর নজর রাখতে আপনার ভেরিয়েবল থাকতে পারে, আপনার পদ্ধতি রয়েছে যা নিয়মের মতো যা এটিএম মেশিনকে নির্দিষ্ট পরিস্থিতিতে কীভাবে প্রতিক্রিয়া জানাতে পারে ইত্যাদি ইত্যাদি। কখনও কখনও একটি উপমাটি কোনও নির্দিষ্ট ব্যক্তির জন্য "স্টিকস" থাকে যা , এবং অন্যান্য শিক্ষার্থীরা আরও ভাল একটি উপলব্ধি করতে পারে।

যখনই সম্ভব, তাদের জন্য ছবি আঁকুন। তারা যে কোডটি লিখছেন তা কী করে তার বড় চিত্রটি তাদের দেখতে সহায়তা করতে সময়ের সাথে কী ঘটে যায় তার ক্রম ডায়াগ্রামের মতো। ব্যবহারকারীরা এই বোতামটি ক্লিক করে। তারপরে প্রোগ্রামটির এক্স, ওয়াই এবং জেড করে সাড়া দেওয়া উচিত। পোস্ট অফিসে পিও বাক্সের গুচ্ছের মতো একটি অ্যারে আঁকুন যা প্রত্যেকটিতে কেবল একটি নম্বর থাকতে পারে এবং তীরের মতো পয়েন্টারগুলি বক্সের সম্মুখভাগে "ঠিকানার" দিকে ইঙ্গিত করে। প্রভৃতি


2

বাইরে প্রোগ্রামিং ভাষার জন্য সমস্ত দুর্দান্ত পছন্দগুলির মধ্যে এই কলেজটি সি নন-সিএস মেজরদের জন্য এর সিএস ক্লাস হিসাবে সি ++ ব্যবহার করে ?? প্রতিভাবান প্রশিক্ষকের হাতে, এটি দূরবর্তীভাবে অনুমেয় হতে পারে - তবে কেন এটি এত কঠোর করে তুলছেন?

আমি যখন আমার কলেজের ইনট্রো-সিএস ক্লাসে "পাস্কাল" শিখি তখন আমরা প্রথম 3 সপ্তাহ " কারেল রোবোট " এর সাথে কাজ করে কাটিয়েছি । এটি খুব সাধারণ স্যান্ডবক্স লোগোর মতো প্রোগ্রামিং পরিবেশ ছিল যেখানে পাস্কালে এটি করার আগে সমস্ত মৌলিক ধারণাগুলি (পুনরাবৃত্তি সহ) পুঙ্খানুপুঙ্খভাবে অনুসন্ধান করা হয়েছিল। "কারেল রোবট" -তে আপনি 2D স্পেসে একটি ছোট্ট সাধারণ কমান্ড ব্যবহার করে একটি রোবট নিয়ন্ত্রণ করেন। এটি শিক্ষার্থীদের একটি কার্যকর কংক্রিট ভিত্তি দেয় যা তারা পরবর্তী ঘটনার জন্য আঁকতে পারে।

সম্ভবত এখন আরও আধুনিক শিক্ষামূলক প্রোগ্রামিং ভাষা রয়েছে যা "কারেল দ্য রোবট" এর ভূমিকা পূরণ করে? আপনার শিক্ষার্থীদের জন্য সম্ভবত এখন খুব দেরি হয়ে গেছে।


অ্যালিস নামে আমাদের একই প্রোগ্রাম ছিল had
ওঘমাওসিরিস

এটি এলিস: "
en.wikedia.org/wiki/Alice_(software

@ ওঘমাওসিরিস অ্যালিসের লিঙ্কটি নষ্ট হয়েছে। পিছনে "url এ যোগ করা হয়েছিল
জুট করুন

হ্যাঁ, এটি শেষ না করে ')' কেটে ফেলা হয়েছিল।
ওঘমাওসিরিস

ব্যবহার করে দেখুন en.wikipedia.org/wiki/Alice_(software%29 : প্রাসঙ্গিক মেটা আলোচনা meta.stackexchange.com/questions/25706/...
Zoot

2

যা বলা হয়েছিল তা ছাড়াও, আমি ধরে নিই যে প্রাথমিকভাবে তাদের কেবল পৃষ্ঠের স্ক্র্যাচ করা দরকার, তাই জটিল জিনিস এড়াতে আপনার পাঠ্যক্রমটি অনুসারে উপযুক্ত করুন।

0-তাদের একটি সাধারণ সমস্যা দিন (বলুন কোনও এক্সপ্রেশনকে মূল্যায়ন করুন)।

এটি নির্ধারণের জন্য তাদেরকে সময় দিন।

তাদের উত্তর দিন 2।

উত্তর লাইন দিয়ে লাইনে যান 3

4-তাদের উত্তরকে তাদের প্রবৃত্তির সাথে তুলনা করতে বলুন

5-তাদের এই সমস্যাটি থেকে পাঠ নিতে বলুন

6-একই সমস্যাটিতে আরও একটি পদক্ষেপ যুক্ত করুন, আইএফ-এর বিবৃতি প্রয়োজন এমন শর্তটি বলুন

উপরোক্ত কাজটি বেশ কয়েকটি সমস্যার উপর 7-পুনরাবৃত্তি করুন। ততক্ষণে তারা ভাষার মৌলিক বিষয়গুলি এবং পরিবেশকে কীভাবে ব্যবহার করবেন তা উপলব্ধি করতে পারতেন। এর পরেরটি আসার জন্য প্রস্তুত থাকবে।

এছাড়াও,

-প্রতি 2 ক্লাস বা তারপরে বাড়িতে চেষ্টা করার জন্য তাদের বোনাসের সহজ সমস্যা রয়েছে

- প্রতিটি শিক্ষার্থীর সাথে ব্যস্ততা দেখুন যে কী বিষয়টি তাকে আরও এগিয়ে যেতে বাধা দিচ্ছে

সহজ রেফারেন্স উপাদান সরবরাহ করুন, জটিল বিষয় এবং জটিল বই ভুলে যান

তাদের প্রতিক্রিয়া ঘন ঘন এবং এটি ব্যবহার করুন

ক্লাসে আসার আগে তাদের পরবর্তী বিষয়ের জন্য প্রস্তুত করার জন্য তাদেরকে জিজ্ঞাসা করুন


2

সিএস 101 এর মধ্য দিয়ে যাওয়ার সময় কী আমাকে সাহায্য করেছিল তা কোড দেখার আগেও লজিকটি শিখছিল। আমরা সত্যের টেবিলগুলি এবং প্রিপজিশনাল ক্যালকুলাস দিয়েছিলাম কেবল তাই আমরা "এটি সত্য বা মিথ্যা" এবং "এটি এই বা এটির সমান" নয়।

যখন আমার জন্য সবকিছু ক্লিক করা হয়েছিল ঠিক তখনই ছিল। একবার যখন আমি বুঝতে পারলাম যে প্রোগ্রামিংটি মূলত তার মূলটিতে সত্য / মিথ্যা মানগুলি চালিত করে, তবে এটি সমস্ত তুলনামূলকভাবে সহজ হয়ে যায়।

এবং এটি এটি তৈরি করেছে তাই আমি কোন ভাষা ব্যবহার করছি তা বিবেচ্য নয়, যুক্তি সর্বত্র একই। সিনট্যাক্স বিভ্রান্তিকর হতে পারে তবে আমি বলতে পারি "ওকে, ওবজে সিআই এর মতো ক্লাসে বার্তা পাঠায় এবং সি ++ তে মেসেজ অন্যভাবে পাঠানো হয়েছিল। তবে অ্যালগরিদমটি একেবারেই বদলেনি।" প্রভৃতি


2

কোথাও একটি এসিএম বা আইইইই নিবন্ধ রয়েছে যা কেন প্রাথমিক (এমনকি মাঠে শুরু হওয়া সিএস গ্র্যাজুয়েটস) একজন সিনিয়র প্রোগ্রামারের পিছনে বসে তাদের সমস্যার কোড দেখার প্রয়োজন তার কিছু বিবরণে যায়।

পেশাদাররা প্রায়শই কঠিন সমস্যার জন্য যুক্ত হন। শিক্ষার্থীদের খুব প্রায়ই বলা হয় না। জুড়ি বাঁধার উপকারিতা (কীবোর্ড ঘুরিয়ে নেওয়া): ১. শিক্ষার্থীকে তাত্ক্ষণিকভাবে সে কী ভুল করছে তা জানিয়ে দেওয়া হয়। তাত্ক্ষণিক প্রতিক্রিয়া। ২. যখন শিক্ষার্থী শিক্ষককে দেখেন তখন শিক্ষার্থী সেই বিষয়গুলি তুলবে যে শিক্ষক কখনই সেটিকে দেখানোর জন্য ভাবেন নি।

একজন শিক্ষার্থীর খারাপ অভ্যাস গড়ে তুলতে বরং সেগুলি কুঁকড়ে যায়। (আমি # 2 এখানে # 1 টুসকি এবং ছাত্র প্রশিক্ষক দেখি হবে / টি এ প্রথম )

পাওয়ারপয়েন্ট স্লাইডগুলির একটি স্থির সেট সহ সিএস শেখানো কোনও প্রোগ্রাম লেখার অস্থায়ী প্রক্রিয়াটিকে ভাল ধার দেয় না। (এটা ঠিক আছে যে ক্রমগুলি ক্রমবর্ধমান ক্রিয়াকলাপগুলি লাইন অনুসারে আপনি করতে পারেন তবে সেগুলি সাধারণত বিশ্রী হয়))

লেখকরা কোথায় লেখা শুরু করবেন এবং কোথায় থামবেন এবং সংকলন করবেন তা জানতে হবে know আমাদের মস্তিষ্কগুলি বেশিরভাগ বাম থেকে ডান থেকে নীচে পর্যন্ত পড়তে তারযুক্ত হয়, তবে একটি প্রোগ্রাম সম্পূর্ণরূপে আপনার নিজের অ্যাডভেঞ্চার বইটি একক পৃষ্ঠায় ছড়িয়ে দেওয়া পছন্দ করে!

প্রায়শই একটি শিক্ষানবিস পুরো প্রোগ্রামটি অনুলিপি করে তারপরে সংকলন করে। এমনকি কোনও পেশাদার তার পক্ষে এটির প্রথম ক্র্যাক দিতে পারে, অনুধাবন করার আগে তাদের সমস্ত ফাংশনটি খালি রেখে দিয়ে প্রোগ্রামটি সংকলন করা উচিত, তারপরে পুনরাবৃত্তভাবে একটি কার্যকারী কঙ্কালের সাথে যুক্ত করা হয়েছিল।

এছাড়াও, সম্পর্কিত হ'ল হাস্যকর ধারণাটি যে কম্পিউটার এবং কেবল পেন্সিল এবং কাগজ ছাড়াই সিএস শেখানো উচিত। আমি অবাক হই যে কতজন নিযুক্ত প্রোগ্রামিং পেশাদাররা সত্যই এটি সর্বোত্তম উপায় বলে মনে করেন, বা যদি সিএস প্রশিক্ষকরা কেবল তারা কম্পিউটারের সাথে কাজ করতে পছন্দ করেন না বলেই করেন? ছবি থেকে কম্পিউটার অপসারণের যে কোনও প্রয়াস হ'ল একটি ব্যর্থতা। এটি করা প্রোগ্রামিংকে কম মজাদার এবং কম ইন্টারঅ্যাকটিভ করে তোলে should পাঞ্চ কার্ডে ডেটা enteringোকানোর এবং ধৈর্য ধরে অপেক্ষা করার দিনগুলি আমরা অনেক আগের। আজকের পেশাদার বিকাশকারীরা তাত্ক্ষণিক তৃপ্তির ভক্ত। ভাগ্যক্রমে বেশিরভাগ শিক্ষার্থীও আছেন।

স্পষ্টতই বিকাশ প্রক্রিয়া আগে এবং সময় পেন্সিল এবং কাগজ দিয়ে চমত্কার ডিজাইন অঙ্কন পেশাদার এবং শিক্ষানবিস প্রোগ্রামার উভয় জন্য একটি শক্তিশালী হাতিয়ার। এই "কিবোর্ডে হাত" এর মতো সময়ও জুটি বেঁধে দিতে হবে! হয়তো এখানে ছাত্রটিকে শিক্ষক দেখার আগে প্রথম দফায় চেষ্টা করতে দেওয়া বোধগম্য হতে পারে, যদিও এটির সাথে এটি সম্ভবত শিক্ষকের আসল চিন্তার প্রক্রিয়াটি দেখার উপযুক্ত।

সবশেষে, পেশাদার বিকাশকারী হট কীগুলি এবং সম্পাদনা কৌশলগুলি শিক্ষার্থীর শিক্ষার "শব্দ" নয়। সর্বাধিক গুরুত্বপূর্ণ, তারা জড়িত এবং ছাত্র আগ্রহী। দ্বিতীয়ত, তারা সাধারণ উন্নয়নের প্রয়োজনে সচেতনতা বাড়ায়। তদুপরি এই অনুশীলনের সর্বাধিক প্রাথমিক প্রায়শই কার্যকর করা সহজ তবে প্রাথমিকভাবে সুস্পষ্ট নয়। অল্প বয়স্ক কাঠের দোকানের একজন শিক্ষার্থী সহজেই একটি হাতুড়িটির নখর দিয়ে কীভাবে পেরেকটি সরিয়ে ফেলতে হয় তা শিখতে পারে, তবে বেশিরভাগ ক্ষেত্রে প্রথমে অবশ্যই জানাতে হবে যে নখটি কী। কিছু করা খুব সহজ জিনিস শেখানো ছাড়া শেখার জন্য তুচ্ছ নয়। এমনকি পেশাদার বিকাশকারীরা এই "কৌশলগুলি" সর্বদা ভুলে যান এবং রি-রিয়ার্টারিং সরঞ্জামগুলি যেমন অপ্রয়োজনীয় বা না পৌঁছানো কোডগুলি সরানোর জন্য পুনরায় ব্যবহারের সরঞ্জামগুলি থেকে উপকৃত হন


1
বিটিডব্লিউ, যদি কেউ আমাকে এই নিবন্ধটির শিরোনামে নির্দেশ করতে পারে তবে আমি এটির প্রশংসা করব!
ডেভিড

2

কম্পিউটার প্রোগ্রামিং প্রায়শই প্রথম কোর্সে একটি যেখানে স্নাতকোত্তর গ্রেডের জন্য সংশ্লেষণের জ্ঞানীয় দক্ষতা প্রয়োজন। এই দক্ষতা অন্য কাউকে দেওয়া খুব কঠিন। তারা তাদের কাছে উপলব্ধ সমস্ত উপাদান এবং তারা কীভাবে কাজ করে তা আপনি ব্যাখ্যা করতে পারেন। অন্যান্য উপাদানগুলি আরও দরকারী সামগ্রীতে সংশ্লেষণের জন্য অন্যান্য লোকেরা সংশ্লেষণ কীভাবে ব্যবহার করেছে তার অনেকগুলি উদাহরণ আপনি দিতে পারেন, তবে শিক্ষার্থীর মনে কিছু "ক্লিক" না করে আপনি কেবল অনেক কিছুই করতে পারেন।

আমার অভিজ্ঞতায় এটি সংশ্লেষণের দক্ষতা যা প্রায়শই এমন লোকদের অন্তর্ভুক্ত করে যারা প্রোগ্রামিং "পায় না"। তাদের ভেরিয়েবল, ফাংশন এবং লুপগুলির মতো অংশগুলির একটি নিখুঁত ধারণা রয়েছে তবে তারা প্রশ্নগুলি জিজ্ঞাসা করে, "এটি কেন কাজ করে তা আমি বুঝতে পেরেছি, তবে কীভাবে আপনি কীভাবে জানেন যে সেখানে একটি লুপ স্থাপন করার দরকার ছিল?" আপনি এটি না পাওয়া পর্যন্ত আপনাকে কেবল অনুশীলন করতে হবে।


2

অ্যারন হিলগাসকে ভুল জিজ্ঞাসা করতে, তাদের মনে করিয়ে দিন যে তারা বোকা নয়, এটি কেবল শক্ত। প্রোগ্রামিং আপনার মনকে প্রশিক্ষণ দেওয়া শক্ত, এটি সম্পূর্ণ অন্যভাবে চিন্তাভাবনা এবং যখন তারা সম্ভবত বেসিকদের সাথে লড়াই করছেন তারা সম্ভবত বেশ সচেতন তারা এবং এটি তাদেরকে হতাশ করে তুলবে making

আমি এটিকে তার প্রথম বছরের সিএস কোর্সেও ব্যর্থ হিসাবে বলছি, আমি অনেক আগে প্রোগ্রাম করেছিলাম এবং সমস্ত ধারণা (ভিবি, হ্যা বেবি) পেয়েছি তবে সি ++ কেবল আমার জন্য ক্লিক করবে না। আমি একেবারে বেসিকগুলিতে ফিরে গিয়ে সেখান থেকে এটি কাজ করে শেষ করেছি, তবে এটি ক্লিক করেছে, তবে কেউ যদি বলেছিলেন "আপনি বোকা নন, এটি ঠিক কঠিন" এটি আমার জীবনকে আরও সহজ করে তুলত।


0

আপনি বলেছিলেন "এই শিক্ষার্থীরা গণিত, জীববিজ্ঞান বা পদার্থবিজ্ঞান কীভাবে শিখতে পারে তা জানতে পারে তবে প্রোগ্রামিংয়ের ক্ষেত্রে এই কৌশলগুলি কাজ করছে না"।

এর একটি কারণ রয়েছে, প্রোগ্রামিংয়ের জন্য এমন কিছু প্রয়োজন যা অন্যান্য শৃঙ্খলাগুলির অগত্যা প্রয়োজন হয় না: সৃজনশীলতা এবং ... কল্পনা । "কর্মক্ষেত্রে জিনিসগুলি কল্পনা করার ক্ষমতা"। আমি ব্যক্তিগতভাবে খুঁজে পেয়েছি যে এই জাতীয় প্রয়োজনীয়তা আরও উপস্থিত রয়েছে (অবশ্যই সমস্ত কারণে ব্যতিক্রম রয়েছে) প্রযুক্তি স্কুল থেকে আসা লোকেরা (বিশেষত বৈদ্যুতিন এবং বৈদ্যুতিন মেকানিক্স): তারা "বৈদ্যুতিক প্রবাহ এবং কীভাবে তারা একে অপরকে নিয়ন্ত্রণ করে" কল্পনা করতে হয়, যেহেতু তারা পারেন না এগুলি দেখুন!) "খাঁটি বিজ্ঞান" থেকে (যেখানে সবকিছুই গণিতের দিকে ঘোরার মতো দেখায়)।

এই শেষ কেসগুলির জন্য, "ভিজ্যুয়াল জ্ঞান" সহায়তা করতে হবে। শুধু ধারণা এবং পাঠ্যের উপর দৃষ্টি নিবদ্ধ করা নয় (প্রকার -> সংকলন -> ত্রুটিগুলি যদি "ত্রুটিগুলি" পড়তে "সক্ষম না হয় তবে কাজ করতে পারে না দেখুন) তবে নকশাকালীন সময়ে (বিষয়গুলি কল্পনা করার উপায় সরবরাহ করার জন্য) মেশিনে কী চলছে তা অনুকরণ করে: একটি সাদা বোর্ড এবং রঙিন পোস্ট-এর সেট তৈরি করুন) এবং কার্যকর করার সময়।

এই শেষ অংশটি সফল হওয়ার জন্য, অপারেটিং সিস্টেমগুলির প্রয়োজনীয় ধারণা এবং "কীভাবে প্রোগ্রামগুলি একটি মেশিনে চলে" (এবং সেই মেশিনটি আসলে কী) অবশ্যই দিতে হবে। এবং একটি এনডি না ভয়ভীতি আইডিই দিতে হবে। আমি সাধারনত একটি "কাস্টমাইজড কোড-ব্লকস" এগুলিতে "বিভ্রান্ত হই না" - এ অনেকগুলি সরানো হয়। গ্রন্থাগারের সাথে সংযুক্ত হওয়ার জন্য অবজেক্ট তৈরি করতে উত্স দিয়ে তৈরি প্রকল্পের ধারণাটি কোনও ভাষা সম্পর্কে কথা বলতে শুরু করার আগে অবশ্যই দেওয়া উচিত।

সি ++ traditionalতিহ্যবাহী হ্যালো ওয়ার্ল্ডে একটি এন্ট্রি পয়েন্ট এবং একটি আউটপুট ডিভাইস প্রয়োজন। শিক্ষার্থীদের অবশ্যই এর সাথে আগে থেকেই পরিচিত হতে হবে। এই ধরণের কোর্সের সাফল্য খুব প্রথম দিনগুলির উপর নির্ভর করে। প্রোগ্রামিং কী তা বোঝার জন্য আপনাকে কম্পিউটারের মধ্যে কী ঘটে যায় তার একটি ভিজ্যুয়ালাইজেশন উত্সাহিত করতে হবে।
বাকিটি বাক্য গঠন (বিজ্ঞান) এবং বিমূর্তকরণ (কল্পনা)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.