আমি কীভাবে কার্গো-কাল্ট প্রোগ্রামিং মনোভাব মোকাবেলা করতে পারি?


257

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

তারা সমস্যার সারমর্ম বিবেচনা না করে পূর্ববর্তী, অনুরূপ-দৃষ্টিভঙ্গি অ্যাসাইনমেন্টগুলি থেকে কোড অনুলিপি করে পেস্ট করে।

এই শিক্ষার্থীদের আরও আত্মবিশ্বাসী করার জন্য কি কিছু অনুশীলন বা উপমা রয়েছে যা তারা লেখার প্রতিটি অংশের কোডের গঠন এবং অর্থ বুঝতে পারে এবং করা উচিত?


8
মন্তব্যকারী: মন্তব্য এখানে একটি উত্তর ত্যাগ করবেন না। আপনার নিজের উত্তর লিখুন। মন্তব্যগুলি প্রশ্নের বিভিন্ন সম্ভাব্য উত্তরগুলি আলোচনার স্থান নয়: হয় আপনার পরামর্শটির উত্তর হিসাবে প্রকাশ করুন বা প্রথমে এটির সাথে চ্যাট করার জন্য নিন।

50
যখনই একাডেমী এখানে আসবে - আমি আমার ভবিষ্যতের জন্য উদ্বিগ্ন হয়ে পড়েছি ... আমি কেবল কল্পনা করেছিলাম যে বোয়িং 7-২৮-- এবং টার্বাইনরা 200,000 আরপিএম-এ স্পিন ঘুরিয়েছে আপনার সবেমাত্র পাস করা শিক্ষার্থীদের মধ্য দিয়ে সি-তে লেখা কন্ট্রোল সফ্টওয়্যারটিতে চলছে .. আমি যাই হোক না কেন।
বেন ডিমট

67
আপনি কি তাদের কয়েকবার ব্যর্থতা বিবেচনা করেছেন, সবাই সফ্টওয়্যার বিকাশের জন্য ছাঁটাই না! তারা সব বিশেষ স্নোফ্লেক নয়!

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

9
এরিক লিপার্টের এই বিষয় সম্পর্কে অনেক কিছু বলার আছে। এবং আমি সম্ভবত যতটা পারি তার চেয়ে অনেক বেশি মার্জিত এবং সংক্ষিপ্ত উপায়ে: ব্লগস.এমএসএনএন
বি

উত্তর:


120

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

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

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

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

হালনাগাদ

বিলি ওনিলের একটি মন্তব্য থেকে প্রতিক্রিয়া:

"ধারাবাহিক অনুশীলনের" সমস্যাটি হ'ল যে সমস্ত শিক্ষার্থীদের পূর্বের অনুশীলন নিয়ে সমস্যা রয়েছে তারা সমস্ত অনুশীলনের জন্য সম্পূর্ণ স্ক্রুযুক্ত।

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

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


আমি এই সুন্দর উত্তরের সাথে একটি সাধারণ ওয়েবসাইটের একটি লিঙ্ক যুক্ত করব, যে, আইএমএইচও কোর্সের পরিপূরক হিসাবে সেট করা উচিত: http://projecteuler.net/ কোডের জন্য তাদের ক্ষুধা জাগ্রত করার জন্য এই ওয়েবসাইটটি। এতে ক্রমবর্ধমান অসুবিধাজনিত সমস্যা রয়েছে যা তাদের পছন্দ মতো ভাষা দিয়ে সমাধান করতে হবে। প্রথমত, এটি আসক্তিযুক্ত, এবং এটি প্রতিযোগিতাও উত্সাহ দেয়: আপনি তাদের অ্যাকাউন্টগুলির মাধ্যমে তাদের অগ্রগতি অনুসরণ করতে পারেন, তারা এটি করতেও পারেন।
নিকোলাস সি।

142

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

(এটি অন্যায় করুন || পরীক্ষা নিরীক্ষা করুন) == (গ্রেড এন্ড অ্যান্ড ওয়েস্ট টাইম ব্যর্থ)

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

এটি মোকাবেলা করার জন্য আমার পরামর্শগুলি এখানে:

  1. বব রস পদ্ধতিটি ব্যবহার করুন: তাদের কাছে প্রমাণ করুন যে নতুন করে বনাম প্রতিলিপি এবং আটকানো শুরু করা উভয়ই সম্ভব এবং দ্রুত। ক্লাস চলাকালীন তাদের চোখের সামনে নতুন প্রোগ্রাম তৈরি করুন - সত্যই তাদের দেখান যে প্রোগ্রামিং কোনও চিত্র আঁকার মতো হতে পারে।
  2. সৃজনশীলতার প্রয়োজন এমন কার্যাদি সরবরাহ করুন । উদাহরণস্বরূপ, প্রতিটি ছাত্রকে তাদের পুরো ডেটা কাঠামো তৈরি করতে হবে (পুরো চিঠিটি ব্যবহারের জন্য কাগজে নিজের চিঠিয়াখানা, পোষা প্রাণীর দোকান, টাউন, কলেজ ইত্যাদি তৈরি করতে প্রয়োজনীয় জিনিসগুলি কী)। অ্যাসাইনমেন্ট # 2 এই কাঠামোগুলিকে শ্রেণি বা বস্তু ইত্যাদিতে রূপান্তর করতে পারে Bas মূলত, তাদের বিমূর্তভাবে চিন্তাভাবনা করার জন্য প্ররোচিত করুন - সৃজনশীল হওয়ার জন্য তাদের পুরস্কৃত করুন, এবং তারপরে তাদের সৃজনশীলতাকে কম্পিউটার প্রোগ্রামে পরিণত করার জন্য প্রতিদান দিন।
  3. সম্ভাব্য কমপক্ষে সিনট্যাক্স ব্যবহার করুন। ক্লাস এবং ভাষার সিনট্যাক্স তৈরির মতো বয়লারপ্লেট স্টাফ প্রোগ্রামিংয়ের সূচনায় এতটাই প্রচলিত যে এটি প্রায়শই শিক্ষার্থীদের ভ্রান্ত করে তোলে যে সমস্ত প্রোগ্রামিং কেবল কোঁকড়ানো ধনুর্বন্ধনী কোথায় রাখবে তা বুঝতে পারে - তারা বুঝতে পারে না কোঁকড়াটির মাঝখানে কী রয়েছে ধনুর্বন্ধনী যেখানে সৃজনশীলতা প্রবাহিত হয় । একটি সহজ ভাষা বাছুন, এবং এখনও কিছু অনুলিপি এবং পেস্ট করতে চান এমন শিক্ষার্থীদের জন্য নমুনা ফাইলগুলি (যেমন একটি খালি শ্রেণির ফাইল) সরবরাহ করুন। কোর্সটি এগিয়ে যাওয়ার সাথে সাথে আপনি সিনট্যাক্স এবং সংকলনযোগ্য কার্যাদি সম্পর্কে ধীরে ধীরে আরও কঠোর হয়ে উঠতে পারেন।

এটি হওয়া উচিত &&- যদিও আমি সন্দেহ করি এটি বিটওয়াইজ অপারেশন হিসাবেও সফল হতে পারে।
tvanfosson

আমি ডেটা দেখতে কেমন তা জানি না, তবে হ্যাঁ কিছুটা অপারেশন হ'ল আমার উদ্দেশ্য intended ভাল ক্যাচ :-)
কেভিন ম্যাককর্মিক

3
"কোঁকড়া ধনুর্বন্ধনীগুলির মাঝখানে যা সেখানে সৃজনশীলতা প্রবাহিত হয়" ==> ওফ সে তখন সেগুলিকে পাইথন শেখায় না ...
অলিভিয়ার পনস

3
শিক্ষককে শেখার পরিবর্তে 'সঠিক' উত্তর দেওয়ার চেষ্টা করার সাথে আরেকটি সমস্যা হ'ল লোকেরা প্রায়শই এটি শিখছে বলে মনে করে। উদাহরণস্বরূপ কম
রাইটিং

6
এবং তারপরে আমি এখানে কয়েকটি খুশি আধা-কলোন যুক্ত করতে যাচ্ছি ...
ভার্চুসিমিডিয়া

44

আমার মনে আসা বেশ কয়েকটি বিষয়:

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

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

  • আপনি যদি চান তবে কিছু ইস্টার ডিম কোডে রাখতে পারেন। দু'একটি লাইন যা কিছু উপকারী বা এমনকি সমস্যা সম্পর্কিত কোনও কিছুই করে না। তাদেরকে একটি ইঙ্গিত দিন যে এই জাতীয় লাইন বিদ্যমান এবং যারা মুছে ফেলে তাদের অতিরিক্ত পয়েন্ট দিন grant

  • তারপরে এবং তারপরেই আপনি তাদের নিজেরাই স্ক্র্যাচ থেকে কোনও কোডের টুকরো লেখার জন্য একটি অ্যাসাইনমেন্ট দিতে পারেন। এই মুহুর্তে তাদের কোডটি আসলে কী তা সম্পর্কে আরও ভাল বোঝা উচিত। তারা নিজেরাই এটি করা কিছুটা সহজ খুঁজে পেতে পারে।

মূল ধারণাটি হ'ল প্রোগ্রামিংটি কেবল কোড লেখার নয়, এটি পড়তেও থাকে। পড়ার কোডও শেখানো উচিত।


4
ইস্টার ডিমের ধারণাটি দেখে মনে হচ্ছে এটি টেস্টিং / যাচাইকরণ শেখানোর একটি ভাল উপায়। "চুক্তির কোনও ভঙ্গ না করে" ওয়াটের সরানো যাবে? "
নিল এন

3
পঠন কোডে +1। আমি স্বজ্ঞাত অনুমান করে এবং এরপরে এটি প্রমাণ করার চেষ্টা করে অনেক লোককে বাগ ঠিক করতে দেখি। আমি দেখতে পেলাম যে কোডটি পড়াটি এমন ক্লু সরবরাহ করে যা আপনাকে সঠিক সমাধান দেয়। এটি সুস্পষ্ট মনে হয়, তবে আমি এটি দেখতে অনেকটা অবহেলিত।
ক্রিস

38

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

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

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

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


"যখন আমি প্রথম প্রোগ্রাম শিখি, তখন আমি যা করছিলাম তা কম্পিউটারের পেছনের কোডের পৃষ্ঠাতে টাইপ করা ছিল! ম্যাগাজিন!": ছোট খেলনা প্রোগ্রাম চালানোর জন্য কমোডোর ভিক ২০ ব্যবহার করার সময় এটি আমার খুব প্রাথমিক পর্যায়ে ছিল এবং এটি শীঘ্রই হয়ে উঠল খুবই বিরক্তিকর. আমি শীঘ্রই বিপরীত মনোভাবটি বিকাশ করেছি: নিজেকে এমন কোনও কোড লিখুন যা আপনি অন্য কোথাও থেকে অনুলিপি করতে পারেন, অন্যথায় আপনি কখনই নিশ্চিত হন না যে কোডটিতে কী চলছে।
জর্জিও

আমাদের একজন শিক্ষক তিনি আমাদের দিয়েছিলেন এমন একটি এসেম্বলারের প্রোগ্রামটি অনুলিপি করার জন্য আমাদেরকে দায়িত্ব দিতেন এবং তাঁর অনুলিপিটি আমাদের নিজের হস্তাক্ষর দিয়ে তৈরি করা প্রয়োজন। তিনি আরও চেয়েছিলেন যে আমরা তাঁর আগে তাঁর প্রথম পৃষ্ঠায় আমাদের নাম লিখি যাতে তিনি পরীক্ষা করতে পারেন যে হস্তাক্ষরটি আমাদের। এই কার্যভারটি আমার প্রায় 3 ঘন্টা সময় নিয়েছে।
সাশোলাম

1
জন Jagger মত একটি ক্ষোভ মুক্ত পরিবেশ Cyberdojo এই জন্য চমৎকার হতে পারে, এবং আপনার নিজের সার্ভার আপ সেট করা থেকে ভার্চুয়াল মেশিনের অথবা উৎস ডাউনলোড করার মতই সহজ GitHub
মার্ক বুথ

@ জিওরজিও তখন আমার বয়স ছিল। আমার দক্ষতা স্তরটি ছিল "এটি একটি ফ্রি গেমটি টাইপ করুন"
মাইকেল ব্রাউন

25

আমি অতীতে প্রারম্ভিক ক্লাস শিখিয়েছি এবং এখনই ফিরে দেখার কথা মনে পড়ে:

কিছু শিক্ষার্থী বিভিন্ন কারণে প্রোগ্রামিং এর মত বলে মনে করেন। আমি মনে করি একবারে একটি ভাল বাচ্চা যা আমি যা করতাম তা অনেকটা কার্গো-কিল্ট করে:

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

  1. কিছু বিষয় যেমন নির্ধারণবাদের মতো কিছু বিষয় ব্যাখ্যা করতে ব্যয় করা হয়েছিল, যার অর্থ তাদের কাছে একই ডেটা এবং কোড সহ একই পরিবেশে, তাদের একই ফলাফল হবে ("এলোমেলোতা" বিলোপ করুন),

  2. যেহেতু সমস্যা সমাধানের বিষয়টি শিক্ষার্থীর ক্রিয়াকলাপ এবং অন্য কিছু নয়, তাই সমস্যাটি সমাধান করার এবং সঠিক বানানটি খুঁজে না পাওয়ার দিকে দৃষ্টি দেওয়া উচিত,

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

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


23

আপনার ছাত্রদের নি শুরুসঠিক 'বিমূর্ততা স্তর' অবশ্যই শুরুতে? উদাহরণস্বরূপ একটি হোমওয়ার্ক যা কোডের একক লাইন না লিখে লুপ এবং শর্তসাপকের মতো মূল প্রোগ্রামিং কাঠামোর সাথে তাদের পরিচয় করিয়ে দেয়?

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

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

অবশেষে, ধারণা যে আপনার সাথে শুরু বিমূর্ত এবং দিকে অগ্রসর কংক্রিট । তারা পেস্ট বিমূর্ত কপি করতে পারবেন না। একটি সমস্যা সমাধানের জন্য তাদের এটি বুঝতে হবে।


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

2
@ সি_মেকার: আপনার অ্যাসাইনমেন্টটি প্রি-স্কুলারদের জন্য একটি গেমের মতো দেখাচ্ছে। আপনার শিক্ষার্থীদের খুব সহজ কাজ দেওয়া কেবল বিষয়টিতে তাদের আগ্রহ কমাতে পারে।
গোরান জোভিক

2
@ সি_মেকার: আমি মনে করি আপনার উত্তরটির যোগ্যতা আছে, আমি while not at-corner do take-one-step endভেরিয়েবল এবং ডেটা ধরণের মতো "ব্যাকফিলিং" ছাড়াই কীভাবে আসল কোড থেকে সরানো যায় তা কেবল দেখিনি । দুঃখিত, আমার প্রতিক্রিয়া প্রতিবিম্ব উপর কিছুটা কঠোর বলে মনে হচ্ছে।
টিএমএন

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

1
আমার প্রবর্তক কোর্সের (30 বছর আগে!) স্মরণ করিয়ে দেয়, যা [কারেল রোবট] ( এন.ইউইকিপিডিয়া . org / উইকি / কারেল_জেপ্রেমিং_এলংয়েজ) এর উপর ভিত্তি করে ছিল । (দ্রষ্টব্য: লিঙ্কটি ব্যর্থ হয়েছে কারণ প্রকৃত ইউআরএলটিতে প্যারেন্স রয়েছে । যে পৃষ্ঠায় আসে তার প্রথম বিকল্পটি ক্লিক করুন)) যাইহোক, কারেল একটি পাস্কাল-জাতীয় সিনট্যাক্স ব্যবহার করেছে তবে এটি খুব বেশি নয়
জেফকে

