मैं कार्गो-पंथ प्रोग्रामिंग दृष्टिकोण से कैसे निपट सकता हूं?


257

मेरे पास एक अनिवार्य परिचयात्मक प्रोग्रामिंग कोर्स में कुछ कंप्यूटर विज्ञान के छात्र हैं, जो एक प्रोग्रामिंग भाषा को जादू के मंत्र के रूप में देखते हैं, जिसे कुछ प्रभाव प्राप्त करने के लिए डाला जाना चाहिए (बजाय इसके समाधान के विचार व्यक्त करने के लिए इसे एक लचीले माध्यम के रूप में देखने के लिए) ।

वे समस्या के सार पर विचार किए बिना पिछले, समान-दिखने वाले असाइनमेंट से कॉपी-पेस्ट कोड देते हैं।

क्या इन छात्रों को और अधिक आश्वस्त करने के लिए कुछ अभ्यास या उपमाएं हैं जो वे कर सकते हैं, और उन्हें लिखने वाले प्रत्येक टुकड़े की संरचना और अर्थ को समझना चाहिए?


8
टिप्पणीकार: टिप्पणियों में यहाँ एक उत्तर न छोड़ें। अपना जवाब लिखिए। टिप्पणियाँ प्रश्न के विभिन्न संभावित उत्तरों पर चर्चा करने के लिए एक स्थान नहीं हैं: या तो अपने सुझाव को एक उत्तर के रूप में सामने रखें या पहले इसे बाहर ले जाने के लिए चैट करें।

50
जब भी यहाँ पर एकेडमिया मिलता है - मैं अपने भविष्य के लिए चिंतित हो जाता हूँ ... मैं बस एक बोइंग 7-28-7 पर होने की कल्पना करता हूं और टर्बाइन 200,000 RPM पर घूमता है जो आपके द्वारा एक बमुश्किल गुजरने वाले सी द्वारा लिखे गए नियंत्रण सॉफ्टवेयर पर चल रहा है ... , वैसे भी मैं पचाता हूं।
बेन डीमॉट

67
क्या आपने उन्हें कई बार असफल माना है , हर कोई सॉफ्टवेयर के विकास के लिए नहीं कटता है! वे सभी विशेष बर्फ के टुकड़े नहीं हैं!

6
क्या SICP यह कहने के लिए प्रसिद्ध नहीं है कि प्रोग्रामिंग वर्तनी कास्टिंग के अनुरूप है? मेरा मतलब है, मुझे संदेह है कि आपके छात्र एसआईसीपी को उद्धृत कर रहे हैं या यहां तक ​​कि एबेल्सन और सुस्मैन की तुलना करने के लिए तुलना कर रहे हैं, लेकिन मैं यह नहीं देखता कि यह कैसे गलत है कि कोई प्रोग्राम लिखने की तुलना वर्तनी से करता है, जब सबसे प्रसिद्ध में से एक कंप्यूटर प्रोग्रामिंग की किताबें वहाँ पहले जोड़े पृष्ठों में एक ही बात करता है।
रॉबी

9
इस विषय में एरिक लिपर्ट का बहुत कुछ कहना है। और जितना संभव हो सके, उससे कहीं अधिक सुरुचिपूर्ण और संक्षिप्त तरीके से: blogs.msdn.com/b/ericlippert/archive/2004/03/01/82168.aspx
P.Brian.Mackey

जवाबों:


120

आप उन्हें अभ्यास की एक श्रृंखला पेश कर सकते हैं, पिछले में प्रत्येक एक इमारत में कुछ अतिरिक्त तत्व जोड़ सकते हैं या समस्या को मोड़ सकते हैं, या एक अलग दृष्टिकोण से समस्या की जांच कर सकते हैं, जो पिछले समाधान की कमजोरी का खुलासा करता है, एक नए, अलग दृष्टिकोण की आवश्यकता होती है । यह उन्हें प्रत्येक समाधान के साथ सोचने, विश्लेषण करने, संशोधित करने और प्रयोग करने के लिए बाध्य करता है, बजाय कोड के एक तैयार-किए गए टुकड़े को कॉपी-पेस्ट करने के लिए।

एक और संभावना - हालांकि सख्ती से एक प्रोग्रामिंग कार्य नहीं है - उन्हें विभिन्न चीजों का अनुमान लगाने के लिए पूछना है । उदाहरण के लिए प्रति सेकंड मिसिसिपी डेल्टा से कितना पानी बहता है? इस तरह के सवालों का एक निर्धारित जवाब नहीं है, खासकर क्योंकि किसी को एक निश्चित मूल्य (रेंज) मान प्राप्त करने के लिए कुछ धारणाएं बनाने की आवश्यकता होती है। और - हालांकि इनमें से कई "क्लासिक" लोगों के जवाब वास्तव में गुगले जा सकते हैं - आप आसानी से नए बना सकते हैं जो नेट पर कहीं भी (अभी तक) नहीं मिले हैं।

इस प्रकार के दोनों अभ्यासों के उदाहरण जॉन बेंटले द्वारा उदाहरण के लिए प्रोग्रामिंग मोती में पाए जा सकते हैं । इसके अलावा व्यावहारिक प्रोग्रामर में कुछ अच्छी चुनौतियां हैं।

एक तीसरे प्रकार का कार्य उन्हें कोड के कुछ टुकड़े को एक (एक या अधिक) बग के साथ प्रस्तुत करना होगा, जिसे उन्हें खोजना होगा और ठीक करना होगा। यह उन्हें फिर से अपने विश्लेषणात्मक कौशल और कारण के बारे में बताता है कि कार्यक्रम वास्तव में कैसे काम कर रहा है।

अपडेट करें

बिली ओनेल की टिप्पणी से प्रतिक्रिया:

"अभ्यास की श्रृंखला" के साथ समस्या यह है कि जिन छात्रों को पहले के व्यायाम की समस्या है वे शेष अभ्यास के लिए पूरी तरह से खराब हो गए हैं।

आप सही हैं, हालांकि मुझे लगता है कि यह समान स्तर के समान कौशल वाले छात्रों के सही स्तर / समूहीकरण के लिए पाठ्यक्रम की कठिनाई की सामान्य समस्या के बारे में अधिक है। इसके अलावा, कोई छात्रों को छोटे समूहों में व्यवस्थित कर सकता है जहां उन्हें समस्याओं और समाधानों के बारे में चर्चा और बहस करने की आवश्यकता होती है, और समस्याओं को एक साथ हल किया जाता है। यदि कोई इसे प्राप्त नहीं करता है, तो अन्य मदद कर सकते हैं (यह सेटअप टीम वर्क कौशल में भी सुधार करेगा)। और यदि कोई व्यक्ति आलसी होने की कोशिश करता है और दूसरों को सभी काम करने देता है, तो यह निश्चित रूप से शिक्षक द्वारा देखा जाता है (जो कि छात्रों के आसपास घूमना, पर्यवेक्षण करना और सलाह देना चाहता है, कोने में अपने लैपटॉप पर वाह नहीं खेलना;;)

और एक को विभिन्न कौशल स्तरों वाले छात्रों को समायोजित करने के लिए अभ्यास भी समायोजित कर सकते हैं। शुरुआती धीमी गति से जा सकते हैं, अनुभवी तेजी से।


मैं इस अच्छे उत्तर को एक साधारण वेबसाइट के लिंक से जोड़ दूंगा, जो कि, IMHO को पाठ्यक्रमों के पूरक के रूप में सेट किया जाना चाहिए: http://projecteuler.net/ यह कोड के लिए उनकी भूख को प्रोत्साहित करने वाली वेबसाइट है। इससे कठिनाई की समस्याएं बढ़ती जा रही हैं जिन्हें उन्हें अपनी इच्छित भाषा से हल करना होगा। सबसे पहले, यह नशे की लत है, और यह प्रतियोगिता को भी उत्तेजित करता है: आप उनके खातों के माध्यम से उनकी प्रगति का पालन कर सकते हैं, वे भी कर सकते हैं।
निकोलस सी।

142

आप छात्रों को अपने विषय के बारे में देखभाल करने और उनकी ग्रेडिंग प्राप्त करने की आवश्यकता के बारे में बता रहे हैं । कई छात्रों को लगता है कि:

(इसे गलत समझें। प्रयोग) == (ग्रेडिंग और समय बर्बाद करना)

जैसे ही एक छात्र को लगता है कि उनका समय या ग्रेड जोखिम में है, यहां तक ​​कि एक दिलचस्प विषय के लिए, वे सीखना बंद कर देते हैं और सीधे "मैं परवाह नहीं करता, कूदता हूं", शिक्षक को सही उत्तर दें। आपका छात्रों कोनों में कटौती करने की कोशिश कर रहे हैं (ताकि उन्हें लगता है कि या) समस्या के बारे में यथासंभव कम सोच और बस प्रतिलिपि करने और चिपकाने से दूर इस पर हैकिंग से।

