C ++ [बंद] में बुनियादी बातों से जूझ रहे छात्रों को ट्यूशन देना


26

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

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

क्या किसी के पास कोई सुझाव या सलाह है? जिन छात्रों की मैं मदद कर रहा हूं, वे इस कक्षा में फेल होने के लायक नहीं हैं। यह स्पष्ट है कि प्रशिक्षक इन छात्रों की सीखने की शैली को ध्यान में नहीं रख रहा है। यह कहना है, प्रशिक्षक अपने छात्रों को असफल कर रहा है।


2
टिप्पणीकार: यदि आपके पास कोई उत्तर है, तो उसे उत्तर के रूप में छोड़ दें: इसे टिप्पणी के रूप में न छोड़ें। यदि आपका उत्तर पहले ही जोड़ा जा चुका है, तो उसे वोट दें। यदि आप इस प्रश्न के विषय पर दूसरों के साथ चर्चा करना चाहते हैं, तो चैट का उपयोग करें

1
नहीं है? मेरे अनुभव से ऐसे बहुत से लोग हैं जो प्रोग्राम करते हैं और नहीं चाहिए ...

जवाबों:


42

कुछ चीजें हैं जो व्यावहारिक रूप से हर शुरुआती से संघर्ष करती हैं। छात्रों को कोड लिखने से पहले यह जानना होगा कि कोड लिखना कैसे सीख सकते हैं।

  • अनिवार्य भाषाओं की अनुक्रमिक प्रकृति। लोगों को यह समझने में परेशानी होती है कि कार्यों को अनुक्रम में निष्पादित किया जाता है, एक समय में एक आइटम, एक नुस्खा की तरह। इसे दूर करने का एक तरीका डिबगर के माध्यम से काम करने वाले कुछ कोड दिखाना है।
  • =सी-स्टाइल भाषाओं में असाइनमेंट ऑपरेटर ( ) बेहद भ्रामक है। आपको बहुत सावधानी से समझाने की आवश्यकता है कि a = 5"5 से चर को असाइन करें a, न कि " ए 5 के बराबर है "।
  • शुरुआती के लिए, कोड के संरचित ब्लॉकों के रूप में फ़ंक्शन का वर्णन करना सुरक्षित है जिसे अन्य फ़ंक्शन कूद सकते हैं। साथ ही, शुरुआती लोगों को यह समझने में परेशानी होती है कि C ++ में, फ़ंक्शन तर्क को क्रम से पहचाना जाता है, नाम से नहीं।
  • अधिकांश अनिवार्य प्रोग्रामिंग भाषाओं में कुछ घोषणात्मक घटक और कुछ प्रक्रियात्मक घटक होते हैं, और C ++ कोई अपवाद नहीं है। सुनिश्चित करें कि छात्र समझता है कि कोड के कुछ हिस्से कार्यक्रम की संरचना का वर्णन करते हैं, और अन्य भाग (फ़ंक्शन) यह वर्णन करते हैं कि कार्यक्रम को क्या करना चाहिए।
  • डिबगर के साथ एक कार्यक्रम के माध्यम से कदम रखना एक अत्यंत महत्वपूर्ण और अक्सर उपेक्षित शिक्षण उपकरण है
  • भावों के प्रकार होते हैं3+3एक पूर्णांक है, 3.5 + 3एक डबल है, "3" + "3"(C # में) एक स्ट्रिंग है, x == 5 * 3 + 25एक बूलियन है (या C ++ में पूर्णांक)। यह सुनिश्चित करने के लिए बहुत समय व्यतीत करें कि छात्र इस धारणा के साथ पूरी तरह से सहज है।
  • वैरिएबल स्कोप एक ऐसी चीज है जिससे शुरुआती हर समय भ्रमित रहते हैं। छात्र को समझाएं कि गुंजाइश कैसे काम करती है, और सुनिश्चित करें कि वे जानते हैं कि xएक दायरे में xपरिभाषित दूसरे दायरे में परिभाषित से अलग है ।
  • प्रत्येक चर को अपने जीवनकाल में कम से कम तीन बार संदर्भित किया जाता है: घोषणा, असाइनमेंट (अक्सर घोषणा के रूप में एक ही पंक्ति पर किया जाता है), खपत। यदि इनमें से कोई भी गायब है, तो कहीं न कहीं एक वैचारिक गलती है। इसी कारण से, यदि आप किसी कार्यशील कार्यक्रम का विश्लेषण कर रहे हैं, तो आप हमेशा चर के उद्देश्य का पता लगाने के लिए कोड में इन तीन चीजों की तलाश कर सकते हैं।
  • forलूप को तब तक नहीं पढ़ाया जाना चाहिए जब तक कि whileलूप का उपयोग करके पुनरावृत्ति के पर्याप्त उदाहरण न दिए जाएं। शॉर्टहैंड सिंटैक्स भ्रामक है, और यह छात्रों को आश्चर्यचकित करता है कि वे सिर्फ whileलूप का उपयोग क्यों नहीं कर सकते हैं । एक forलूप शीट जो लूप के संदर्भ में एक whileलूप का वर्णन करती है, सहायक हो सकती है।
  • Arrays और संकेत सिखाना काफी आसान है, लेकिन सीखने के लिए एक बुरा सपना। दूसरे शब्दों में, जब तक यह क्लिक नहीं करता, तब तक अभ्यास महत्वपूर्ण है।
  • यह विचार कि कोड पाठ है और एक संकलित कार्यक्रम वास्तव में एक फ़ाइल कुछ शुरुआती लोगों के लिए मायावी है। उन्हें खोल में .cpp, .h और बाइनरी फ़ाइलों को दिखाना सुनिश्चित करें।

C ++ के OOP घटक पूरी तरह से एक अलग जानवर हैं, और मुझे उम्मीद है कि प्रशिक्षक वहां नहीं पहुंचेंगे - क्योंकि OOP को उन भाषाओं का उपयोग करके सबसे अच्छा पढ़ाया जाता है जो जमीन से OOP होने के लिए डिज़ाइन किए गए थे। मेरे अनुभव में, C ++ के माध्यम से OOP पढ़ाना कभी भी ठीक नहीं रहा।


2
"लोगों को यह समझने में परेशानी होती है कि कार्यों को अनुक्रम में निष्पादित किया जाता है"? मुझे लगता है कि वस्तुतः कोई भी व्यक्ति के साथ समस्या नहीं है (सिवाय, शायद, लोग जो प्रक्रियात्मक शुरू करने से पहले कुछ कार्यात्मक भाषा सीख चुके हैं)। लेकिन मैं आपकी हर बात के बारे में सहमत हूं।
लेफ्टनैबाउटआउट

3
डिबगर के साथ कदम रखने के लिए +1, इसलिए उन्हें कार्यक्रम और इसके निष्पादन के बीच अंतर का एहसास होता है।
माइक डनलैवी

4
@leftaroundabout आपको आश्चर्य होगा। गणित ज्यादातर घोषणात्मक है, इसलिए अत्यावश्यक भाषाएं जो कोई भी सीखा हुआ बीजगणित फेंक सकता है।
री मियासाका

2
यह उत्तर "अवधारणाओं से झुनझुने" का एक सा प्रतीत होता है। अवधारणाएं निस्संदेह सही हैं और निश्चित रूप से महत्वपूर्ण हैं, लेकिन इस तरह से सिखाना थोड़ा सा है जैसे किसी को सड़क के नियमों को तोड़-मरोड़ कर चलाना सिखाने की कोशिश करना।
रिवालक

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

19

क्या आपने पहले प्रोग्रामिंग सिखाई है?

मैंने सीएस और गैर-सीएस की बड़ी कंपनियों को चार साल तक प्रोग्रामिंग सिखाई। पहला सेमेस्टर, मेरा अनुभव आपके जैसा था, जब तक मैंने कुछ चीजें नहीं सीखीं।

जो बात मुझे सरल लगती थी, वह शुरुआती लोगों के लिए बिल्कुल भी सरल नहीं थी।

भाषा के बावजूद, आपको एक मानसिक रूपरेखा रखने की ज़रूरत है - चीजें इतनी स्पष्ट हैं कि आपको एहसास भी नहीं होता कि आप उन्हें जानते हैं, जैसे:

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

  • चर महत्वपूर्ण हैं। यह समझना आवश्यक है कि एक चर का नाम, और रन समय में इसकी सामग्री, दो पूरी तरह से अलग चीजें हैं। शुरुआती लोग इससे जूझते हैं। अगर मैं कहता हूं "अपना नाम इनपुट करने के लिए एक कार्यक्रम लिखें और फिर आपको नमस्ते कहें", तो उन्हें यह पता लगाने की आवश्यकता है कि उन्हें अपना नाम रखने के लिए एक चर की आवश्यकता है, और उन्हें चर के लिए एक नाम सोचना होगा, और वे लुभाएंगे अपने आप को नाम दें और आश्चर्य करें कि "इनपुट" का क्या अर्थ है।

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

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

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

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

उम्मीद है की वो मदद करदे।


मुझे वह सिम्युलेटेड कंप्यूटर आइडिया पसंद है। क्या आपके पास इसके लिए एक औपचारिक भाषा है, या क्या आप केवल छद्म भाषा / सादे अंग्रेजी में विचारों पर चर्चा करते हैं?
री मियाँसाक

@ री: मैंने लिखा है (मूल रूप में) एक सिम्युलेटर जिसे सरल कहा जाता है। यह सब कीबोर्ड इंटरफेस था। उपयोगकर्ता "मेमोरी" में मान दर्ज कर सकता है; तब वे इसे सिंगल-स्टेप कर सकते थे और अगर वे चाहते तो प्रत्येक बिंदु पर संचायक और मेमोरी की जांच कर सकते थे। मुझे लगता है कि यह वास्तव में महत्वपूर्ण था क्योंकि यह उन्हें ऐसा करने के लिए मिला , न कि केवल इसके बारे में बात करने के लिए।
माइक डनलैवी

ठिक है। धन्यवाद, मुझे ऐसा कुछ करने की कोशिश करनी चाहिए।
री मियासाका

मेरी राय में यह # 1 जवाब होना चाहिए।
रिवालक

12

मेरी राय में C ++ पहली भाषा के रूप में एक ओवरकिल है।

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

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


2
मैं सहमत हूं, लेकिन आमतौर पर प्रोफेसरों को यह चुनने का अधिकार नहीं है कि किस भाषा को पढ़ाया जाए, बहुत कम TAs।
री मियासका

4
मैं अजगर पर असहमत हूं। मैं C ++ पर अपनी पहली CS 101 कक्षा से गुज़रा और फिर एक ऐसे स्कूल में गया, जिसने Python में CS 101 पढ़ाया। जब हम सभी एक ही सीएस 201 कक्षा में थे, तब पायथन के छात्र भी मूल बातों पर भ्रमित थे ... लेकिन सभी सी ++ छात्रों ने उत्कृष्ट प्रदर्शन किया।
ओगमाओसिरिस

@OghmaOsiris, सच कहूँ तो, मैं अजगर के बारे में पर्याप्त नहीं जानता, लेकिन हो सकता है कि आपने जो देखा है वह बस एक आत्म-चयन पूर्वाग्रह का प्रकटीकरण हो सकता है। आखिरकार, C ++ कुछ छात्रों के लिए डरावना है (विशेषकर प्रोग्रामिंग में सबसे अनुभवहीन छात्रों के लिए)।
Stephan Branczyk

@ ओघमा 201 क्लास क्या थी? यदि यह कुछ निम्न-स्तर का है, तो शायद किसी शर्त के रूप में सी के साथ इसकी अपनी शाखा होनी चाहिए।
री मियासका

1
@ ओघमाओसिरिस: हम्म मुझे असहमत होना है, अच्छी तरह से असहमत नहीं है, मेरी अनुभवहीनता को अजगर के रूप में स्विच करने का एक अलग अनुभव साझा करें क्योंकि पहली भाषा मैं बहुत मददगार साबित हुई है, जहां तक ​​मुझे पता है (पहला जावा नहीं C ++)। मुझे नहीं लगता कि अलग-अलग अनुभव पूफ़ के रूप में गिना जाता है कि एक बेहतर है कि दूसरा, यह कभी न खत्म होने वाला युद्ध है। हालांकि मैं तर्क दे सकता हूं कि पायथन शुरू करने के लिए एक शानदार प्रोग्रामिंग भाषा हो सकती है क्योंकि यह आपके रास्ते में नहीं आती है, यह वास्तव में बेहतर है कि अधिकांश प्रोग्रामिंग भाषाएं, जो कई छात्रों को मिलती हैं ....
ट्रूफ़ा

4

यहाँ मैं क्या सलाह दूंगा:

  1. उन्हें यह पता लगाने के लिए आवश्यक सभी विवरण दें
  2. उन्हें विवरण को समझने की कोशिश करने के लिए प्रोत्साहित करें
  3. सुनिश्चित करें कि उनके पास कॉम्पैक्ट रूप में संग्रहीत विवरण हों जब भी उन्हें आवश्यकता हो

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


3

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

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


3

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

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

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

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

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

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

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

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

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

उन्हें जल्दी और अक्सर संकलन करना सिखाएं। न्यूनतम कंकाल कोड (कहें, हैलो दुनिया), संकलन / परीक्षण लिखें। कुछ पंक्तियाँ जोड़ें, फिर से संकलित करें। त्रुटियों को खोजने के लिए इसकी बहुत आसान है यदि आप केवल एक छोटी बाल्टी में बदलाव देख रहे हैं तो बड़ी बाल्टी नहीं।

उन्हें सीखने में मदद करें कि किसी समस्या को कैसे हल किया जा सकता है। यह वही बात है जो हम पेशेवर प्रोग्रामर करते हैं जो बहुत कठिन समस्याओं को हल करते हैं जिन्हें हम नहीं जानते कि कैसे हल करना है। आप इसे तब तक टुकड़ों में तोड़ते रहते हैं जब तक आपको कुछ ऐसा न मिल जाए जिसे आप या तो हल करना जानते हैं या हल करना सीख सकते हैं। "कार्यशील समाधान के लिए आपको क्या कदम उठाने की आवश्यकता होगी?" ठीक है, पहले आपको कुछ कंकाल कोड (हैलो दुनिया) की आवश्यकता होगी। क्या आप जानते हैं कि वह काम कैसे करना है? हाँ, बहुत अच्छा, इसलिए जब हम बात कर रहे हैं तो आप ऐसा करके शुरू कर सकते हैं! फिर इसे इनपुट के रूप में फाइल को पढ़ना होगा। क्या आपको अध्याय 4 में उस बारे में पढ़ना याद है? ज़रुरी नहीं? आप जाने क्यों नहीं देखते हैं कि आप हैलो दुनिया चलाने के बाद, और देखें कि आप उस काम को पाने के कितने करीब पहुंच सकते हैं और फिर मुझे वापस बुला सकते हैं और मैं ' जब आप उस पर अटक जाते हैं तो आपको कुछ और मदद मिलेगी। समस्या को हल करने के लिए आवश्यक कदमों के लिए पहले कुछ बार आपको उनके लिए एक क्रमांकित सूची बनाने की आवश्यकता हो सकती है, ताकि वे उदाहरण से सीख सकें कि समस्या का समाधान कैसे किया जाए।

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

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

उन्हें सिखाएं कि जहां कोड काम करना बंद कर देता है वहां संकीर्ण कैसे करें। सामान को तब तक बाहर रखें जब तक कि आप उस चीज़ के पास वापस न पहुँच जाएँ, और फिर धीरे-धीरे सामान वापस जोड़ें जब तक कि आप फिर से उस सेगफॉल्ट को प्राप्त न कर लें।

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

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

चूँकि आप C ++ में पढ़ा रहे हैं, मुझे लगता है कि कक्षाएं एक अमूर्त विषय के रूप में सामने आएंगी, जो कुछ छात्र "पाने" के लिए संघर्ष करते हैं। अक्सर कक्षाओं के अमूर्त को कुछ यादृच्छिक वास्तविक विश्व वस्तु के उदाहरणों के साथ पढ़ाया जाता है, जैसे "एटीएम मशीन", और एनालॉग्स को वास्तविक दुनिया ऑब्जेक्ट के लिए बनाया जाता है। आपके पास चर हो सकते हैं कि आपके पास कितना पैसा है, इसके बारे में जानकारी रखने के लिए, आपके पास तरीके हैं, जो नियम की तरह हैं, जो एटीएम मशीन को विशेष परिस्थितियों का जवाब देने के तरीके बताते हैं, आदि। कभी-कभी एक सादृश्य वह है जो किसी विशेष व्यक्ति के लिए "चिपक जाता है" , और अन्य छात्रों ने एक अलग को बेहतर समझा।

जब भी संभव हो, उनके लिए चित्र बनाएं। एक अनुक्रम आरेख की तरह जो समय के साथ होता है, जिससे उन्हें यह जानने में मदद मिलती है कि वे जो कोड लिख रहे हैं, उसकी बड़ी तस्वीर क्या है। उपयोगकर्ता इस बटन पर क्लिक करता है। फिर प्रोग्राम को x, y और z कर के जवाब देना चाहिए। पोस्ट ऑफिस में पीओ बॉक्स के एक गुच्छा की तरह एक सरणी बनाएं जो प्रत्येक को केवल एक नंबर पकड़ सकता है, और बॉक्स के सामने "पते" की ओर इशारा करते हुए तीर की तरह संकेत करता है। आदि।


2

प्रोग्रामिंग भाषाओं के लिए सभी अद्भुत विकल्पों में से, यह कॉलेज गैर-सीएस की बड़ी कंपनियों के लिए अपनी इंट्रो सीएस क्लास के रूप में सी ++ का उपयोग करता है ?? प्रतिभाशाली प्रशिक्षक के हाथों में, यह दूरस्थ रूप से बोधगम्य हो सकता है - लेकिन यह इतना कठिन क्यों है?

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

शायद अब अधिक आधुनिक निर्देशात्मक प्रोग्रामिंग भाषाएं हैं जो "कारेल द रोबोट" की भूमिका को भरती हैं? अपने छात्रों के लिए शायद बहुत देर हो चुकी है, हालांकि।


हमारे पास ऐलिस नामक एक समान कार्यक्रम था।
ओगमाओसिरिस


@OghmaOsiris ऐलिस लिंक टूट गया है। अनुगामी "को url में जोड़ा गया था।
Zoot

हाँ, इसके बिना '') को काट दिया गया।
ओगमाओसिरिस 16

