कोड को लाइन-दर-लाइन ट्रेस करना: लिखने से पहले पढ़ना क्यों ज़रूरी है
ट्रेस करने का मतलब है कोड को दिमाग में एक-एक लाइन चलाना। जो छात्र ट्रेस नहीं कर पाते, उन्हें कोड लिखने में दिक्कत क्यों होती है, और वीडियो में ट्रेस कैसे समझाएं।
Chasca टीम की ओर से पढ़ने में 6 मिनट
कोड को ट्रेस करने का मतलब है उसे वैसे फ़ॉलो करना जैसे कंप्यूटर करता है, एक बार में एक लाइन, और हर वेरिएबल की वैल्यू बदलते ही उसे लिख लेना। जो छात्र भरोसे से ट्रेस नहीं कर पाते, उन्हें प्रोग्राम लिखने में दिक्कत होती है, इसीलिए एग्ज़ाम बोर्ड इसे सीधे परखते हैं और कुछ शोधकर्ता कहते हैं कि इसे कोड लिखना सिखाने से पहले सिखाया जाना चाहिए।
ट्रेसिंग इतनी अहम क्यों है?
क्योंकि कई छात्र अपना पहला प्रोग्रामिंग कोर्स खत्म करके भी प्रोग्राम नहीं बना पाते, और कमज़ोर ट्रेसिंग इसकी एक वजह है। 2001 में Michael McCracken के नेतृत्व वाले एक वर्किंग ग्रुप ने चार यूनिवर्सिटियों के पहले साल के कंप्यूटर साइंस छात्रों का एक ट्रायल प्रोग्रामिंग असेसमेंट लिया: 216 छात्रों का औसत 110 में से 22.89 रहा।
एक फ़ॉलो-अप ग्रुप ने वजह पूछी। Raymond Lister और साथियों ने सात देशों के छात्रों को कोड के छोटे टुकड़े पढ़ने और ट्रेस करने पर परखा: अंदाज़ा लगाना कि कोड का छोटा टुकड़ा क्या नतीजा देगा, और लगभग पूरे कोड की छूटी हुई लाइन चुनना। कई दोनों में कमज़ोर थे, जिसे लेखकों ने उन स्किल्स की कमज़ोर पकड़ के रूप में पढ़ा जिन पर प्रॉब्लम सॉल्विंग टिकी है।
इससे पढ़ाने का एक विचार बना। शुरुआती प्रोग्रामिंग के लिए 2019 की एक इंस्ट्रक्शन थ्योरी में University of Washington के Benjamin Xie और साथियों ने चार स्किल्स को अलग किया, ट्रेसिंग को पहले रखा, और लिखने से पहले पढ़ना सिखाने की वकालत की। उनकी एक्सप्लोरेटरी स्टडी में जिस सामग्री ने स्किल्स को इसी क्रम में सिखाया, उससे अभ्यास की एक्सरसाइज़ ज़्यादा पूरी हुईं, गलतियां कम हुईं और पोस्ट-टेस्ट में समझ बेहतर निकली।
ट्रेसिंग की परीक्षा कैसे ली जाती है?
सीधे। इंग्लैंड के GCSE कंप्यूटर साइंस के सिलेबस में यह शामिल है। AQA का सिलेबस कोड ट्रेसिंग को उन स्किल्स में गिनता है जो उसका पहला पेपर परखता है, और उम्मीद करता है कि छात्र सरल एल्गोरिदम कैसे काम करते हैं और किस काम के हैं, यह समझने के लिए ट्रेस टेबल का इस्तेमाल करें। OCR का सिलेबस मांग करता है कि छात्र किसी एल्गोरिदम को फ़ॉलो करने के लिए ट्रेस टेबल बनाएं और इस्तेमाल करें, और कोड में गलतियां पहचानकर सुधार सुझाएं। दोनों ट्रुथ टेबल भी मांगते हैं, और AQA के सिलेबस में सरल SQL क्वेरी भी हैं।
ट्रेस कैसा दिखता है?
GCSE पेपर जैसा एक छोटा सवाल लें: यह प्रोग्राम क्या प्रिंट करता है?
total = 0
for n in range(1, 5):
total += n
print(total)
ट्रेस कंप्यूटर के पीछे-पीछे एक-एक बदलाव पर चलता है:
| स्टेप | n | total |
|---|---|---|
| शुरुआत | 0 | |
| पहला चक्कर | 1 | 1 |
| दूसरा चक्कर | 2 | 3 |
| तीसरा चक्कर | 3 | 6 |
| चौथा चक्कर | 4 | 10 |
ज़रूरी बात यह है कि range(1, 5) 5 से पहले रुक जाता है, इसलिए लूप चार बार चलता है और प्रोग्राम 10 प्रिंट करता है। जो छात्र 15 जवाब देता है, उसने लूप एक बार ज़्यादा चला दिया, और अच्छी समझाइश यह बात कहती है।
अकेले ट्रेसिंग सीखना मुश्किल क्यों है?
- कोड चलाने से आउटपुट दिखता है, वजह नहीं। छात्र “10” देखता है और फिर भी नहीं जानता कि वह किस लाइन ने बनाया।
- पूरी की हुई ट्रेस टेबल सब कुछ एक साथ दिखा देती है, इसलिए वैल्यू किस क्रम में बदलीं, जो पूरा मकसद है, खो जाता है।
- क्लास का समय कम होता है। टीचर बोर्ड पर एक-दो उदाहरण ट्रेस कर सकता है; होमवर्क शीट में उससे कहीं ज़्यादा होते हैं।
- ऑनलाइन समझाइशें टॉपिक कवर करती हैं, वह खास स्निपेट नहीं जिस पर छात्र अटका है, और शायद ही कभी छात्र की अपनी भाषा में, कोड के शब्द वैसे ही रखकर।
एक अच्छे ट्रेसिंग वीडियो में क्या दिखता है?
- कोड, पूरे समय नज़र के सामने, वर्किंग के बगल में, और जो लाइन चल रही है उस पर निशान।
- हर वैल्यू बदलने पर, बोली और लिखी जाती हुई, एक लाइन में एक बदलाव: “i = 2 → total = 3”।
- ज़रूरी विचार का नाम: लूप चार बार चलता है, इंटीजर डिविज़न बाकी हिस्सा गिरा देता है, बेस केस रिकर्शन को रोकता है।
- एरर के लिए, लाइन, वह क्यों फ़ेल होती है और सुधार। नंबर कन्वर्ज़न के लिए, बेस से हर भाग। SQL के लिए, कौन-सी पंक्तियां रखी जाती हैं और क्यों।
- आउटपुट बॉक्स में, फिर एक झटपट जांच।
- कोड वैसे पढ़ा जाए जैसे प्रोग्रामर बोलते हैं, नाम और कीवर्ड अंग्रेज़ी में, भले समझाइश किसी और भाषा में हो।
कोड और ट्रेस को साथ रखना मायने रखता है। Paul Ginns का 50 स्टडीज़ का 2006 का मेटा-एनालिसिस पाता है कि संबंधित जानकारी को जगह और समय, दोनों में साथ लाने से सीखने में काफ़ी फ़ायदा होता है, खासकर जटिल सामग्री में। इस रिसर्च का और हिस्सा हमने व्हाइटबोर्ड वीडियो क्यों काम करते हैं में दिया है।
Code problems स्किल क्या करती है?
Chasca हम बनाते हैं, इसलिए इसमें हमारे हिस्से को उसी नज़र से पढ़ें। Code problems स्किल कंप्यूटिंग के सवाल टीचर के बोर्ड पर हल करती है:
- कोड और सवाल लाएं, टाइप या पेस्ट किए हुए, या शीट की फ़ोटो, PDF या डॉक्यूमेंट के रूप में, 20 पेज तक: आउटपुट के सवाल, एरर ढूंढना, नंबर सिस्टम, ट्रुथ टेबल और छोटी टेबल पर SQL।
- आपका कोड शुरू से वर्किंग के बगल में रहता है, हूबहू कॉपी किया हुआ, और उसे उसी तरह चलाकर दिखाया जाता है जैसे कंप्यूटर चलाता है, जो लाइन मायने रखती है वह हाइलाइट होती है।
- ट्रेस बोर्ड पर लिखा जाता है, बोले जाने के साथ-साथ एक-एक बदलाव। ट्रेस टेबल, ट्रुथ टेबल और क्वेरी के नतीजे टेबल की तरह बनते हैं, स्टेप में दिया गया एल्गोरिदम फ़्लोचार्ट की तरह, और रिकर्सिव कॉल ट्री की तरह।
- कोड के शब्द वैसे पढ़े जाते हैं जैसे प्रोग्रामर बोलते हैं, अंग्रेज़ी में, आपकी भाषा के नैरेशन के भीतर, 30 नैरेटरों में से किसी की भी आवाज़ में या आपकी अपनी आवाज़ में।
- हर जवाब बॉक्स में लगाने से पहले दोबारा, अलग से हल किया जाता है। अगर कुछ भी मेल न खाए, या आपकी आंसर की से मेल न खाए, तो वीडियो का पेज बताता है कि कौन-सा सवाल जांचना है।
- बिना कोई सवाल दिए किसी टॉपिक पर सवाल मांगें, तो यह उनके लिए परीक्षा जैसा छोटा कोड लिख देती है, Python में, जब तक आप कोई और भाषा न बताएं।
यह किसके लिए है?
उन कंप्यूटर साइंस टीचरों के लिए जो शीट के हर सवाल का हल किया हुआ ट्रेस चाहते हैं, उन ट्यूटरों के लिए जो छात्रों को स्कूल परीक्षाओं की तैयारी कराते हैं, और शुरुआती प्रोग्रामिंग कोर्स के उन इंस्ट्रक्टरों के लिए जिनके छात्रों को कोड लिखने से पहले उसे रवानी से पढ़ना आना चाहिए।
यह क्या नहीं करेगी?
- आपका कोड चलाएगी नहीं। उसे वैसे ट्रेस किया जाता है जैसे टीचर बोर्ड पर करता, फिर दोबारा हल करके जांचा जाता है; उसे कंप्यूटर पर एक्ज़ीक्यूट नहीं किया जाता।
- अभी लॉजिक गेट के डायग्राम नहीं बनाएगी। ट्रुथ टेबल, हां; गेट के चिह्न, अभी नहीं।
- पूरी भाषा नहीं सिखाएगी। यह सवालों को, एक-एक करके, समझाती है।
एक वीडियो कैसे बनाएं?
- Chasca में Code problems खोलें।
- कोड और सवाल पेस्ट करें, विकल्पों और अपनी आंसर की के साथ, अगर उसमें हैं, या शीट की फ़ोटो या PDF जोड़ें।
- भाषा, आवाज़ और ब्लैक बोर्ड या व्हाइटबोर्ड चुनें, फिर वीडियो बनाएं।
- वीडियो शेयर करने से पहले उसका पेज देखें, जहां कोई सवाल फ़्लैग हुआ हो।
आपके पहले दो वीडियो फ़्री हैं, हर वीडियो एक मिनट तक का, वॉटरमार्क के साथ, बिना कार्ड के; फ़्री वीडियो अपने एक मिनट में समाने वाले पहले सवाल लेता है। प्लान $9.99 प्रति महीने से शुरू होते हैं (कीमतें)।
स्रोत
- McCracken, M., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y. B.-D., Laxer, C., Thomas, L., Utting, I., & Wilusz, T. (2001). A multi-national, multi-institutional study of assessment of programming skills of first-year CS students. Working Group Reports from ITiCSE on Innovation and Technology in Computer Science Education.
- Lister, R., Adams, E. S., Fitzgerald, S., Fone, W., Hamer, J., Lindholm, M., McCartney, R., Moström, J. E., Sanders, K., Seppälä, O., Simon, B., & Thomas, L. (2004). A multi-national study of reading and tracing skills in novice programmers. ACM SIGCSE Bulletin, 36(4), 119–150.
- Xie, B., Loksa, D., Nelson, G. L., Davidson, M. J., Dong, D., Kwik, H., Tan, A. H., Hwa, L., Li, M., & Ko, A. J. (2019). A theory of instruction for introductory programming skills. Computer Science Education, 29(2–3), 205–253.
- AQA (2025). GCSE Computer Science (8525) specification, version 1.3.
- OCR. GCSE (9–1) Computer Science J277 specification.
- Ginns, P. (2006). Integrating information: A meta-analysis of the spatial contiguity and temporal contiguity effects. Learning and Instruction, 16(6), 511–525.
वीडियो की ट्रांसक्रिप्ट ऊपर दिए 2:25 के एक्सप्लेनर में नैरेटर की कही हर बात।
In this video, we trace a Python list and convert a decimal number to binary and hexadecimal.
Question one. What is the output?
First, x equals a list containing one, two, and three.
Next, y equals x, so both names refer to the same list. The call y dot append with four adds four to that shared list. Now x and y both refer to the list containing one, two, three, and four.
The print call evaluates len of x, which is four.
Notice that assigning y equals x does not copy the list. Hence, the output is four.
Question two. Convert forty-five to binary, then to hexadecimal.
First, repeatedly divide forty-five by two, keeping each remainder. Forty-five divided by two gives twenty-two with remainder one.
Twenty-two divided by two gives eleven with remainder zero.
Eleven divided by two gives five with remainder one.
Five divided by two gives two with remainder one.
Two divided by two gives one with remainder zero.
One divided by two gives zero with remainder one.
Reading the remainders from bottom to top gives one zero one one zero one in binary. For hexadecimal, divide forty-five by sixteen to get two with remainder thirteen.
Then divide two by sixteen to get zero with remainder two.
In hexadecimal, thirteen is written as D. Reading those remainders from bottom to top gives two D. As a check, two times sixteen plus thirteen equals forty-five.
Hence, forty-five is one zero one one zero one in binary and two D in hexadecimal.
लोग अक्सर पूछते हैं
ट्रेस करने का मतलब है किसी प्रोग्राम को लाइन-दर-लाइन उसी तरह फ़ॉलो करना जैसे कंप्यूटर करता, हर वेरिएबल की वैल्यू बदलने पर उसे लिखते जाना, ताकि अंदाज़ा लगे कि प्रोग्राम क्या करेगा या क्या प्रिंट करेगा। इसे दर्ज करने का आम तरीका ट्रेस टेबल है।
सबूत इसी तरफ़ झुकते हैं। शुरुआती प्रोग्रामिंग के लिए 2019 की एक इंस्ट्रक्शन थ्योरी ट्रेसिंग को पहले रखती है, और उसकी एक्सप्लोरेटरी स्टडी में स्किल्स को इसी क्रम में सिखाने से एक्सरसाइज़ पूरी करने की दर बढ़ी और गलतियां घटीं।
हर वेरिएबल को और आउटपुट को उसका अपना कॉलम दें। कोड को लाइन-दर-लाइन चलाएं और जब भी कोई वैल्यू बदले, एक नई पंक्ति जोड़ें; आखिरी पंक्ति में अंतिम वैल्यू और आउटपुट होता है।
क्योंकि उन्हें हर वेरिएबल दिमाग में रखना पड़ता है और साथ ही उस क्रम को भी फ़ॉलो करना पड़ता है जिसमें कंप्यूटर लाइनें चलाता है। सात देशों की 2004 की एक स्टडी में कई नौसिखिया प्रोग्रामर यह अंदाज़ा लगाने में कमज़ोर निकले कि कोड के छोटे टुकड़े क्या नतीजा देंगे।
नहीं। Code problems स्किल कोड को वैसे ही ट्रेस करती है जैसे टीचर बोर्ड पर करता, और हर जवाब को बॉक्स में लगाने से पहले दोबारा, अलग से हल किया जाता है। अगर दोनों में फ़र्क निकले, तो वीडियो का पेज बताता है कि कौन-सा सवाल जांचना है।
आउटपुट और ट्रेसिंग वाले सवाल, एरर ढूंढना और ठीक करना, डेसिमल से बाइनरी जैसे नंबर कन्वर्ज़न, ट्रुथ टेबल और छोटी टेबल पर SQL क्वेरी। यह अभी लॉजिक गेट के डायग्राम नहीं बनाता।