इससे निपटने के बारे में मेरे सुझाव यहां दिए गए हैं:

  1. बॉब रॉस पद्धति का उपयोग करें: उन्हें साबित करें कि नए सिरे से बनाम कॉपी और पेस्ट करना शुरू करना संभव है। कक्षा के दौरान उनकी आंखों के सामने नए कार्यक्रम बनाएं - वास्तव में उन्हें दिखाएं कि प्रोग्रामिंग चित्र को चित्रित करने जैसा हो सकता है।
  2. ऐसे कार्य प्रदान करें जिनमें रचनात्मकता की आवश्यकता हो । उदाहरण के लिए, प्रत्येक छात्र ने पूरे पाठ्यक्रम में उपयोग करने के लिए कागज पर अपने स्वयं के डेटा स्ट्रक्चर्स (एक ज़ू, पेट स्टोर, टाउन, कॉलेज आदि बनाने के लिए आवश्यक वस्तुएँ क्या हैं) का निर्माण किया है। असाइनमेंट # 2 उन संरचनाओं को कक्षाओं या ऑब्जेक्ट्स इत्यादि में परिवर्तित कर सकता है। मूल रूप से, उन्हें अमूर्त सोच में लुभाते हैं - उन्हें रचनात्मक होने के लिए पुरस्कृत करते हैं, और फिर उनकी रचनात्मकता को कंप्यूटर प्रोग्राम में बदलने के लिए उन्हें पुरस्कृत करते हैं।
  3. सिंटैक्स का कम से कम उपयोग करें। बॉयलरप्लेट सामान जैसे कक्षाएं और भाषा सिंटैक्स बनाना प्रोग्रामिंग की शुरूआत में बहुत प्रचलित है कि यह अक्सर छात्रों को यह सोचकर भ्रमित करता है कि सभी प्रोग्रामिंग बस यह जान रहे हैं कि घुंघराले ब्रेस कहां लगाए जाएं - उन्हें यह पता नहीं है कि घुंघराले के बीच में क्या है ब्रेसिज़ वह जगह है जहाँ रचनात्मकता बहती है । जो छात्र अभी भी कुछ कॉपी और पेस्ट करना चाहते हैं, उनके लिए एक सरल भाषा चुनें, और एक सैंपल फाइल (जैसे एक खाली क्लास फाइल) प्रदान करें। जैसे-जैसे कोर्स आगे बढ़ता है आप धीरे-धीरे वाक्य रचना और संकलन कार्य के बारे में अधिक सख्त हो सकते हैं।

यह होना चाहिए &&- हालांकि मुझे संदेह है कि यह एक बिटवाइज़ ऑपरेशन के रूप में भी सफल हो सकता है।
तवानफोसन

मुझे वास्तव में नहीं पता है कि डेटा कैसा दिखता है, लेकिन हां एक बिटवाइज़ ऑपरेशन है जो मेरा इरादा है। अच्छा कैच :-)
केविन मैकॉर्मिक

3
"घुंघराले ब्रेसिज़ के बीच में क्या है, जहां रचनात्मकता बहती है" ==> उफ़ वह / वह उन्हें तब सिखाना नहीं होगा ...
ओलिवियर पॉन

3
शिक्षक को सीखने के बजाय केवल 'सही' उत्तर देने की कोशिश करने के साथ एक और समस्या यह है कि लोग अक्सर सोचते हैं कि वह सीख रहा है। उदाहरण के लिए lesswrong.com/lw/iq/guessing_the_teachers_password
विल्का

6
और फिर मैं यहां कुछ खुशहाल अर्ध-कॉलन जोड़ने जा रहा हूं ...
VirtuosiMedia

44

कई बातें जो मेरे दिमाग में आती हैं:

  • उन्हें असाइनमेंट दें, जहां उन्हें वास्तव में किसी और को (आपको) लिखा कोड स्पष्ट करना होगा। पिछले कोड को समझना या अधिक विशेष रूप से इसकी कमी दोनों कार्गो पंथ प्रोग्रामिंग का सबसे बड़ा कारण और खतरा है। यदि आवश्यक हो, तो अपने कार्यक्रम को स्पष्ट अंग्रेजी में (या जो भी मानव भाषा आप उपयोग करते हैं) समझाने के लिए उन्हें टिप्पणियों का उपयोग करने के लिए कहें।

  • कोड की व्याख्या करने के बाद ही, उन्हें एक निश्चित बदलाव करने के लिए इसे संशोधित करने के लिए कहें। उदाहरण के लिए, यदि आपने उन्हें एक प्रकार का फ़ंक्शन दिया है जो अवरोही क्रमबद्ध है, तो उन्हें इसे आरोही क्रमबद्ध करने के लिए कहें। या कुछ और मांग रहा है। लेकिन सुनिश्चित करें कि यह कुछ ऐसा है जिसे दिए गए कोड की समझ की आवश्यकता है ।

  • आप चाहें, तो कोड में कुछ ईस्टर अंडे डाल सकते हैं। एक पंक्ति या दो जो कुछ भी उपयोगी या समस्या से संबंधित नहीं है। उन्हें संकेत दें कि ऐसी रेखाएं मौजूद हैं और उन्हें हटाने वालों को अतिरिक्त अंक प्रदान करते हैं।

  • तब और केवल तब आप उन्हें अपने दम पर खरोंच से कोड का एक टुकड़ा लिखने के लिए असाइनमेंट दे सकते हैं। इस बिंदु पर उन्हें बेहतर समझ होनी चाहिए कि वास्तव में कोड क्या है। वे इसे थोड़ा आसान भी कर सकते हैं।

मूल विचार यह है कि प्रोग्रामिंग केवल कोड नहीं लिख रहा है, वह इसे भी पढ़ रहा है। रीडिंग कोड भी पढ़ाया जाना चाहिए।


4
ईस्टर अंडे का विचार ऐसा लगता है कि यह परीक्षण / सत्यापन सिखाने का एक अच्छा तरीका भी होगा। साथ में "किसी भी अनुबंध को तोड़ने के बिना वाट को हटाया जा सकता है?"
नील एन

3
कोड पढ़ने के लिए +1। मैं बहुत से लोगों को एक सहज अनुमान लगाकर कीड़े को ठीक करता हूं और फिर इसे साबित करने की कोशिश करता हूं। मुझे लगता है कि कोड को पढ़ने से सुराग मिलता है जो आपको सही समाधान पर ले जाता है। यह स्पष्ट लगता है, लेकिन मैं इसे बहुत उपेक्षित देखता हूं।
क्रिस

38

इसे दूसरे तरीके से देखें। यह कार्गो-पंथ घटना कौशल अधिग्रहण के ड्रेफस मॉडल का नौसिखिया चरण है । यह हम सीखते हैं। जब मैंने पहली बार प्रोग्राम करना सीखा, तो मैं जो कुछ कर रहा था, वह कंप्यूट के पीछे से कोड के पन्नों में टाइप कर रहा था! पत्रिका। पुनरुक्ति कुंजी है। बच्चे अपने माता-पिता द्वारा सुनी जाने वाली ध्वनियों को कॉपी करके बात करना सीखते हैं। हम जो कुछ भी सीखते हैं वह नकल के माध्यम से होता है। हमें सिर्फ यह सिखाया जाना है कि नकल से महारत तक कैसे जाएं।

आपके पास जो समस्या है वह यह है कि आपके छात्र कुछ भी नहीं दोहरा रहे हैं, वे इसे इंटरनेट से कॉपी कर रहे हैं। इससे कुछ लाभ होता है लेकिन लाभ कम से कम होता है। वास्तव में कोड टाइप करने का कार्य मुझे समझने के स्थान पर मिला है। मैंने जो कुछ भी टाइप किया था उसमें पैटर्न देखना शुरू कर दिया था और जो मैं कर रहा था उसकी समझ हासिल की।

एक विकल्प यह है कि अपनी प्रयोगशाला को एक कोड डोज के रूप में संरचित करें। क्या छात्रों को एक ही समस्या पर एक-दूसरे के साथ जोड़ी बनाने में मदद मिलती है। एक समस्या को हल करने में लगभग 10 से 15 मिनट लगते हैं। कुछ प्रयोगशालाओं में उस समस्या को दोहराएं और समस्या को एक नया मोड़ पेश करें क्योंकि वर्ग की प्रवीणता बढ़ती है। शायद छात्रों को आप कार्यक्रम के समाधान के लिए देख कर लैब शुरू करें, और उन्हें इसे दोहराएं। प्रत्येक पुनरावृत्ति के साथ जोड़े स्विच करना।

आपके परीक्षणों के लिए एक कोड काटा है जहां प्रत्येक छात्र सेमेस्टर से समस्याओं के माध्यम से बाकी कक्षा के सामने काम करता है। न केवल शुद्धता, बल्कि रूप और रचनात्मकता पर ध्यान दें। मुझे लगता है कि इससे होम असाइनमेंट लेने की तुलना में प्रोग्राम की गहन समझ मिलेगी।


"जब मैंने पहली बार प्रोग्राम करना सीखा था, तो मैं जो कर रहा था, वह सब कम्पूटर के पीछे से कोड के पन्नों में टाइप कर रहा था! पत्रिका।": यह मेरा बहुत ही प्रारंभिक चरण था जब मैं छोटे खिलौने प्रोग्राम चलाने के लिए एक कमोडोर विक 20 का उपयोग कर रहा था और यह जल्द ही बन गया। बहुत उबाऊ। मैंने जल्द ही विपरीत रवैया विकसित कर लिया: अपने आप को वह कोड भी लिखें जिसे आप कहीं और से कॉपी कर सकते थे, अन्यथा आपको कभी भी यकीन नहीं होगा कि वास्तव में कोड में क्या चल रहा है।
जियोर्जियो

हमारे शिक्षकों में से एक हमें एक असेंबलर कार्यक्रम की प्रतिलिपि बनाने के लिए असाइनमेंट देगा जो उसने हमें दिया था और उसे कॉपी की आवश्यकता हमारे स्वयं के लिखावट के साथ होनी चाहिए। वह यह भी चाहते थे कि हम पहले उनके नाम पर हमारे नाम लिखें, ताकि वह जाँच सकें कि लिखावट हमारी है। उस असाइनमेंट में मुझे लगभग 3 घंटे लगे।
शशोअल्म