20

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

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

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


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

আমি সম্প্রতি রিচার্ড ফিল্ডারের একটি দুর্দান্ত শিক্ষণ সম্পর্কিত কোর্সে অংশ নিয়েছি। তাঁর মতামতটি ছিল যে পদক্ষেপ নেওয়ার আগে আপনার ব্লুমের শ্রেণিবিন্যাসের নিম্ন স্তরের "মাস্টার" করার দরকার নেই। উদাহরণ হিসাবে তিনি বলেছিলেন যে কিন্ডারগার্ডেন শিশুরা যখন কোন টিভি-শো আরও ভাল - তিল স্ট্রিট বা [...?] এবং কেন তুলনা করতে বলা হয় তখন তারা কীভাবে বিশ্লেষণ অনুশীলন করছে।
আইভর

11

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

এটি "রিয়েল ওয়ার্ল্ড" এ আসলে বেশ সাধারণ বিষয়; প্রচুর আইডিই এবং অন্যান্য সরঞ্জাম ইতিমধ্যে স্থানে থাকা সাধারণ লাইব্রেরি / টেম্পলেট / কনফিগারেশন ফাইলগুলির সাথে খালি প্রকল্প তৈরি করে।


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

অথবা এমনকি এটিকে একতরফা কাজ করার জন্য কোড সরবরাহ করুন এবং আচরণটি পরিবর্তন / যুক্ত করার জন্য অ্যাসাইনমেন্টটি তৈরি করুন। এইভাবে তারা কাজ করে বেসিক পাওয়ার পরিবর্তে নির্দিষ্ট আচরণের দিকে মনোনিবেশ করে।
জনএমসিজি

প্রথম ভাষার জন্য, এমন কোনও ভাষা ব্যবহার করার চেষ্টা করুন যার সাথে কোনও বয়লারপ্লেট শুরু করার দরকার নেই। পাইথন এই ক্ষেত্রে ভাল, উদাহরণস্বরূপ সি / সি ++ / জাভা একটি খারাপ।
মিথ্যা রায়ান

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

8

যে কোনও ধরণের কার্গো- কাল্ট মানসিকতা ( কার্গো কল্টগুলি নিজেরাই অন্তর্ভুক্ত) এর সাথে জড়িত প্রযুক্তির মৌলিক বোঝার অভাব থেকে আসে।

কার্গো-কাল্ট প্রোগ্রামিংটিকে সমস্যাযুক্ত অভ্যাস হিসাবে ভাবা উচিত নয়, বরং প্রোগ্রামার যে অন্তর্নিহিত বিভ্রান্তির মুখোমুখি হচ্ছে তার একটি লক্ষণ।

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

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

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


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

7

আপনার প্রকল্পের ধারণা পরিবর্তন করুন !

প্রোগ্রামিং বিশ্বে খুব কমই আমরা বাস্তবে আশেপাশের প্রতিটি সমাধানের জন্য নতুন প্রকল্প তৈরি করি। বেশিরভাগ সময় আমরা পুরানোগুলি সংশোধন করি।

প্রতিটি অ্যাসাইনমেন্টের জন্য একটি দ্রবণ থেকে সম্পূর্ণ সেমিস্টারের একটি সমাধানে একটি প্রকল্পের ধারণাটি পরিবর্তন করুন। প্রতিটি অ্যাসাইনমেন্ট পূর্ববর্তী অ্যাসাইনমেন্টের উপর ভিত্তি করে।

উদাহরণ

