कोड पढ़ने के लिए एक रणनीति सिखाना

Clickbait शीर्षक: आपने यह नहीं माना कि 5 मिनट आपके कोडिंग कौशल को कैसे बेहतर बना सकते हैं!

सारांश: कोड पढ़ने के लिए रणनीति सिखाने में ५-१० मिनट खर्च करने से बेहतर पठन प्रदर्शन हो सकता है, जिससे कम प्रदर्शन करने वालों को अभिभूत होने से बचाने में मदद मिलेगी! मैंने यह काम SIGCSE 2018 में प्रस्तुत किया। संसाधनों (शिक्षण संसाधन, कागजात, स्लाइड) के लिंक इस पोस्ट के अंत में हैं।

कहो कि मैं 4 वीं कक्षा के गणित के छात्रों को सिखा रहा हूं कि विभिन्न कार्यों के साथ समस्याओं को कैसे हल किया जाए:

2 x (3 + 6)

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

इस मामले में, मैंने स्पष्ट रूप से उन्हें इन समस्याओं को हल करने की रणनीति नहीं सिखाई। यही है, मैंने वास्तव में उन्हें संचालन के आदेश (जिसे पूर्ववर्ती आदेश के रूप में भी जाना जाता है) पढ़ाया, जैसे कि PEMDAS शुरू करने से। इसके बजाय मुझे अपने छात्रों को (शायद आँख बंद करके) अपनी समस्याओं को हल करने के लिए अपनी रणनीति बनाने की आवश्यकता थी।

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

मेरा उपरोक्त उदाहरण थोड़ा बेतुका लगता है, लेकिन आज बहुत सारे प्रोग्रामिंग कोर्स में ऐसा हो रहा है। तो लोगों को कोड पढ़ना सीखना बेहतर बनाने के लिए समस्या सुलझाने की रणनीतियों को स्पष्ट रूप से सिखाने दें!

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

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

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

लाइन-दर-लाइन ट्रेस करने के लिए प्रोत्साहित किए जाने से, किसी भी कोड ट्रेसिंग समस्या को हल करने के लिए नौसिखियों का सामान्य दृष्टिकोण होता है।

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

चर का ट्रैक रखने के लिए मेमोरी टेबल का उपयोग करके, नौसिखियों को चर मानों को याद करते हुए चर स्वैप ऑपरेशन के बाद मेमोरी टेबल का एक उदाहरण।

ताकि रणनीति हो! यह कागज के 2 टुकड़ों पर बड़े करीने से फिट बैठता है और हमने केवल 5 से 10 मिनट तक इसे नौसिखियों को पढ़ाने में खर्च किया (कॉलेज उनके पहले कंप्यूटर विज्ञान वर्ग में स्नातक)।

रणनीति का मूल्यांकन करने के लिए, मैंने 24 कॉलेज के छात्रों की भर्ती की, जो अपने पहले कंप्यूटर विज्ञान पाठ्यक्रम में 5 सप्ताह के थे। उनके साथ व्यक्तिगत रूप से काम करते हुए, मैंने उनमें से आधी रणनीति को सिखाया। मैंने तब सभी प्रतिभागियों को समान 6 कोड ट्रेसिंग समस्याओं के माध्यम से काम किया, उनके विचारों को जोर से कहते हुए काम किया। ऐसा करने से, मैं दो सवालों के जवाब देने में सक्षम हूं: 1) क्या इस रणनीति को सिखाने से प्रदर्शन में सुधार होता है? 2) ट्रेसिंग प्रश्नों को हल करते समय यह रणनीति छात्रों की विचार प्रक्रियाओं को कैसे बदलती है? आइए देखते हैं नतीजे!

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

अध्ययन के परिणामों पर प्रदर्शन: प्रतिभागियों ने एवीजी पर प्रदर्शन की रणनीति सीखी। 15% बेहतर और अध्ययन में कोड अनुरेखण प्रश्नों पर 46% कम परिवर्तनशीलता के साथ! (पी <0.05)MIDTERM पर प्रदर्शन: प्रतिभागियों ने एवीजी पर प्रदर्शन की रणनीति सीखी। 7% बेहतर और पाठ्यक्रम के मध्यावधि पर 42% कम परिवर्तनशीलता के साथ।

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

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

प्रशिक्षकों के लिए निहितार्थ यह है: समस्याओं को हल करने के लिए रणनीतियों के साथ नौसिखियों से लैस करने के लिए स्पष्ट निर्देश प्रदान करें! मैं एक निर्देशात्मक उपकरण के रूप में मेमोरी टेबल का उपयोग करता हूं, लेकिन मुझे पता है कि उनका उपयोग मूल्यांकन के लिए भी किया गया है।

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

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

  • शिक्षण रणनीति के लिए संसाधन, अध्ययन का पुनरुत्पादन (GitHub)
  • पेपर (ACM DL)
  • स्लाइड्स (पीडीएफ)