1
जॉन जैगर के साइबरडो की तरह एक व्याकुलता मुक्त वातावरण इसके लिए उत्कृष्ट हो सकता है, और अपना स्वयं का सर्वर स्थापित करना उतना ही सरल है जितना कि वर्चुअल मशीन या स्रोत को जीथब से डाउनलोड करना ।
मार्क बूथ

@ जियोर्जियो I उस समय 8 वर्ष का था। मेरा कौशल स्तर "एक नि: शुल्क गेम प्राप्त करने के लिए इसे टाइप करें"
माइकल ब्राउन

25

मैंने अतीत में परिचयात्मक कक्षाएं सिखाई हैं और जैसा कि मुझे याद है अब वापस देख रहे हैं:

कुछ छात्रों को लगता है कि प्रोग्रामिंग विभिन्न कारणों से ऐसा है। मुझे याद है कि एक बार एक अच्छा बच्चा कि कार्गो ने बहुत कुछ किया जो मैंने किया था:

यह मानते हुए कि यह एक अलग-थलग मुद्दा नहीं था, लेकिन एक ही कक्षा में अन्य छात्रों के साथ समान व्यवहार हो सकता है या समस्या के लिए आ सकता है और इसे व्यक्त नहीं कर सकता है, मैं हमेशा कक्षा को संबोधित कर रहा था।

  1. कुछ समय कुछ वस्तुओं जैसे कि नियतत्ववाद को समझाने के लिए बिताया गया था, जिसका अर्थ है कि एक ही डेटा और कोड के साथ एक ही वातावरण में, उनके समान परिणाम होंगे ("यादृच्छिकता" को दूर करें),

  2. चूंकि समस्या को हल करना छात्र के कार्यों और कुछ और नहीं, पर ध्यान देना है, समस्या को हल करने में ध्यान देना चाहिए और सही वर्तनी नहीं ढूंढनी चाहिए,

  3. वे एक शिक्षा के माहौल में हैं, इसलिए समस्याओं को सीखने के अनुभव की पेशकश करने के लिए तैयार किया जाता है, इसका परिणाम यह सीखना है कि कैसे प्रोग्राम करना है (या कुछ मामलों में जैसे सिस्टम एडमिनिस्ट्रेटर के लिए, प्रोग्राम कैसे काम करते हैं, जो अलग है) और नहीं मुझे एक उपाय दो। ("दुनिया को दूसरे कैलकुलेटर की आवश्यकता नहीं है, यह एक व्यायाम है"), इसलिए उनकी समस्याओं को उपलब्ध सामग्री के साथ हल किया जा सकता है (उदाहरण: उदाहरण के लिए, प्रदान की गई सामग्री)

  4. मुझे लगता है कि यह कोड पूरा में है: "भले ही आप कॉपी और पेस्ट करें, कोड आपका है"। यदि किसी ने किया, तो यह कार्गो-शैली नहीं होना चाहिए। प्रत्येक पंक्ति को मुझे (व्यक्तिगत रूप से) या किसी अन्य छात्र (समान) या कक्षा को समझाया जाना था।


23

अपने छात्रों को किया था शुरू में सही 'अमूर्त स्तर' पाठ्यक्रम की शुरुआत में? उदाहरण के लिए एक होमवर्क जो उन्हें कोड की एक पंक्ति लिखे बिना लूप और सशर्त जैसे मुख्य प्रोग्रामिंग संरचनाओं से परिचित कराता है?

जब मैंने प्रोग्रामिंग में इंट्रो लिया, तो हमारे पहले असाइनमेंट को ' रिक द रोबोट ' कहा गया । हमारे पास एक शहर के एक हवाई नक्शे के साथ दिलचस्प बिंदुओं के साथ एक कागज का टुकड़ा था, जैसे कि बैंक, किराना स्टोर, आदि ... हमारे पास 'रिक' नामक एक दोस्त था और उसके पास 'एक कदम', 'बाएं देखो' जैसे कार्य थे। 'सही देखो', 'सड़क पार करो' और हम 'रिपीट' और 'अगर कुछ है, तो कुछ करें' जैसी चीजों का इस्तेमाल कर सकते हैं। (यह 100% नहीं है, क्योंकि मुझे यह असाइनमेंट नहीं मिला) विचार यह था कि रिक केवल वही उपयोग कर सकता है जो उसे दिया गया था और उसे मानचित्र पर विभिन्न स्थानों पर जाना था।

यह एक मजेदार अभ्यास था और कुछ ऐसा है जो आपको मूल बातों से परिचित कराता है (जो कभी-कभी नए लोगों को समझाना सबसे कठिन होता है)। इस समस्या (इसका एक खेल) का कोई अच्छा जवाब नहीं है और इससे कॉपी और पेस्ट करने का कोई समाधान नहीं है। कुछ इस तरह से आप कोड के साथ उन्हें डराने के बिना उनकी रचनात्मकता के साथ थोड़ा और खेलने की अनुमति दे सकते हैं।

अंत में, विचार यह है कि आप अमूर्त से शुरू करते हैं और कंक्रीट की ओर बढ़ते हैं । वे पेस्ट अमूर्त की नकल नहीं कर सकते। उन्हें एक समस्या को हल करने के लिए इसे समझना होगा।


3
लूप्स और शर्तें? मैं उन्हें चर, असाइनमेंट और भावों के साथ शुरू करूँगा। क्या उन्होंने कमांड लाइन से दो नंबर पढ़े हैं और उन्हें जोड़ दिया है, फिर परिणाम प्रिंट करें। अक्सर लगभग स्पष्ट रूप से कुछ करने से छात्रों को यह विश्वास मिलता है कि वे समझ सकते हैं कि क्या चल रहा है, और उन्हें प्रयोग करने के लिए प्रोत्साहित करता है।
टीएमएन

2
@c_maker: आपका असाइनमेंट प्री-स्कूलर्स के लिए एक गेम की तरह दिखता है। अपने छात्रों को बहुत आसान काम देने से केवल विषय में उनकी रुचि कम हो सकती है।
गोरान जकोव

2
@c_maker: मुझे लगता है कि आपके उत्तर में योग्यता है, मैंने यह नहीं देखा कि while not at-corner do take-one-step endचर और डेटा प्रकार जैसी चीजों पर "बैकफ़िलिंग" के बिना वास्तविक कोड से कैसे स्थानांतरित किया जाए। माफी, मेरी प्रतिक्रिया प्रतिबिंब पर थोड़ी कठोर लगती है।
TMN

7
मुझे लगता है कि रिक के पीछे मुख्य मूल्य रोबोट को समझने में मदद करने में नहीं है, अगर बयान, आदि। मुख्य मूल्य उन्हें एक कार्यक्रम लिखने की सामान्य प्रक्रिया को समझने में मदद करने में है। यह उन्हें विशिष्ट, चरण-दर-चरण, एल्गोरिथम तरीके से समस्याओं को देखने में मदद करता है। एक बार जब वे अंग्रेजी में प्रोग्रामिंग की प्रक्रिया को इस तरह के उदाहरण के साथ समझते हैं, तो आप उन्हें यह सिखाकर विवरण भर सकते हैं कि कोड कैसा दिखता है। यह एक शानदार विचार है। +1
फिल