প্রকল্প: একটি লিফট সিস্টেম তৈরি করুন

  • অ্যাসাইনমেন্ট 1: বর্তমান মেঝেটি মুদ্রণ করুন
  • অ্যাসাইনমেন্ট 2: লিফট শ্রেণীর জন্য ডেটা স্ট্রাকচার তৈরি করুন এবং লিফটের উপর ভিত্তি করে মেঝেটি মুদ্রণ করুন
  • অ্যাসাইনমেন্ট 3: ফ্লোর প্রিন্ট করে এমন কোড তৈরি করুন যা "লিফটকে সরায়"। কীবোর্ড ইনপুট গ্রহণ করুন (> তল প্রবেশ করুন:)
  • অ্যাসাইনমেন্ট 4: একাধিক লিফট পরিচালনা করুন

মুল বক্তব্যটি হ'ল আপনি কোনও নতুন কাজের জন্য পুরানো কার্যাদি পুনর্ব্যবহারের পরিবর্তে আগের অ্যাসাইনমেন্টের উপর ভিত্তি করে।


2
ঠিক আছে কপি-পেস্ট সমস্যা নয়, সমস্যাটি হ'ল তারা বুঝতে পারে না যে তারা কী অনুলিপি করছেন।
আইভর

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

সত্যি? যদি কোনও প্রশিক্ষক শিক্ষার্থীকে তাদের কোডটি কাজ করতে সহায়তা করার জন্য যথেষ্ট সহায়ক না হয় তবে তারা কি সত্যই তাদের কাজ করছে?
রিচার্ড 21

প্রত্যেকে নির্ধারিত তারিখের মধ্যে তাদের অ্যাসাইনমেন্টটি পাবেন না।
ব্যারি ব্রাউন

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

7

খুব উচ্চ-স্তরের ভাষা ব্যবহার করার কথা বিবেচনা করুন যার জন্য ন্যূনতম বয়লারপ্লেট কোডের প্রয়োজন।

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

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

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

এমএল ভাল পছন্দ হবে! তবে পাইথন আপনার প্রথম দুটি পয়েন্টের সাথেও খাপ খায় এবং এটি ব্যবহার করা সহজ (যার অর্থ কোনও বড় প্রযুক্তিগত ঝামেলা নেই)।
আইভর

আমি পাইথনকে উচ্চতর সুপারিশ করব, বিশেষত উইং আইডিইয়ের মতো কোনও ভাল আইডিইয়ের সাথে মিলিত হলে।
কেন

6

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

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

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

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


5

আপনি তাদের কোডের টুকরো সম্পর্কে প্রশ্ন জিজ্ঞাসা করতে পারেন যার জন্য লিখিত প্রতিক্রিয়া দরকার? "এই কোডটি কী করছে?" "প্রোগ্রামার কেন এটিকে সমাধান করেছিল?" "আরও ভাল উপায় আছে কি?", ইত্যাদি?

এটি তাদের সমস্যা সম্পর্কে চিন্তাভাবনা করবে, যা কোড এমনকি স্পর্শ না করে তারা করতে পারে।


5
  • সমস্যার সংক্ষিপ্ততম সমাধান তৈরি করতে তাদের চ্যালেঞ্জ করুন।
  • একটি উত্সাহ সঙ্গে আরও সংক্ষিপ্ত সমাধান পুরষ্কার।
  • ব্যায়ামগুলি তৈরি করুন যা পুরোপুরি রিফ্যাক্টরিং কোডের চারদিকে ঘোরে
  • শিক্ষার্থীদের ব্যবসায় কার্যভার করুন, এবং দক্ষতা এবং কোড পরিষ্কারের জন্য তাদের মক গ্রেড করুন এবং ওভারহেড প্রজেক্টরটিতে উদাহরণ হিসাবে স্বল্প দক্ষতার কিছু ব্যবহার করুন।

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

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

@ ক্রিশ্চিয়ান সংক্ষেপে বলতে গেলে, আমি আসলে চরিত্রের দৈর্ঘ্যের সংক্ষিপ্ত বোঝাতে চাইনি, কারণ সংকলকটি আসলে পরিবর্তনশীল নামগুলির বিষয়ে চিন্তা করে না। আমি কোড জটিলতার কথা বলছি ... ওরফে KISS
লিন ক্রম্বলিং