En.wikipedia.org/wiki/Alice_(software%29 प्रासंगिक प्रासंगिक चर्चा का प्रयास करें : meta.stackexchange.com/questions/25706/…
Zoot

2

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

0-उन्हें एक साधारण समस्या दें (एक अभिव्यक्ति का मूल्यांकन करें)।

1-उन्हें यह पता लगाने के लिए समय दें।

2-उन्हें जवाब दें।

3-लाइन से उत्तर रेखा से गुजरें

4-उनसे अपने उत्तर की तुलना उनके अटैम्प्ट से करने को कहें

5-उन्हें इस समस्या से सबक प्राप्त करने के लिए कहें

6-एसएएमई समस्या के लिए एक और कदम जोड़ें, एक आईएफ बयान की आवश्यकता वाली स्थिति कहें

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

इसके अलावा,

-उनके लिए हर 2 कक्षाओं या घर पर प्रयास करने के लिए एक बोनस सरल समस्या का सामना करें

-प्रत्येक छात्र के साथ यह देखना कि वह कौन सी बात है जो उसे आगे जाने से रोक रही है

-सुधार आसान संदर्भ सामग्री, जटिल विषयों और जटिल पुस्तकों को भूल जाओ

उनकी प्रतिक्रिया को बार-बार भूल जाएं और उसका उपयोग करें

उन्हें कक्षा में आने से पहले अगले विषय की तैयारी के लिए ले जाएं


2

सीएस 101 से गुजरने पर मुझे क्या मदद मिली जब मैं कोड को देखने से पहले तर्क सीख रहा था। हम सत्य तालिकाओं और पूर्वानुपात कलन के माध्यम से चले गए ताकि हम यह सोचना शुरू कर दें कि "यह सच है या गलत है" और न कि "यह इस या उस के बराबर है"।

वह सही था जब मेरे लिए सब कुछ क्लिक किया गया था। एक बार जब मुझे पता चला कि प्रोग्रामिंग मूल रूप से अपने मूल में सही / गलत मूल्यों में हेरफेर कर रही है, तो यह सब अपेक्षाकृत सरल हो गया।

और इसने इसे बनाया इसलिए मुझे कोई फर्क नहीं पड़ा कि मैं किस भाषा का उपयोग कर रहा था, तर्क हर जगह एक जैसा है। सिंटैक्स भ्रामक हो सकता है, लेकिन मैं कह सकता हूं "ठीक है, ओज में सीआई इस तरह से कक्षाओं में संदेश भेजते हैं और सी ++ में संदेश इस तरह से भेजे गए थे। लेकिन एल्गोरिथ्म बिल्कुल भी नहीं बदला है।" आदि।


2

वहाँ एक एसीएम या आईईईई लेख कहीं है कि क्यों शुरुआती (यहां तक ​​कि सीएस स्नातकों के क्षेत्र में शुरू) के विवरण में से कुछ में चला जाता है एक वरिष्ठ प्रोग्रामर के पीछे बैठने और उन्हें एक कोड देखने की जरूरत है।

मुश्किल समस्याओं के लिए पेशेवर अक्सर जोड़ी बनाते हैं। छात्रों को भी अक्सर नहीं कहा जाता है। युग्मन के लाभ (कीबोर्ड पर ले जाना): 1. छात्र को बताया जाता है कि वह क्या गलत कर रहा है। तत्काल प्रतिक्रिया। 2. जब शिक्षार्थी शिक्षक को देखता है तो शिक्षार्थी उन बातों पर ध्यान देता है जो शिक्षक ने कभी इंगित करने के लिए नहीं सोचा होगा।

किसी छात्र को बुरी प्रथाओं को विकसित करने देने के बजाय, उन्हें कली में डाल दिया जाता है। (मैं यहां # 2 के साथ # 1 फ्लिप करूंगा और छात्र को प्रशिक्षक / TA FIRST देखने दूंगा )

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

शिक्षार्थियों को यह जानना आवश्यक है कि लेखन कहाँ से शुरू किया जाए, और कहाँ रुकना और संकलन करना है। हमारे दिमाग को ज्यादातर बाएं से दाएं ऊपर से नीचे तक पढ़ने के लिए तार-तार किया जाता है, लेकिन एक कार्यक्रम एक पूरे पृष्ठ में अपने साहसिक पुस्तक को चुनने जैसा है!

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

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

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

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


1
btw, अगर कोई मुझे उस लेख के शीर्षक की ओर इशारा कर सकता है तो मैं उसकी सराहना करूँगा!
डेविड

2

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

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


2

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

मैं यह कहता हूं कि कोई ऐसा व्यक्ति जो अपने पहले वर्ष के सीएस कोर्स में असफल रहा हो, मैंने पहले ही बहुत प्रोग्राम कर लिया था और मुझे सभी अवधारणाएं (वीबी, हाँ बेबी) मिल गईं, लेकिन सी ++ सिर्फ मेरे लिए क्लिक नहीं करेगा। मैं बहुत मूल बातें पर वापस जा रहा हूं और इसे वहां से काम कर रहा हूं, फिर इसने क्लिक किया, लेकिन अगर किसी ने कहा था "आप एक बेवकूफ नहीं हैं, यह सिर्फ कठिन है" तो इससे मेरा जीवन आसान हो जाएगा।


0

आपने कहा "ये छात्र गणित, जीव विज्ञान या भौतिकी सीखना सीख सकते हैं, लेकिन जब प्रोग्रामिंग की बात आती है तो वे तकनीक काम नहीं कर रही हैं"।

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

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

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

C ++ पारंपरिक हैलो दुनिया में एक प्रवेश बिंदु और एक आउटपुट डिवाइस की आवश्यकता होती है। छात्र को पहले से ही परिचित होना चाहिए। इस तरह के पाठ्यक्रमों की सफलता पहले दिन पर निर्भर करती है। आपको कंप्यूटर के अंदर क्या होता है, यह समझने के लिए कि उन्हें प्रोग्रामिंग क्या है, इसे समझने की आवश्यकता है।
बाकी वाक्य रचना (विज्ञान) और अमूर्त (कल्पना) है

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