1
मेरे इंट्रोडक्टरी कोर्स (30 साल पहले!) की याद दिलाता है, जो कि [कारेल द रोबोट] ( en.wikipedia.org/wiki/Karel_(programming_language) पर आधारित था । (नोट: लिंक विफल हो जाता है क्योंकि वास्तविक url में इसमें पैरेन्स हैं। उस पृष्ठ पर पहला विकल्प क्लिक करें जो ऊपर आता है।) वैसे भी, कारेल ने पास्कल की तरह सिंटैक्स का उपयोग किया था, लेकिन बहुत ज्यादा नहीं।
जेफके डे

20

आप उन्हें ऐसा करने के लिए कह रहे हैं जो ब्लूम के वर्गीकरण के संज्ञानात्मक डोमेन में विश्लेषण और संश्लेषण को प्रदर्शित करता है , जहां वे वर्तमान में केवल आवेदन प्रदर्शित कर रहे हैं।

दुर्भाग्य से, यह "घोड़े के पानी का नेतृत्व" स्थिति का प्रकार है। विश्लेषण और संश्लेषण भी बहुत मुश्किल है जब आप अभी भी समझ से जूझ रहे हैं। जगह में समझ के बिना, विश्लेषण और संश्लेषण गतिविधियों सीखने की गतिविधियों की तुलना में खरपतवार के रूप में अधिक कार्य करने जा रहे हैं।

मेरी निजी राय है कि प्रोग्रामिंग कक्षाओं में इंट्रो में आवेदन से अधिक कुछ भी उम्मीद नहीं करना ठीक है। यह पहली बार है जब छात्रों को इन अवधारणाओं से अवगत कराया गया है, इसलिए यह बच्चों को पढ़ाने से पहले उन्हें निबंध लिखने के लिए कहने की तरह है। उन उच्च क्रम कौशल का पालन उनके बाद की कक्षाओं में किया जाएगा।


2
ब्लूम के वर्गीकरण के बारे में बहुत दिलचस्प है। मेरी राय में, एक छात्र को एक इंट्रो क्लास में कॉपी / पेस्ट करने की अपेक्षा कोड को समझना अधिक महत्वपूर्ण है। उन्हें यह जानने की जरूरत है कि ifस्टेटमेंट कैसे काम करते हैं और आगे बढ़ने से पहले खुद को स्क्रैच से लिखने में सक्षम हैं। काम कर रहे संज्ञानात्मक भाग प्राप्त करें, फिर आवेदन पर जाएं।
फिल

मैंने हाल ही में रिचर्ड फेलडर द्वारा एक महान शिक्षण से संबंधित पाठ्यक्रम में भाग लिया। उनकी राय थी कि आपको कदम बढ़ाने से पहले ब्लूम के वर्गीकरण के निचले स्तरों को "मास्टर" करने की आवश्यकता नहीं है। एक उदाहरण के रूप में उन्होंने बताया कि कैसे किंडरगार्डन बच्चे विश्लेषण का अभ्यास कर रहे हैं जब उनसे पूछा जाता है कि किस टीवी-शो में बेहतर है - तिल स्ट्रीट या [...] और क्यों।
आइवर

11

क्या आपने कुछ कोड के साथ उन्हें शुरू करने के लिए आपूर्ति करने पर विचार किया है? असाइनमेंट की जरूरत के लिए जो भी सरल मचान है, जैसे एक खाली मुख्य फ़ंक्शन (मुझे नहीं पता कि आप किस भाषा का उपयोग कर रहे हैं)। कुछ ऐसा जो संकलित करता है और चलाता है और कुछ भी नहीं करता है। फिर वे कुछ हद तक आत्मविश्वास के साथ अपने कोड को जोड़ना शुरू कर सकते हैं जो कम से कम इसका हिस्सा काम करता है।

यह वास्तव में "वास्तविक दुनिया" में बहुत आम है; बहुत सारे आईडीई और अन्य उपकरण पहले से ही विशिष्ट पुस्तकालयों / टेम्प्लेट / कॉन्फ़िगरेशन फ़ाइलों के साथ रिक्त प्रोजेक्ट बनाते हैं।


कोड की आपूर्ति करने का एक और तरीका यह है कि आप उन्हें लिखे गए वर्ग के साथ बातचीत करने की आवश्यकता है (जो पिछले कोड के साथ काम नहीं करता है) और असाइनमेंट की एक आवश्यकता है कि आपके कोड को बदला नहीं जा सकता है, और उन्हें अपने आप को संशोधित करना होगा कूट कार्य करने के लिए कोड।
ज़ूट

या यहां तक ​​कि इसे एक तरह से काम करने के लिए कोड प्रदान करते हैं, और व्यवहार को बदलने / जोड़ने के लिए असाइनमेंट बनाते हैं। इस तरह वे मूल कार्य करने के बजाय विशेष व्यवहार पर ध्यान केंद्रित करते हैं।
जॉनएमसीजी

पहली भाषा के लिए, ऐसी भाषा का उपयोग करने का प्रयास करें, जिसे शुरू करने के लिए किसी भी बॉयलरप्लेट की आवश्यकता न हो। इस मामले में पायथन अच्छा है, C / C ++ / Java उदाहरण के लिए एक बुरा है।
रेयान

अगर कुछ भी, IDE, कोड पूरा होने और टेम्पलेट कार्गो-पंथ मानसिकता को बढ़ावा देते हैं । अगर छात्रों को यह समझने में समय लगता है कि उस टेम्पलेट कोड की आवश्यकता क्यों है और वे रेसिपी का अनुसरण करते हुए आँख बंद करके अधिक सीखेंगे।
मार्क बूथ 14

8

किसी भी प्रकार की कार्गो-पंथ मानसिकता ( कार्गो माल खुद सहित ) शामिल प्रौद्योगिकी की बुनियादी समझ की कमी से आती है।

कार्गो-पंथ प्रोग्रामिंग को समस्याग्रस्त आदत के रूप में नहीं सोचा जाना चाहिए, बल्कि प्रोग्रामर का सामना कर रहे अंतर्निहित भ्रम का एक लक्षण है।

इससे भी महत्वपूर्ण बात यह है कि छात्र की समझ की कमी की धारणा केवल उसके आत्मविश्वास की कमी का मूल रूप से गलत अर्थ है और अंतर्निहित समस्या का समाधान नहीं करता है।

इसके बजाय, छात्र की कॉपी-पेस्ट प्रोग्रामिंग शैली एक लाल झंडा होनी चाहिए जो आपको बताए कि यह छात्र उस जटिलता से अभिभूत है जो वह करने की उम्मीद कर रहा है।

वह पिछले काम को एक मचान के रूप में उपयोग कर रहा है, जिस पर अपनी वर्तमान परियोजना का निर्माण करने के लिए, निर्माण ब्लॉकों के रूप में पहले से हल की गई समस्याओं का उपयोग करके समाधान तैयार करने का प्रयास किया गया है। हम सभी एक निश्चित सीमा तक ऐसा करते हैं, लेकिन हम में से अधिकांश अपने भवन खंड के रूप में पिछले काम से प्राप्त ज्ञान का उपयोग करके ऐसा करते हैं। यह छात्र काम के बजाय स्वयं का उपयोग कर रहा है, जिसका अर्थ है कि वह वास्तव में उन ब्लॉकों को नहीं समझता है जिनके साथ वह काम कर रहा है। जहां तक ​​उनकी समझ के परमिट की बात है, और उन्होंने परमाणु इकाइयों के रूप में कोड के बड़े ब्लॉकों का इलाज करने के कारण काम को विघटित कर दिया है क्योंकि उन्हें समझ में नहीं आता है कि वे कैसे काम करते हैं । वह केवल वही जानता है जो वे करते हैं।


धन्यवाद! आपने मुझे खाने के लिए बहुत कुछ दिया। शुरू में मैंने सोचा था कि शायद वे सिर्फ कल्पना नहीं कर सकते हैं कि कोड के एक टुकड़े के अंदर एक संरचना और संरचनात्मक अर्थ है। अब मैं सोच रहा हूं कि शायद उन्होंने इसे समझने के लिए वास्तव में संघर्ष किया, लेकिन असफल रहे और अंतिम उपाय के रूप में कॉपी-पेस्ट का इस्तेमाल किया।
आइवर

7

परियोजनाओं के अपने विचार बदलें !

प्रोग्रामिंग की दुनिया में, शायद ही हम वास्तव में आसपास आने वाले हर समाधान के लिए नई परियोजनाएं बनाते हैं। अधिकांश समय हम पुराने को संशोधित करते हैं।

पूरे सेमेस्टर के लिए प्रत्येक असाइनमेंट के लिए एक समाधान से एक परियोजना के अपने विचार को बदलें। प्रत्येक असाइनमेंट पिछले असाइनमेंट पर बनाता है

उदाहरण

परियोजना: एक लिफ्ट प्रणाली का निर्माण

  • असाइनमेंट 1: वर्तमान मंजिल का प्रिंट आउट लें
  • असाइनमेंट 2: एलेवेटर क्लास के लिए डेटा स्ट्रक्चर्स बनाएं और एलीवेटर के आधार पर फर्श का प्रिंट आउट लें
  • असाइनमेंट 3: कोड बनाएँ जो "एलेवेटर को हिलाता है", फर्श को प्रिंट करता है। कीबोर्ड इनपुट स्वीकार करें (> मंजिल दर्ज करें:)
  • असाइनमेंट 4: कई लिफ्टों को संभालें

मुद्दा यह है कि आप है निर्माण के बजाय एक नया कार्य के लिए वर्ष कार्य रीसाइक्लिंग के पिछले काम पर।


2
वैसे कॉपी-पेस्ट समस्या नहीं है, समस्या यह है कि वे समझ नहीं पाते हैं कि वे क्या कॉपी कर रहे हैं।
आइवर

1
वृद्धिशील असाइनमेंट के साथ एक समस्या यह है कि यदि छात्र जल्दी गड़बड़ करता है, तो वे बाकी के लिए गैर-कार्यशील कोड के साथ फंस जाते हैं। कई प्रशिक्षक बाद के असाइनमेंट के आधार के रूप में उपयोग करने के लिए सहायक कोड की आपूर्ति करने में मदद करेंगे, लेकिन फिर वे मूल समस्या पर वापस आ गए हैं: किसी और के कोड को संशोधित करना जो उन्हें समझ में नहीं आता है।
बैरी ब्राउन

वास्तव में? यदि एक प्रशिक्षक छात्र को अपने कोड को काम करने में मदद करने के लिए पर्याप्त सहायक नहीं है, तो क्या वे वास्तव में अपना काम कर रहे हैं?
रिचर्ड

हर किसी को नियत तारीख तक काम करने का मौका नहीं मिलेगा।
बैरी ब्राउन

@ बेरी, यह हर विषय के साथ ऐसा नहीं है जो पूरे पाठ्यक्रम में तार्किक रूप से बनाता है? उदाहरण के लिए, यदि आप कभी भी यूनियनों और अंतर्विरोधों को नहीं सीखते हैं, तो आप अपने बाकी के असतत गणित पाठ्यक्रम के लिए खराब हो जाते हैं। या यदि आप अपनी आवधिक तालिका को कभी नहीं सीखते हैं तो आप शेष रसायन विज्ञान पाठ्यक्रम के लिए हल हैं। यह विचार छात्रों को सही क्रम में अवधारणाओं को मास्टर करने और उन्हें मास्टर करने तक उनके गधे काम करने के लिए मजबूर करने के लिए है। यदि वे कक्षा के अगले दिन के लिए तैयार होने का कार्यक्रम पाने के लिए एक सप्ताह के लिए पूरी रात नहीं बिता सकते हैं, तो उन्हें सॉफ्टवेयर विकास का कैरियर बनाने की आवश्यकता नहीं है।
जोनाथन हेंसन

7

बहुत उच्च स्तरीय भाषा का उपयोग करने पर विचार करें जिसके लिए बॉयलरप्लेट कोड की न्यूनतम आवश्यकता होती है।

मेरे लिए, यह अक्सर बड़े फ्रेमवर्क या वर्बोज़ भाषाओं में बॉयलरप्लेट कोड होता है जो जादू की तरह महसूस होता है और समझ में बाधा उत्पन्न करता है।

मुझे अपने CS परिचयात्मक प्रोग्रामिंग कोर्स में व्यक्तिगत रूप से ML सिखाया गया था । कई वर्षों के लिए, लिस्प को एमआईटी में प्रोग्रामिंग के लिए परिचय के रूप में पढ़ाया गया था। दोनों ही बेहतरीन विकल्प हैं। उनके कुछ लाभ हैं

  • इंटरएक्टिव दुभाषिया। बहुत महत्वपूर्ण है, क्योंकि यह अन्वेषण की अनुमति देता है।
  • बहुत रसीला। कोई बॉयलरप्लेट नहीं। यह छात्रों को उन विचारों पर ध्यान केंद्रित करने की अनुमति देता है जिन्हें वे व्यक्त करने की कोशिश कर रहे हैं।
  • अपेक्षाकृत अस्पष्ट और विदेशी (कम से कम जावा, सी या अन्य मुख्यधारा की भाषाओं की तुलना में जो छात्रों के पास पहले से ही कुछ अनुभव हो सकता है)। हां, मैं इसे एक समर्थक के रूप में सूचीबद्ध करता हूं। यह छात्रों के लिए खेल के मैदान को समतल करता है, क्योंकि किसी के पास पूर्व अनुभव नहीं होगा। और यह कम संभावना बनाता है कि वे वेब को होमवर्क बनाने के लिए कॉपी-पेस्ट समाधान करने में सक्षम होंगे।

एमएल बहुत अच्छा विकल्प होगा! लेकिन पायथन आपके पहले दो बिंदुओं के साथ भी फिट बैठता है और इसका उपयोग करना आसान है (जिसका अर्थ है कोई बड़ा तकनीकी झंझट नहीं)।
आइवर

जब मैं विंग आईडीई जैसी अच्छी आईडीई के साथ संयुक्त रूप से करता हूं, तो मैं भी पायथन की अत्यधिक सिफारिश करूंगा।
केन

6

मैंने 80 के दशक में नौसिखिया प्रोग्रामर की समस्याओं पर कुछ शोध किया था। आज नौसिखिए प्रोग्रामर के साथ मेरे अनुभव के आधार पर, बहुत कुछ नहीं बदला है। Novices के पास एक उपयोगी मानसिक मॉडल नहीं है कि कंप्यूटर वास्तव में क्या करते हैं। वे जादू की कलाकृतियों का सहारा लेते हैं क्योंकि मशीन खुद जादुई है।

प्रोग्रामिंग को स्वाभाविक रूप से सरल कार्यों को अस्वाभाविक रूप से छोटे चरणों में तोड़ने की आवश्यकता होती है। चूंकि नौसिखिए दैनिक जीवन में इस तरह की बारीक बारीकियों से नहीं निपटते हैं, इसलिए उनके लिए यह पता लगाना मुश्किल है कि छोटे कदम क्या होने चाहिए, खासकर जब यह स्पष्ट नहीं हो कि मशीन क्या छोटे कदम उपलब्ध कराती है। लेकिन फिर भी अगर वे यह पता लगाने का प्रबंधन करते हैं, तो वे एक प्रोग्रामिंग भाषा के स्टिल्टेड सिंटैक्स और सीमित शब्दार्थ के साथ सामना करते हैं (एक अर्ध-प्राकृतिक के रूप में एक अप्राकृतिक भाषा) जो रिमोट कंट्रोल द्वारा रहस्य मशीन को नियंत्रित करता है।

चूंकि वे समस्या के तार्किक समाधान और मशीन की कार्यक्षमता के बीच संबंध नहीं बना सकते हैं, वे भाषा की मांगों को पूरा करने पर ध्यान केंद्रित करते हैं। पहला लक्ष्य कुछ लिखना है - कुछ भी - जो संकलन करता है। दूसरा यह है कि उस कार्यक्रम को ट्विक करें - जो भी वास्तव में करता है - उसे दुर्घटनाग्रस्त होने से बचाने के लिए। फिर, यदि उनके पास समय, ऊर्जा और रुचि है, तो वे उन परिणामों का उत्पादन करने के लिए कार्यक्रम प्राप्त करने का प्रयास करते हैं जो समस्या के अनुरूप होते हैं। साथ ही, वे गलती से लिखित कोड का उत्पादन कर सकते हैं।

सभी संभावना में, नौसिखिया जो प्रोग्राम करना सीखते हैं वे सफल होते हैं क्योंकि उन्होंने कंप्यूटर के एक उपयोगी मानसिक मॉडल का अनुमान लगाया है, इसलिए नहीं कि उन्हें जानबूझकर एक दिया गया है और इसे आंतरिक रूप दिया गया है।


5

आप उनसे कोड के टुकड़ों के बारे में प्रश्न पूछ सकते हैं जिनके लिए लिखित प्रतिक्रियाओं की आवश्यकता होती है? जैसे "यह कोड क्या कर रहा है?" "प्रोग्रामर ने इसे इस तरह क्यों हल किया?" "क्या कोई बेहतर तरीका है?", आदि।

यह वास्तव में उन्हें समस्या के बारे में सोचने के लिए मिलेगा, जो कि कुछ ऐसा है जो वे बिना स्पर्श कोड के भी कर सकते हैं।


5
  • समस्या के कम से कम संभव समाधान बनाने के लिए उन्हें चुनौती दें।
  • प्रोत्साहन के साथ अधिक रसीला समाधानों को पुरस्कृत करें।
  • ऐसे अभ्यास बनाएं जो पूरी तरह से रिफैक्टिंग कोड के आसपास घूमते हैं
  • छात्रों को व्यापार असाइनमेंट दें, और दक्षता और कोड स्वच्छता के लिए उन्हें ग्रेड दें, और ओवरहेड प्रोजेक्टर पर उदाहरण के रूप में कुछ कम से कम कुशल लोगों का उपयोग करें।

2
वास्तव में अभ्यास करना बेहद महत्वपूर्ण है। हालांकि, यह ध्यान रखना अच्छा है कि सबसे छोटा समाधान आवश्यक रूप से सबसे साफ नहीं है, न ही सबसे कुशल (इन शर्तों की परिभाषा के आधार पर भी)।
पेरेट तोर्क

स्कूल में मैंने ऐसे समाधान लिखने की कोशिश की जो किसी मित्र के समाधान की तुलना में चरित्र की लंबाई में कम थे। इसका मतलब छोटे चर नाम और सामान्य लेखन कोड का उपयोग करना है जो अच्छी तरह से नहीं पढ़ता है।
क्रिश्चियन

@Christian संक्षेप में, मैं वास्तव में चरित्र की लंबाई में कम नहीं था, क्योंकि संकलक वास्तव में चर नामों के बारे में परवाह नहीं करता है। मैं कोड जटिलता ... उर्फ के बारे में बात कर रहा हूँ KISS
लिन क्रंबलिंग

4

जोएलफैंस के विचार के समान है कि आप उन्हें एक छद्म कोड (भाषा) का उपयोग करके कागज पर प्रारंभिक असाइनमेंट करते हैं। आप संरचनाओं को जोड़ सकते हैं जैसा कि आप फिट देखते हैं और वे जादू बॉक्स के बारे में चिंता नहीं करते हैं।


4

मेरा मानना ​​है कि 'कार्गो पंथ' से, आपका मतलब है कि वे सामान डाल रहे हैं जो कि आवश्यक है, लेकिन वास्तव में समस्या को हल करने की दिशा में कुछ भी नहीं करता है।

यदि ऐसा है, तो आप हमेशा ग्रेडिंग में कुछ कारक जोड़ सकते हैं जो कि संक्षिप्तता पर आधारित है - अपने प्रोग्राम में अनावश्यक या निरर्थक कोड छोड़ना भविष्य में समस्याओं के बारे में पूछ रहा है, क्योंकि यह टूट सकता है, या बस इसे बनाए रखना अधिक कठिन हो सकता है।

वे एक अंग्रेजी कक्षा में एक लेखन अभ्यास में समान रूप से आंका जाएगा - कोई भी सामान नहीं चाहता है जो एक यादृच्छिक स्पर्शरेखा में बंद हो जाता है या बस आम तौर पर इस बिंदु पर पहुंचने के बिना जुआ है।

जब मैंने एक असेंबली क्लास ली, तो शिक्षक हमें प्रत्येक अभ्यास के लिए कहेंगे यदि वह हमें गति, आकार, या स्मृति उपयोग के लिए कोड लिखना चाहता था, और यदि आपने पूछा कि वह अनुकूलन करने के करीब नहीं आया था तो वह बंद कर देगा। के लिये।

...

यदि वे पिछले समान असाइनमेंट से कोड कॉपी और पेस्ट कर रहे हैं, और यह वास्तव में नई समस्या को हल करने के लिए कुछ है ... ठीक है, यह सिर्फ कोड का फिर से उपयोग है, और जब तक कि वे फिर से उपयोग के लिए कोड के लिए उपयुक्तता के बारे में गलत धारणाएं नहीं बनाते हैं। , मुझे लगता है कि यह उनके लिए पूरी तरह से उचित है। (उदाहरण के लिए, एक फ़ाइल से पढ़ना, इनपुट के लिए प्रिपेट करना ... सभी मॉड्यूलर भागों को फिर से उपयोग किया जा सकता है। यदि आप उन्हें ऐसा नहीं करना चाहते हैं, तो आपको अभ्यासों को भिन्न बनाने की आवश्यकता है।


समस्या यह है कि वे कोड की संरचना को देखे बिना कॉपी-पेस्ट कर रहे हैं - उन्हें लगता है कि पिछली बार इस तरह का पैटर्न उपयोगी था, इसलिए उम्मीद है कि यह भी यहाँ फिट बैठता है। वे आश्वस्त होने के बजाय आशा और प्रयास करते हैं।
आइवर

4

दुर्भाग्य से, जिस तरह से बहुत से लोगों के दिमाग काम करते हैं। इसलिए इस समझ में जाएं कि ऐसे लोग हैं जो आपको इससे 'ठीक' नहीं कर सकते। बहुत सारे लोग हैं जो प्रोग्रामिंग के लिए आवश्यक मानसिक परिशुद्धता के स्तर पर काम करने में असमर्थ हैं। कुछ लोगों को बस इसके लिए डिज़ाइन नहीं किया गया है। मैं यह नहीं कह रहा हूँ कि छात्रों को छोड़ दो - मैं कह रहा हूँ कि यदि आप हर कोई इसे नहीं उठाता है तो आप असफल हो रहे हैं।

कक्षा के संदर्भ के बारे में अधिक जानकारी के बिना, मैं कहूंगा कि इन समस्याओं के साथ छात्रों को बहुत बुनियादी संरचनाओं पर ध्यान केंद्रित करना होगा - सरल अगर / thens, छोरों, आदि। विषम संख्या, हर दसवें नंबर, आदि को प्रिंट करने के लिए सरल दिनचर्या प्रत्येक कोड की 10 से अधिक लाइनें। यदि वे 'जादू की सोच' हैं, तो उन्होंने स्पष्ट रूप से उन बुनियादी बातों में महारत हासिल कर ली है। जब तक वे व्हाट्सएप पर जा रहे हैं, तब तक उन्हें कई अलग-अलग सरल दिनचर्याएं दें। किसी और ने कोड को कागज पर लिखने का उल्लेख किया है - मुझे लगता है कि इन सरल दिनचर्याओं को करने का एक शानदार तरीका भी होगा।

तुम भी उन्हें प्रवाह चार्टिंग सीखने पर विचार कर सकते हैं। कुछ लोगों के लिए, एक एल्गोरिथ्म के प्रवाह को देखने में सक्षम होना, और फिर यह कि कोड से कैसे जुड़ता है, कोड को प्रवाह से जोड़ने में उनके लिए सहायक हो सकता है।


3

आदर्श रूप से पहले व्याख्यान में, उन्हें कुछ पूरी तरह से सार के साथ शुरू करें: उन्हें (एक समूह के रूप में, आप नेता के रूप में) एक सूची से किराने की खरीदारी कैसे करें, और उच्च स्तर के निर्देशों को उत्तरोत्तर तोड़ने के बारे में निर्देश लिखें। जब तक वे आत्मज्ञान तक नहीं पहुंच जाते।

यह उन्हें यह बताने में मदद करता है कि इन निर्देशों का शाब्दिक रूप से एक रोबोट द्वारा पालन किया जा रहा है, जो चीजों का पता लगाना नहीं जानता है। यह एक बहुत ही हाथ की गतिविधि है जहाँ आप उन्हें मार्गदर्शन के प्रभारी हैं, हालांकि होना चाहिए।


अच्छी बात! मैंने ऐसा किया है और मेरा मानना ​​है कि इसने कई छात्रों को सही मार्ग पर निर्देशित किया है। लेकिन सब नहीं।
आइवर

3

एलिस्टेयर कॉकबर्न शू-हा-री की अवधारणा के बारे में बात करते हैं और यह प्रोग्रामिंग पर कैसे लागू होता है, http://alistair.cockburn.us/Shu+Ha+Ri । मुझे लगता है कि आपके छात्रों को इस निरंतरता में ध्यान में रखना महत्वपूर्ण हो सकता है। पहला जो आपकी निराशा को कम करने में मदद करेगा। जब आप पहली बार कुछ सीखना शुरू कर रहे हैं तो कॉपी / इमेट एक बहुत ही स्वाभाविक प्रतिक्रिया और स्वीकृत मोड है। दूसरा, यह आपको आगे बढ़ने के कुछ विचारों को प्राप्त करने में मदद कर सकता है। उदाहरण के लिए, आप एक ऐसी समस्या को चुनने पर विचार कर सकते हैं जिसे कई तरीकों से हल किया जा सकता है (लूप बनाम रिकर्सन, कंसोल बनाम वेब / गुई), फिर स्पष्ट रूप से उन्हें पहले एक तरह से हल करना होगा, फिर दूसरा तरीका - बोनस वे सीख सकते हैं वैध कोड पुन: उपयोग, संघटन, पुन: प्रयोज्य पुस्तकालयों के निर्माण आदि के बारे में।

एक और सफल तरीका जो मैंने देखा है कि परियोजनाओं की एक श्रृंखला है जो एक दूसरे पर निर्माण करती है, लोगों को पीछे गिरने से रोकने के लिए असाइनमेंट के बाद प्रत्येक चरण में एक डिफ़ॉल्ट, कार्यशील संस्करण उपलब्ध है। प्रक्रिया के प्रत्येक चरण को कुछ नया परिचय देना चाहिए। मैं आपको यह अनुदान दूंगा कि यह एक प्रोग्रामिंग क्लास की तुलना में डिज़ाइन वर्ग में करना आसान हो सकता है, लेकिन यह अभी भी संभव होना चाहिए। इसके बारे में एक अच्छी बात यह है कि आप स्पष्ट रूप से प्रत्येक चरण में उनके खिलाफ तुलना करने के लिए उन्हें एक अच्छा (उम्मीद) कार्यान्वयन देते हैं। इस तुलना को एक असाइनमेंट के रूप में उजागर करें, अर्थात, अपने प्रयास के खिलाफ अपने स्वयं के कोड की एक मिनी-कोड समीक्षा करें। आप इसे कई अतिरिक्त क्रेडिट विकल्पों में से एक बनाना चाहते हैं।

हालांकि मैं आम तौर पर "टिप्पणियों" पर बड़ा नहीं हूं, आप ग्रेड आइटम के कोड का दस्तावेज़ीकरण करना चाहते हैं। क्या उन्हें प्रत्येक परियोजना के लिए एक "ऑपरेशन के सिद्धांत" दस्तावेज़ का उत्पादन करना है जो उनके दृष्टिकोण का वर्णन करता है कि प्रत्येक घटक कैसे फिट बैठता है, और वे एक साथ समस्या का समाधान कैसे करते हैं। आम तौर पर, मैं चाहता हूं कि कोड अपने आप में इस पर ज्यादा काम करे, लेकिन यह उन्हें अपनी सोच के कैप लगाने के लिए प्रेरित करेगा और इसे पेपर में डाल देगा।

अंत में, आप रचनात्मक प्राप्त करना चाहते हैं और आपके छात्र एक दूसरे के कोड की समीक्षा कर सकते हैं और इसका मूल्यांकन कर सकते हैं। आपके लिए काम करने के लिए सहकर्मी दबाव डालें। इसे उच्च श्रेणी के कोड (और डॉक्स) के लिए ग्रेड या अतिरिक्त क्रेडिट का हिस्सा बनने दें।


3

बस एक त्वरित सुझाव है। जब भी मुझे एक प्रोग्रामिंग समस्या होती है, जिसे हल करने या डिबग करने की आवश्यकता होती है, तो मैं अपने कोड को देखना पसंद करता हूं और 'कंप्यूटर चलाऊंगा' । इसलिए अगर मैंने कहीं से कोई कोड कॉपी किया है, जब तक कि यह खुद पर पूरा न हो जाए और मुझे इसे संदर्भित करने की आवश्यकता है, तो मुझे यह समझने के लिए लाइन से लाइन पर जाना पसंद है कि क्या चल रहा है। अनिवार्य रूप से कंप्यूटर खेल रहा है। VBA डीबगर अनिवार्य रूप से इस कार्य को आसान बनाता है, लेकिन अपने छात्रों को इसे कागज़ पर करना उन्हें मूल सिद्धांतों की तरह दे सकता है। यह लाइन वास्तव में क्या करती है?


मैंने उन्हें ऐसा करने के लिए सिफारिश की है, लेकिन मुझे लगता है कि कुछ के लिए यह बहुत धीमी है और त्रुटि-प्रवण प्रक्रिया है, कि वे इसे छोड़ने का फैसला करते हैं।
ऐवर

क्या आपने उनके सामने मार्कर का उपयोग करके प्रोजेक्टर पर ऐसा करने की कोशिश की है? अगर मुझे याद है कि मेरे हाईस्कूल प्रोग्रामिंग क्लास में हमारे शिक्षक ने ऐसा किया है, और हालांकि अधिकांश अन्य छात्रों ने ध्यान नहीं दिया कि मुझे लगा कि यह एक उपयोगी कौशल है। (चेतावनी सकल सामान्यीकरण आ रहा है) मेरी पीढ़ी के छात्रों में प्रेरणा पैदा करना कठिन है और युवा, हमने प्रश्न पूछना नहीं सीखा है।
मल्लो

3

मैंने कॉलेज स्तर पर परिचयात्मक प्रोग्रामिंग सिखाई। यह ब्रेड-एंड-बटर कोर्स था, सभी फैकल्टी ने किया और मुझे लगता है कि हमने इसे काफी अच्छा किया है। हमने एक सामान्य पाठ का अनुसरण किया और सामान्य परीक्षाएं लीं, लेकिन हममें से प्रत्येक की अपनी कक्षा विधि थी जो काम करती थी। तब से एक लंबा समय हो गया है, लेकिन कभी-कभी मुझे प्रोग्रामिंग में कुछ बच्चों को ट्यूटर करना पड़ता है, और पूरी तस्वीर उसी के बारे में है।

जिस तरह से मैं कर रहा हूं वह नीचे से शुरू करना है, जितना संभव हो उतना ठोस। छात्रों को जो पता है वह एक संरचना है। उनके पास पहले से ही बहुत सारी अवधारणाएं हैं। मैं उन शीर्ष पर आगे की अवधारणाओं का निर्माण कर रहा हूं, और मैं उन अवधारणाओं को दूर कर रहा हूं जो वे प्रति-उत्पादक हो सकते हैं। उसी समय, मैं उन्हें करके सीखता हूं ।

मैंने Intel 8008 चिप, कुछ EPROM और कुछ सर्किट के साथ एक छोटा सा कंप्यूटर बनाया था। मैंने इसे थोड़ा युगल खेलने के लिए प्रोग्राम किया था जब I / O चिप एक युगल वक्ताओं से जुड़ा था। मैं समझाऊंगा कि कैसे छोटे कार्यक्रम ने काम किया, एक काउंटर को गिनने के लिए एक आंतरिक लूप के साथ। यह देरी के रूप में कार्य करेगा। तब यह आउटपुट बिट को टॉगल करेगा और इसे फिर से करेगा। यह थोड़ी देर के लिए ऐसा करेगा, और फिर एक और देरी के लिए स्विच करेगा, एक और पिच देगा, और इसी तरह। मेमोरी चिप में थोड़ा टाइमर था, और अगर मैं टाइमर इनपुट में से किसी एक के तहत कैपेसिटर लेड को टक करता, तो प्रोग्राम धीरे-धीरे वेइरी चलाएगा । कक्षा बोलने वालों को क्लिक करते हुए सुन सकती है, क्लिक करें, क्लिक करें ... मैं यह समझना चाहता था कि कक्षा एक समय में एक कदम पर कंप्यूटर बहुत सरल चीजें कर रही थी।। तब मैं संधारित्र सीसे को हुक कर देता, और "संगीत" फट जाता। (तालियां)

तब मैंने एक बहुत ही सरल दशमलव कंप्यूटर के लिए एक सिम्युलेटर बनाया था, जिसमें 1000 मेमोरी स्थान थे, जिनमें से प्रत्येक पर हस्ताक्षर किए गए 4-अंकीय दशमलव संख्या थी। इसमें बहुत सरल opcodes थे जैसे "add to संचायक", "कूद अगर नकारात्मक", और इसी तरह। मैं उन्हें इस "मशीन लैंग्वेज" में बहुत कम प्रोग्राम लिखूंगा, जैसे दो नंबर जोड़ना, या नंबर की सूची जोड़ना। तब वे इसे एकल-चरण द्वारा काम करते हुए देख सकते थे, या इसे "तेज" चलाने के लिए एंटर कुंजी दबाकर रख सकते थे।

इस बिंदु को इस अवधारणा में रखा गया था कि कंप्यूटर केवल विभिन्न बुनियादी कार्यों की बहुत कम संख्या में कर सकते हैं, और वे उन्हें एक-एक-बार करते हैं। यह उन धारणाओं का मुकाबला करने के लिए है जिनके पास कंप्यूटर जटिल हैं, और यह कि वे एक ही समय में सब कुछ करते हैं, और अपने दिमाग को बार में पढ़ते हैं।

वहां से हम एक "वास्तविक" भाषा (BASIC :) में प्रोग्रामिंग पर गए, जिसकी शुरुआत बहुत ही सरल लेकिन दिलचस्प कार्यक्रमों के साथ हुई, जो कि सशर्त, लूप, सरणियों, फाइलों, विलय, और इसी तरह से काम कर रहे थे। ऑब्जेक्ट को एक पर्याप्त कौशल सेट में रखना था ताकि वे अपने स्वयं के चुनने की एक परियोजना पर ले जा सकें, क्योंकि यह एकमात्र ऐसी चीज है जो प्रोग्रामिंग को दिलचस्प बनाती है - उपयोग जिसे आप इसे डाल सकते हैं। मैं परियोजनाओं के लिए कुछ विचार फेंकूंगा, और फिर वे इसे वहां से ले जाएंगे। मैं लिखित विचारों के लिए पूछूंगा, और फिर रिपोर्ट की प्रगति, उन्हें अंतिम समय तक स्थगित करने और फिर घबराहट से बचाने के लिए। मुझे लगता है कि परियोजनाएं सबसे अच्छा हिस्सा थीं, क्योंकि वे अपनी शक्ति के तहत सीख रहे थे।

कंप्यूटरों के बारे में एक बहुत ठोस समझ में यह शुरुआती आधार है कि बाद में अवधारणाओं को पढ़ाना बहुत आसान हो गया है, अन्यथा वास्तविक गति-बम्प्स होंगे, जैसे कि सरणियाँ या (बाद के पाठ्यक्रम में) संकेत। हम इस अद्भुत चीज़ के रूप में "अमूर्तता" की अवधारणा को महिमामंडित करते हैं, लेकिन इसे हवा से नहीं, बल्कि एक ठोस आधार पर निर्मित करने की आवश्यकता है।


3

एक saself - सिखाया गया प्रोग्रामर मुझे लगता है कि कोड क्या कर रहा है यह जानने के मामले में एनीमेशन सबसे चुनौतीपूर्ण है। जब एक कार्यक्रम में एल्गोरिदम और गणितीय परिवर्तन होते हैं जो अमूर्त जोड़तोड़ करते हैं, तो यह समझने का एकमात्र तरीका है कि किसी भी बिंदु पर गणित क्या कर रहा है (जब तक कि आप एक प्रतिभाशाली नहीं हैं) कोड के निष्पादन को समझने की आवश्यकता होती है।

अगर मेरा भोला विचार गलत है तो मुझे सुधारें। आप notअपने छात्रों को "डिज़ाइन पैटर्न" का उपयोग करने से रोकना चाहते हैं , लेकिन यह सुनिश्चित करने का तरीका खोजने के लिए कि वे समझ सकें कि वे CnP's क्या हैं? फिर अपने छात्रों को एक एनीमेशन में हेरफेर करने के लिए चुनौती दें। एक एनीमेशन में आउटपुट को ट्विक करने के लिए यह आवश्यक है कि प्रत्येक चरण में क्या हो रहा है। आपकी बताई गई चिंता के लिए, मुझे लगता है कि एक अच्छी तरह से कल्पना की गई एनीमेशन परियोजना स्पष्ट तरीकों से प्रकट होगी जब एक छात्र "इसे प्राप्त करता है" - जब उन्हें एक ऐसे परिवर्तन का एहसास होता है जिसकी आपको उम्मीद नहीं थी या कुछ संबंधित, अन्योन्याश्रित चर को ट्वीक किया गया था।

आपके द्वारा काम कर रहे शैक्षणिक सीमाओं और लक्ष्यों को जाने बिना, मैं यह नहीं कह सकता कि एनीमेशन पूर्ण उत्तर है। एनीमेशन पेशे के बाहर एनिमेशन का एक पूरा पाठ्यक्रम है, मुझे प्रश्न से बाहर निकलने का अनुमान लगाना चाहिए। कुछ परियोजनाओं में कुछ भी कम नहीं हो सकता है कुछ कलात्मक और अद्भुत है, जो बुरा नहीं है।

एक अन्य नोट पर, मैंने हाई-स्कूल-स्तरीय कोडिंग ओलंपिक के बारे में एक अखबार का लेख (हाँ, कागज!) पढ़ा - पूर्व-कॉलेज प्रोग्रामर के लिए प्रतियोगिता - डॉट-डॉट -। उनकी चुनौतियों का वर्णन शुद्ध कोडिंग की स्पष्ट अभिव्यक्ति थी जिसे मैं पढ़ सकता हूं। प्रतियोगियों को एक-दूसरे के खिलाफ और अच्छे अभ्यास मानकों के आधार पर आंका जाता है। इन प्रतियोगिताओं के लिए छात्रों को अपने समाधान की योजना बनाना चाहिए और मौलिक "डिज़ाइन पैटर्न" को कोड करना चाहिए, जिसे समस्या को समय सीमा के भीतर समाप्त करना होगा। इस प्रकार, CnP प्रोग्रामिंग के बारे में आपकी चिंता का समाधान यह है कि यदि छात्र एक ही "कोड चंक्स" लिख सकते हैं, तो वे CnP'n हैं!

मुझे यकीन है कि यह NY टाइम्स में था। त्वरित खोज नहीं मिली। इसी तरह का एक उदाहरण ACM की अंतर्राष्ट्रीय कॉलेजिएट प्रोग्रामिंग प्रतियोगिता है। यह प्रतियोगिता शीघ्र प्रोग्रामिंग पर जोर देती है: "टीम प्रतियोगिता में लाइटनिंग-त्वरित प्रोग्रामिंग एक निश्चित रूप से विचित्र कौशल है, न कि एक नौकरी चाहने वाले एक रिज्यूम के शीर्ष पर होगा।" इस प्रकार मैं सलाह दूंगा कि वास्तविक दुनिया की समस्याओं का अमूर्त उत्तर है।

इसके अलावा,

एचपी कोड वार्स


2

एक प्रोग्रामिंग भाषा का उपयोग करके कक्षा को सिखाएं जो तकनीकी रूप से अच्छा है लेकिन इतना अस्पष्ट है कि वे किसी भी मौजूदा कोड को कॉपी करने में सक्षम नहीं होंगे।


1
मैं उनके बारे में किसी और के काम की नकल करने के बारे में चिंता नहीं करता, लेकिन उनका अपना काम या कुछ उदाहरण स्निपेट हैं, जो दी गई स्थिति में उपयोग करने योग्य नहीं हैं।
आइवर

2

आप उनके साथ कठिन व्यवहार भी कर सकते थे।

उनके लिए कॉपी-पेस्ट हानिकारक बनाने का एक तरीका खोजें। मेरे पास सटीक उदाहरण नहीं है, लेकिन अगर आप पहला अभ्यास करते हैं जिसका समाधान, यदि समान दिखने वाले दूसरे अभ्यास में चिपकाया जाता है, तो कार्गो-पंथ के छात्रों को बहुत लंबे और दर्दनाक "अस्थिर अस्थिरता" या "मूक डेटा भ्रष्टाचार" बग में लाएं। इस बीच एक "गैर कार्गो-पंथ" 2 mn सोच ने सबसे खराब छात्र (यहां तक ​​कि उसने पहला अभ्यास नहीं देखा था) के लिए एक स्पष्ट समाधान लाया होगा। फिर, शायद कुछ संभावना है कि वे सबक सीख सकते हैं, और तीसरे अभ्यास में कोड चिपकाने से पहले दो बार सोच सकते हैं।


1

मुझे संदेह है कि यह व्यवहार एक विश्वास के कारण है कि कार्यक्रम जादू के मंत्र हैं - अधिक संभावना है कि यह आलस्य और प्रेरणा की कमी है।

इसलिए मुझे लगता है कि एक शिक्षक के रूप में आपकी नौकरी आपके छात्रों को प्रेरित करने के लिए है - कोई भी छात्र जो वास्तव में प्रेरित नहीं है, वे एक समाधान को काटेंगे और पेस्ट करेंगे (यह केवल काम करने वाले प्रोग्रामर के लिए है जो मिलने की समय सीमा और नीचे की पंक्तियों के साथ ...)


उन छात्रों में से कुछ के लिए, आलस्य और / या समय सीमा निश्चित रूप से इसका कारण है। लेकिन कुछ वास्तव में कड़ी मेहनत कर रहे हैं ...
ऐवर

@ ऐवर - एक प्रशिक्षक के रूप में, आप शायद छात्रों की ताकत और कमजोरियों के बारे में अधिक जानकार हैं। जिज्ञासा से बाहर, क्या करते हैं आप लगता है कि उन छात्रों कि "कड़ी मेहनत कर रहे हैं" के लिए बाधाओं रहे हैं?
लीघ

@ ली - मुझे लगता है कि उन्होंने अपने मस्तिष्क के विश्लेषणात्मक हिस्से को पर्याप्त रूप से प्रशिक्षित नहीं किया है और वे जानवर बल के साथ काम कर रहे हैं - उनकी कार्य पद्धति संपूर्ण खोज से दूर नहीं है। और उनके लिए वैकल्पिक दृष्टिकोण की व्याख्या करना कठिन है।
आइवर

@ शिव - शायद प्रारंभिक अवस्था में विश्लेषण पर अधिक ध्यान केंद्रित होना चाहिए। उदाहरण के लिए दो भाग का डिजाइन तैयार करना। पहला खंड कोड के भवन ब्लॉकों पर केंद्रित है। जबकि दूसरा डिकंस्ट्रक्ट करता है, डिबग करता है और उसी उदाहरण का विश्लेषण करता है। यानी "क्यों" सवाल पूछता है और कोड को बेहतर बनाने के तरीकों पर चर्चा करता है ताकि वास्तविक विश्व सहसंबंधों के साथ अलग-अलग दृष्टिकोणों (ब्रूट फोर्स, आदि) पर चर्चा हो सके।) जल्दी और अक्सर यह उनके ज्ञान को ठोस बनाने में मदद करता है और उन्हें एक विशेष भाषा में सही वाक्यविन्यास के निर्माण के बजाय प्रोग्रामिंग को देखने के लिए प्रोत्साहित करता है।
लेह

1

सबरूटीन सिखाएं। क्या वे पिछले असाइनमेंट से हड़पने वाले कोड को ले लेते हैं और इसे सबरूटीन में बदल देते हैं। उन्हें समझने के लिए फंक्शन डॉक्यूमेंटेशन के बारे में उन्हें सिखाएँ कि सबरूटिन वास्तव में क्या कर रहा है।


यह वास्तव में समस्या को हल नहीं करता है।
पब्बी

मुझे लगता है कि यह करता है। कार्गो पंथ कोड का समावेश है जो एक उद्देश्य की पूर्ति नहीं करता है। यदि वे अपने कोड को सबरूटीन्स में तोड़ रहे हैं और दस्तावेज कर रहे हैं कि उन सबरूटीन को ऐसा करने में क्या मदद करनी चाहिए। विश्लेषण सीखने का एक बड़ा हिस्सा है और विश्लेषण के लिए चीजों को भागों में तोड़ने की आवश्यकता होती है।
टोनी टॉपर

1

उन्हें कक्षा में आपके सामने असाइनमेंट करें जिसमें कोई इंटरनेट एक्सेस नहीं दिया गया है (स्कूल ने इसे काट दिया है, कक्षा के दौरान फोन का उपयोग न करने की अनुमति दें)। कम से कम परीक्षणों के लिए ऐसा करें। इस बात का कोई कारण नहीं है कि वे बुनियादी प्रोग्रामिंग expercises के लिए इंटरनेट का उपयोग करना चाहिए। परिचय अभ्यास के लिए पुस्तक पर्याप्त संसाधन होना चाहिए। एक बार जब आप एक उन्नत कक्षा में होते हैं, तो इंटरनेट का उपयोग करने की अनुमति दें और उन्होंने पहले ही सीख लिया कि कैसे सोचना है।


1

उन्हें कभी भी समान रूप से ध्वनि देने वाले असाइनमेंट न दें।

या, अधिक पागल, उन्हें शुरू से टीडीडी सीखें। यह लिखने के लिए धक्का देता है (नकल नहीं, लेखन) बहुत सारे कोड (अर्थात् परीक्षण) जो वास्तव में हल होने वाली समस्या को बनाने में मदद करता है।


पहली बार कोड लिखने से परीक्षण लिखना अक्सर कठिन होता है। मेरा सुझाव है कि शायद शिक्षक परीक्षण लिखें, फिर उन्हें छात्रों को उनके असाइनमेंट के खिलाफ चलने के लिए दें।
TMN

@TMN: जो बैकफ़ायर कर सकता है। परीक्षण पास होने तक छात्रों को बेतरतीब ढंग से कोड बदलने के लिए प्रोत्साहित किया जाएगा।
गोरान जोविच 14

@GoranJovic: निश्चित रूप से मैं "निहित रूप से प्रोत्साहित" से सहमत नहीं हूं, लेकिन मुझे पता है कि इरादों के साथ लिखे गए कोड और कोड को भेदने के लिए कोई आसान तरीका नहीं है, बस परीक्षणों को पास करने के लिए। बेशक, यह समस्या अकादमिया तक सीमित नहीं है, या तो ...;)
टीएमएन