4

জোয়েলফ্যান্স ধারণার অনুরূপ হ'ল তারা আপনার তৈরি সিউডো কোড (ভাষা) ব্যবহার করে কাগজে প্রাথমিক কাজগুলি করুক। আপনি উপযুক্ত দেখতে দেখতে কাঠামো যুক্ত করতে পারেন এবং তারা যাদু বাক্স সম্পর্কে চিন্তা করবেন না।


4

আমি ধরে নিচ্ছি যে 'কার্গো কাল্ট' দ্বারা, আপনি বোঝাতে চাইছেন যে তারা প্রয়োজনীয় জিনিস মনে করে এমন জিনিসগুলি সন্নিবেশ করিয়ে দিচ্ছেন, তবে সমস্যাটি সমাধান করার দিকে আসলে কিছুই করেন না।

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

একটি ইংরেজী ক্লাসে লেখার অনুশীলনে তাদের একইভাবে বিচার করা হবে - কেউ এমন জিনিস চায় না যা এলোমেলো স্পর্শকাতর হয়ে যায় বা সাধারনত বিন্দুতে না পৌঁছাচ্ছে।

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

...

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


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

4

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

ক্লাসের প্রেক্ষাপট সম্পর্কে আরও না জেনে আমি এই সমস্যা শিক্ষার্থীদের সাথে খুব বেসিক স্ট্রাকচারগুলিতে আরও ফোকাস করব - সরল if / thens, loops ইত্যাদি। বিজোড় সংখ্যাগুলি, প্রতিটি দশম নম্বর প্রিন্ট করার সহজ রুটিন ইত্যাদি কিছুই নেই N কোডের 10 টিরও বেশি লাইন। যদি তারা 'যাদু ভাবনা' হয় তবে তারা সম্ভবত এখনও এই বেসিকগুলিতে দক্ষতা অর্জন করতে পারেনি। তারা কী চলছে তা বুঝতে না হওয়া পর্যন্ত তাদের অনেকগুলি সাধারণ রুটিন প্রচুর করতে দিন। অন্য কেউ কাগজে কোড লেখার কথা উল্লেখ করেছিলেন - আমি মনে করি যে এই সাধারণ রুটিনগুলি করার একটি দুর্দান্ত উপায়ও হ'ল।

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


3

আদর্শভাবে প্রথম বক্তৃতায়, এটিকে সম্পূর্ণ বিমূর্ত কিছু দিয়ে শুরু করুন: সেগুলি (গোষ্ঠী হিসাবে, আপনাকে নেতা হিসাবে আপনার সাথে) একটি তালিকা থেকে মুদি কেনাকাটায় কীভাবে যেতে হবে সে সম্পর্কে নির্দেশাবলী লিখুন এবং উচ্চ-স্তরের নির্দেশগুলি ক্রমান্বয়ে ভেঙে দিন যতক্ষণ না তারা আলোকিত হয়।

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


ভাল যুক্তি! আমি এটি করেছি এবং আমি বিশ্বাস করি এটি অনেক শিক্ষার্থীকে সঠিক পথে পরিচালিত করেছে। কিন্তু সব না.
আইভর

3

