जब मैं कॉलेज में था, तो मैं अन्य पाठ्यक्रमों के बीच प्रोग्रामिंग कोर्स के लिए परिचय के लिए एक ट्यूटर हुआ करता था। आप जिस समस्या का वर्णन कर रहे हैं वह असामान्य नहीं है। आपकी विशिष्ट भूमिका क्या है, इसके आधार पर, आपके पास अलग-अलग दृष्टिकोण हो सकते हैं जिन्हें आप लेना चाहते हैं।
सबसे पहले, यदि यह कक्षा में छात्रों के महत्वपूर्ण हिस्सों को प्रभावित करने वाली एक व्यापक समस्या है, यदि आपके पास ऐसा करने की सुविधा है, तो मैं इस बारे में विशिष्ट प्रतिक्रिया के साथ पाठ्यक्रम को पढ़ाने वाले प्रोफेसर से संपर्क करूंगा कि छात्र किन अवधारणाओं को समझने में असफल हो रहे हैं, ताकि वह या वह या तो उस सामग्री की अतिरिक्त समीक्षा को शामिल कर सकती है क्योंकि यह शब्द में फिर से आता है, या भविष्य की शर्तों के लिए पाठ्यक्रम में सुधार करता है।
यदि आप अपने प्रयोगशाला समय के अलावा पाठ्यक्रम के लिए एक चर्चा अनुभाग पढ़ाते हैं, तो यह उन चीजों पर प्रकाश डालने का एक शानदार समय होगा जो व्याख्यान में भ्रमित थे और उन्हें और अधिक ठोस बनाने में मदद करते हैं और यह सुनिश्चित करते हैं कि सभी बुनियादी बातों को समझा गया था।
यदि आपके पास इन छात्रों के साथ काम करने का एकमात्र समय ट्यूशन लैब में है, तब भी आप इस समय का उपयोग छात्रों को एक या एक, या कुछ समय पर पढ़ाने के लिए कर सकते हैं। और अपना होमवर्क पूरा करें।
वे कक्षा में इतना खोया हुआ महसूस कर सकते हैं कि वे यह भी नहीं जानते हैं कि प्रश्न कहाँ रोकना और पूछना है। यदि ऐसा है, तो उनके साथ मूल बातें पर वापस जाएं। जब वे अंतिम बार समझ गए थे कि वे क्या कर रहे थे? यदि वे अनिश्चित हैं, या "कभी नहीं समझा" है, तो आपको हैलो वर्ल्ड की व्याख्या करने के लिए शुरुआत में सभी तरह से वापस जाना पड़ सकता है, उन्हें चीजें सिखाना जैसे कि एक चर क्या है, कंप्यूटर उनकी "निर्देशों" की सूची कैसे लेता है और कोशिश करता है उन्हें क्रम में करें, लेकिन कंप्यूटर हमारे जैसा "स्मार्ट" नहीं है, इसलिए आपको बहुत शाब्दिक होना चाहिए और कंप्यूटर को समझने के लिए बिल्कुल सही बातें कहनी चाहिए, आदि।
यह वास्तव में संघर्ष और हताशा का एक बिंदु है जो मैंने गैर-बड़ी कंपनियों के प्रोग्रामिंग पाठ्यक्रमों में अक्सर देखा है। छात्र कुछ कोड लिखते हैं। यह "के बारे में" सही लगता है, लेकिन फिर वे इसे संकलित करने के लिए जाते हैं और यह एक त्रुटि, एक बहुत ही गुप्त त्रुटि देता है। और उन्हें नहीं पता कि इसमें क्या गलत है। और घंटों तक उनके कोड को घूरते रहे। फिर अंत में यह पता चला कि यह कुछ ऐसा है जो तुच्छ लगता है, जैसे कि एक लापता अर्ध-बृहदान्त्र, या गलत जगह पर एक ब्रेस। फिर वे इसे फिर से संकलित करते हैं, और अभी भी एक त्रुटि है, यह कुछ और है। उन्होंने दूसरी बार एक चर नाम का इस्तेमाल किया, दूसरी बार जब उन्होंने इसका इस्तेमाल किया। और इसी तरह। इसलिए वे मदद के लिए किसी मित्र या ट्यूटर या किसी से पूछते हैं, और वे अपने सिर के ऊपर से उत्तर दे सकते हैं "ओह बस इसे वहां जोड़ें और फिर यह काम करेगा।" इसलिए उनका अनुभव है कि प्रोग्रामिंग थोड़ी "रहस्यमय" है
यह एक ट्यूटर के रूप में एक क्षेत्र है, जहां आपके पास मदद करने के लिए बहुत जगह है। उनके हताशा के स्तर के आधार पर, मेरे पास यह जानने में विभिन्न दृष्टिकोण हो सकते हैं कि उनका कोड क्यों काम नहीं कर रहा है। यदि वे इसे प्राप्त करने की तरह हैं, तो मैं उन्हें संकेत दे सकता हूं और उन्हें अपने दम पर निकालने में मदद करने का प्रयास कर सकता हूं। लेकिन अगर वे निराश होने के लिए तैयार होने के बारे में अपनी रस्सी के अंत में हैं, तो मैं अक्सर उन्हें एक जोड़े को मुफ्त में जवाब दूंगा, और फिर कम से कम उनसे सवाल पूछने की कोशिश करता हूं जैसे "क्या आप समझते हैं कि इस बदलाव ने आपका कार्यक्रम क्यों तय किया है ? "
कुछ छात्रों के लिए, विशेष रूप से गैर-बड़ी कंपनियों के लिए, एक अच्छा प्रोग्रामर होने या प्रोग्रामिंग का आनंद लेने के लिए आवश्यक विस्तार पर ध्यान नहीं दिया जा सकता है। आप उन्हें विवरणों पर ध्यान देने में मदद करने के लिए रणनीतियों के माध्यम से हाथ पकड़ सकते हैं, और समस्याओं को हल करने के लिए पर्याप्त रूप से व्यवस्थित हो सकते हैं, भले ही यह उनके लिए एक चुनौती हो।
लेकिन अपने कोड "ठीक से" इंडेंट करने वाले छात्रों के बारे में गुदा-प्रतिशोधी - इसलिए अक्सर, शुरुआत करने वाले प्रोग्रामर घोंसले के शिकार और गुंजाइश के साथ समस्याएं पैदा करते हैं क्योंकि उनके पास गैर-मिलान वाले ब्रेसिज़ या जैसे हैं क्योंकि वे ध्यान नहीं देते हैं कि क्या के तहत नेस्टेड है। उन्हें "चीजों की जांच करने के लिए एक चेकलिस्ट दें जब आपका प्रोग्राम संकलित नहीं करेगा", जैसे सभी कोड को ठीक से इंडेंट करें और ब्रेसिज़ मैच सुनिश्चित करें, सुनिश्चित करें कि सभी लाइनें अर्धविराम में समाप्त होती हैं, खासकर लाइन नंबर के आसपास जहां पहली त्रुटि दिखाई देती है। ऊपर, आदि।
उन्हें जल्दी और अक्सर संकलन करना सिखाएं। न्यूनतम कंकाल कोड (कहें, हैलो दुनिया), संकलन / परीक्षण लिखें। कुछ पंक्तियाँ जोड़ें, फिर से संकलित करें। त्रुटियों को खोजने के लिए इसकी बहुत आसान है यदि आप केवल एक छोटी बाल्टी में बदलाव देख रहे हैं तो बड़ी बाल्टी नहीं।
उन्हें सीखने में मदद करें कि किसी समस्या को कैसे हल किया जा सकता है। यह वही बात है जो हम पेशेवर प्रोग्रामर करते हैं जो बहुत कठिन समस्याओं को हल करते हैं जिन्हें हम नहीं जानते कि कैसे हल करना है। आप इसे तब तक टुकड़ों में तोड़ते रहते हैं जब तक आपको कुछ ऐसा न मिल जाए जिसे आप या तो हल करना जानते हैं या हल करना सीख सकते हैं। "कार्यशील समाधान के लिए आपको क्या कदम उठाने की आवश्यकता होगी?" ठीक है, पहले आपको कुछ कंकाल कोड (हैलो दुनिया) की आवश्यकता होगी। क्या आप जानते हैं कि वह काम कैसे करना है? हाँ, बहुत अच्छा, इसलिए जब हम बात कर रहे हैं तो आप ऐसा करके शुरू कर सकते हैं! फिर इसे इनपुट के रूप में फाइल को पढ़ना होगा। क्या आपको अध्याय 4 में उस बारे में पढ़ना याद है? ज़रुरी नहीं? आप जाने क्यों नहीं देखते हैं कि आप हैलो दुनिया चलाने के बाद, और देखें कि आप उस काम को पाने के कितने करीब पहुंच सकते हैं और फिर मुझे वापस बुला सकते हैं और मैं ' जब आप उस पर अटक जाते हैं तो आपको कुछ और मदद मिलेगी। समस्या को हल करने के लिए आवश्यक कदमों के लिए पहले कुछ बार आपको उनके लिए एक क्रमांकित सूची बनाने की आवश्यकता हो सकती है, ताकि वे उदाहरण से सीख सकें कि समस्या का समाधान कैसे किया जाए।
यदि वे कक्षा में कुछ नहीं बल्कि सभी सामग्री प्राप्त कर रहे हैं, तो उन्हें कक्षा में प्रश्न पूछने के लिए प्रोत्साहित करें, क्योंकि दस में से नौ बार, वे एकमात्र छात्र नहीं हैं जो समझ में नहीं आ रहे हैं, और प्रोफेसर ने शायद कुछ महत्वपूर्ण पर केवल चमक दी।
अगर वे "घंटे" एक बग को घूर रहे हैं, लेकिन यह पता नहीं लगा रहे हैं, कि यह उनके समय की बर्बादी है, तो वे इससे बहुत कुछ नहीं सीख रहे हैं। अक्सर बग्स अंतर्दृष्टि समस्याएं हैं, और इसके समाधान के लिए सही अंतर्दृष्टि के साथ आने का मामला है, और उन प्रकार की समस्याओं के लिए उनके पास एक आदत नहीं हो सकती है। जब वे फंस जाते हैं, तो दूसरे सामान्य तरीकों का सुझाव दें: मदद के लिए कक्षा में किसी अन्य मित्र से पूछें (यदि ऐसा करने के लिए आवश्यक हो तो कुछ सहपाठियों को जानें), अपना होमवर्क समय से पहले शुरू करें ताकि उनके पास रुकने का समय हो, और बाद में आएं ट्यूटर लैब और खुले घंटों के दौरान प्रश्न पूछें, या प्रोफेसर के कार्यालय समय पर जाएं। यदि वे cramming करने के लिए उपयोग किए जाते हैं, जो संस्मरण विषयों के लिए अच्छी तरह से काम करता है, तो वे हताशा की दीवार से टकराएंगे जब वे ' प्रोग्रामिंग के साथ फिर से सामना करना पड़ता है जो याद करने की तुलना में समस्या को हल करने के बारे में अधिक है। उन्हें दिखाएं कि उनकी पाठ्यपुस्तक, स्टैकओवरफ़्लो आदि से वाक्य रचना के उदाहरण कैसे देखें, यदि कोई एक है तो उन्हें निजी कक्षा के प्रश्न मंच पर एक प्रश्न पोस्ट करने के लिए प्रोत्साहित करें।
उन्हें सिखाएं कि जहां कोड काम करना बंद कर देता है वहां संकीर्ण कैसे करें। सामान को तब तक बाहर रखें जब तक कि आप उस चीज़ के पास वापस न पहुँच जाएँ, और फिर धीरे-धीरे सामान वापस जोड़ें जब तक कि आप फिर से उस सेगफॉल्ट को प्राप्त न कर लें।
इनमें से बहुत से विचारों को हैंडआउट में बदल दिया जा सकता है यदि वे बहुत ऊपर आते हैं। रणनीतियाँ आमतौर पर भाग के प्राध्यापकों पर चमक होती हैं - वे अपना समय वाक्यविन्यास, लूप, एरेज़, आई / ओ, आदि लिखने के शब्दार्थ पर खर्च कर रहे हैं, लेकिन पर्याप्त समय नहीं बिताया है "जब मैं कोशिश करता हूं मेरे कोड को चलाने के लिए और यह सिर्फ मुझ पर संकलन या क्रैश नहीं करता है? "
जब वैचारिक चीजों की बात आती है, विशेष रूप से बुनियादी बातों की, जैसे "एक चर क्या है", या "एक पाश क्या है?" समझ में नहीं आ रहा है कि उन्हें बाकी कोर्स के साथ रखने में सक्षम होने से रोक देगा। व्याख्यान-आधारित पाठ्यक्रम में, प्रोफेसर के पास हर प्रश्न का उत्तर देने या लाइटबल्ब को हर एक छात्र के पास जाने में मदद करने का समय नहीं हो सकता है। और यही कारण है कि प्रोग्रामिंग सीखने के लिए ट्यूटर बहुत महत्वपूर्ण हैं। उन्हें किसी विशेष विषय को ठोस बनाने के लिए अतिरिक्त एनालॉग्स के साथ व्यक्तिगत निर्देशन की आवश्यकता हो सकती है।
चूँकि आप C ++ में पढ़ा रहे हैं, मुझे लगता है कि कक्षाएं एक अमूर्त विषय के रूप में सामने आएंगी, जो कुछ छात्र "पाने" के लिए संघर्ष करते हैं। अक्सर कक्षाओं के अमूर्त को कुछ यादृच्छिक वास्तविक विश्व वस्तु के उदाहरणों के साथ पढ़ाया जाता है, जैसे "एटीएम मशीन", और एनालॉग्स को वास्तविक दुनिया ऑब्जेक्ट के लिए बनाया जाता है। आपके पास चर हो सकते हैं कि आपके पास कितना पैसा है, इसके बारे में जानकारी रखने के लिए, आपके पास तरीके हैं, जो नियम की तरह हैं, जो एटीएम मशीन को विशेष परिस्थितियों का जवाब देने के तरीके बताते हैं, आदि। कभी-कभी एक सादृश्य वह है जो किसी विशेष व्यक्ति के लिए "चिपक जाता है" , और अन्य छात्रों ने एक अलग को बेहतर समझा।
जब भी संभव हो, उनके लिए चित्र बनाएं। एक अनुक्रम आरेख की तरह जो समय के साथ होता है, जिससे उन्हें यह जानने में मदद मिलती है कि वे जो कोड लिख रहे हैं, उसकी बड़ी तस्वीर क्या है। उपयोगकर्ता इस बटन पर क्लिक करता है। फिर प्रोग्राम को x, y और z कर के जवाब देना चाहिए। पोस्ट ऑफिस में पीओ बॉक्स के एक गुच्छा की तरह एक सरणी बनाएं जो प्रत्येक को केवल एक नंबर पकड़ सकता है, और बॉक्स के सामने "पते" की ओर इशारा करते हुए तीर की तरह संकेत करता है। आदि।