@TMN: और वृद्धिशील "एक (डेवलपर की जरूरत के रूप में आसान) एक समय में कदम" गायब हो जाएगा।
हर्बी

समाधान: अपने कार्यक्रमों को लिखते समय छात्रों द्वारा उपयोग किए जा सकने वाले परीक्षणों का एक न्यूनतम सेट प्रदान करें, लेकिन उन्हें चेतावनी दें कि उनके कार्यक्रमों को परीक्षणों के अधिक व्यापक सेट के खिलाफ वर्गीकृत किया जाएगा और यह उन परीक्षणों के खिलाफ चलाया जाएगा जो छात्र लिखते हैं।
बैरी ब्राउन

1

मुझे कुछ ऐसा मिला है जो मेरी कक्षा के लोगों के लिए बहुत मददगार है।

जब मैंने प्रोग्रामिंग शुरू की, तो यह मेरे लिए भी कठिन था, और मैंने कक्षा में बहुत नकल की। फिर घर पर, मैंने छोटे गेम बनाने शुरू कर दिए, जैसा कि मैं एक गेम प्रोग्रामर बनना चाहता हूं, और मैंने पाया कि उन्हें बनाना बहुत आसान है। तब भी जब वे ज्यादा सख्त थे तब हमने कक्षा में जो सामान देखा था। सिर्फ इसलिए कि इसमें मेरी दिलचस्पी है।

मेरी कक्षा के कुछ अन्य लोग अपनी परीक्षा में 40-50% से 90-100% तक गए, क्योंकि उन्होंने ठीक यही किया।


1

जब मैं एक परिचयात्मक प्रोग्रामिंग पाठ्यक्रम में था, तो प्रशिक्षक ने सभी को अंग्रेजी में एक एल्गोरिथ्म लिखने और इसे प्रिंट करने और इसे लिखने से पहले कोड लिखना शुरू करने के लिए आवश्यक किया। फिर हमें बहुत सी टिप्पणियाँ डालनी होंगी जैसे क्रिएट वैरिएबल्स, गेट इनपुट फ्रॉम यूजर, परफॉरमेंस कैलकुलेशन, प्रिंट आउटपुट इत्यादि। जब मुझे लगा कि बहुत सारे थे, तो पर्याप्त टिप्पणी नहीं करने के लिए मुझे कई बार डॉक किया गया था, इसलिए मैंने जोड़ना शुरू किया अधिक। इसने मुझे सोचने पर मजबूर कर दिया कि मैं क्या कर रहा हूं और समाधान लिखूं और अंग्रेजी और जावा के बीच आगे और पीछे अनुवाद करता रहूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.