অ্যালিস্টার ককবার্ন শু-হা-রি এর ধারণা এবং এটি কীভাবে প্রোগ্রামিং, http://alistair.cockburn.us/Shu+Ha+Ri- র ক্ষেত্রে প্রযোজ্য তা সম্পর্কে আলোচনা করে । আমি মনে করি আপনার শিক্ষার্থীরা এই ধারাবাহিকতায় কোথায় আছেন তা মনে রাখা গুরুত্বপূর্ণ। প্রথম এটি আপনার হতাশা কিছুটা কমিয়ে আনতে সহায়তা করবে। আপনি যখন প্রথমে কিছু শিখতে শুরু করবেন তখন অনুলিপি / নকল করা খুব স্বাভাবিক প্রতিক্রিয়া এবং স্বীকৃত মোড। দ্বিতীয়ত, এটি আপনাকে কীভাবে এগিয়ে যেতে হবে সে সম্পর্কে কিছু ধারণা পেতে সহায়তা করতে পারে। উদাহরণস্বরূপ, আপনি এমন কোনও সমস্যা বেছে নিতে বিবেচনা করতে পারেন যা একাধিক উপায়ে সমাধান করা যেতে পারে (লুপগুলি বনাম পুনরাবৃত্তি, কনসোল বনাম ওয়েব / গুই) তারপরে স্পষ্টভাবে তাদের প্রথমে এটি একভাবে সমাধান করতে হবে, তারপরে অন্য কোনও উপায় - বোনাস তারা শিখতে পারে বৈধ কোড পুনরায় ব্যবহার, সংযোগকরণ, পুনরায় ব্যবহারযোগ্য লাইব্রেরি তৈরি ইত্যাদি সম্পর্কে about

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

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

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


3

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


আমি তাদের এটি করার পরামর্শ দিয়েছি, তবে আমার ধারণা কারও কারও কাছে এটি অত্যন্ত ধীর এবং ত্রুটি-প্রবণ প্রক্রিয়া, তারা এড়িয়ে যাওয়ার সিদ্ধান্ত নেয়।
আইভার

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

3

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

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

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

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

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

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

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


3

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

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

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

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

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

এছাড়াও,

এইচপি কোড ওয়ার্স


2

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


1
আমি তাদের কারও কারও কাজ অনুলিপি করার বিষয়ে চিন্তা করি না, তবে তাদের নিজস্ব কাজ বা কিছু উদাহরণ স্নিপেটস, যা প্রদত্ত পরিস্থিতিতে ব্যবহারযোগ্য নয়।
আইভর

2

আপনি তাদের সাথে কঠোর আচরণও করতে পারেন।

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


1

আমি সন্দেহ করি যে এই আচরণটি এমন একটি বিশ্বাসের কারণে যা প্রোগ্রামগুলি যাদু মন্ত্র হয় - সম্ভবত এটি অলসতা এবং প্রেরণার অভাব।

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


এই শিক্ষার্থীদের কিছু ক্ষেত্রে অলসতা এবং / অথবা সময়সীমা অবশ্যই কারণ cause তবে কিছু সত্যিই কঠোর পরিশ্রম করছে ...
আইভর

@ আইভর - একজন প্রশিক্ষক হিসাবে আপনি সম্ভবত শিক্ষার্থীদের শক্তি এবং দুর্বলতা সম্পর্কে আরও জ্ঞাত are কৌতূহলের বাইরে, আপনি "কঠোর পরিশ্রম করছেন" সেই শিক্ষার্থীদের বাধা কী বলে মনে করেন?
লেইগ করুন

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

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

1

সাবরুটাইন শিখিয়ে দিন। পূর্ববর্তী অ্যাসাইনমেন্টগুলি থেকে তারা যে কোডটি গ্রহণ করছে সেগুলি নিতে এবং এটিকে একটি সাবরুটিনে রূপান্তরিত করুন। সাবরোটাইন আসলে কী করছে তা বুঝতে তাদের ফাংশন ডকুমেন্টেশন সম্পর্কে তাদের শিখান।


এটি সত্যিই সমস্যার সমাধান করে না।
পাব্বি

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

1

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


1

তাদের অনুরূপ সাউন্ডিং অ্যাসাইনমেন্ট কখনও দিবেন না।

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


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

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

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

@ টিএমএন: এবং ক্রমবর্ধমান "এক সময় (বিকাশকারীদের যতটা সহজ) পদক্ষেপ" বিলুপ্ত হবে।
হার্বি

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

1

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

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

আমার ক্লাসে কয়েকজন লোক 40-50% থেকে তাদের পরীক্ষায় 90-100% হয়ে গেছে কারণ তারা ঠিক একই কাজ করেছিল।


1

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

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