← नवीनतम पेपर
💻 computer science

Accelerating Accurate Assignment Authoring Using Solution-Generated Autograders

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

मूल लेखक: Geoffrey Challen, Ben Nordick

प्रकाशित 2026-08-10
📖 8 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Geoffrey Challen, Ben Nordick

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

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

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

समस्या: "नियम-लिखने" का जाल

जब छात्र प्रोग्रामिंग सीखते हैं, तो उन्हें सैकड़ों अलग-अलग पहेलियों को हल करने का अभ्यास करने की आवश्यकता होती है। इसे सफल बनाने के लिए, शिक्षकों को छात्रों के कोड की तुरंत जांच करने के तरीके की आवश्यकता होती है। यहीं पर ऑटोग्रेडर्स काम आते हैं। पारंपरिक रूप से, एक ऑटोग्रैडर बनाना एक सुरक्षा गार्ड बनाने जैसा है जो केवल विशिष्ट घुसपैठियों को पहचानना जानता है। शिक्षक को टेस्ट केस की एक सूची मैन्युअल रूप से लिखनी पड़ती है: "यदि इनपुट 2 होने पर कोड आउटपुट 5 देता है, तो यह अच्छा है। यदि यह 6 देता है, तो यह बुरा है।"

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

समाधान: "परफेक्ट केक" रणनीति

लेखक, जेफ्री चैलन और बेन नॉर्डिक, एक चतुर मोड़ प्रस्तावित करते हैं। नियमों की सूची लिखने के बजाय, शिक्षक बस समाधान (solution) प्रदान करता है—वह परफेक्ट कोड जो समस्या को हल करता है। वे अपने टूल को क्वेशनेर (Questioner) कहते हैं।

यहाँ बताया गया है कि क्वेशनेर कैसे काम करता है, एक मज़ेदार उपमा का उपयोग करते हुए: कल्पना कीजिए कि शिक्षक रोबोट को एक परफेक्ट, सुनहरा-भूरा केक (संदर्भ समाधान) देता है। रोबोट केवल उसे देखता नहीं है; वह उसे तोड़ने की कोशिश करना शुरू कर देता है। वह परफेक्ट केक में छोटी, मूर्खतापूर्ण गलतियाँ करने के लिए एक विशेष "म्यूटेशन" (mutation) टूल का उपयोग करता है। शायद वह चीनी की जगह नमक डाल दे, या ओवन का तापमान एक डिग्री बदल दे, या अंडे मिलाने के लिए भूल जाए। ये "म्यूटेंट्स" (mutants) हैं।

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

यही जादू है: रोबोट परफेक्ट समाधान का उपयोग करके खुद को यह सिखाता है कि क्या स्वीकार नहीं करना है। उसे यह बताने के लिए शिक्षक को "क्या नहीं करना है" की सूची लिखने की आवश्यकता नहीं है। वह परफेक्ट समाधान को तोड़ने की कोशिश करके और यह देखकर कि क्या होता है, शुद्धता की सीमाओं को समझ लेता है।

उन्होंने क्या पाया

टीम ने जावा और कोटलिन के लिए क्वेशनेर बनाया और इसका उपयोग इलिनोइस विश्वविद्यालय में एक विशाल परिचयात्मक कंप्यूटर साइंस कोर्स में चार वर्षों तक किया। उन्होंने लगभग 800 प्रोग्रामिंग प्रश्न बनाए जिनका उपयोग हजारों छात्रों द्वारा लाखों सबमिशन का मूल्यांकन करने के लिए किया गया।

उनके अनुभव से मुख्य निष्कर्ष यहाँ दिए गए हैं:

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

यह क्यों मायने रखता है

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

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

संक्षेप में, हर गलती को पकड़ने के लिए दस लाख नियम लिखने के बजाय, शिक्षक बस सही उत्तर दिखाता है, और रोबोट को बाकी सब कुछ समझने देता है। यह अगली पीढ़ी के प्रोग्रामर को सिखाने का एक तेज़, स्मार्ट और कम निराशाजनक तरीका है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →