आज के छात्रों तक पहुंचने के लिए एक परिचयात्मक पाठ्यक्रम के लिए कुछ अच्छे कार्य क्या हैं? [बन्द है]


25

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

आपको गुंजाइश का अंदाजा लगाने के लिए , यहाँ बताया जा रहा है :

  • असाइनमेंट जावा में होने चाहिए, कुछ बाहरी लाइब्रेरी का उपयोग किया जा सकता है, लेकिन इसके लिए एक साधारण एपीआई होना चाहिए न कि पूर्ण रूपरेखा
  • चर, आदिम और तार
  • कंसोल इनपुट और आउटपुट
  • if, for,while
  • अंकगणित और तार्किक संचालक
  • लाइन और आकार ड्राइंग के साथ सरल ग्राफिक्स
  • स्थैतिक तरीके
  • एक आयामी सारणी

छात्र उन्नत विषयों में नहीं जाएंगे (जैसे, कोई पुनरावृत्ति, विरासत पर जोर नहीं)। इस प्रकार, मैं जटिल परियोजनाओं की तलाश नहीं कर रहा हूं : "क्या उन्हें सी कंपाइलर लिखना है। मैंने ऐसा तब किया था जब मैं 5 साल का था और यह एकमात्र तरीका था जिसे मैंने सीखा था!"

यदि आपके पास ऐसे विचार हैं जो गुंजाइश से अधिक उन्नत हैं, तो कृपया उन्हें नीचे दिए गए "चुनौतीपूर्ण" प्रश्न पर पोस्ट करें, और यह एक नहीं।

इसके बजाय, मैं जो खोज रहा हूं वह दिलचस्प विचार हैं जिन्हें एक छोटे कार्यक्रम में पूरा किया जा सकता है। उदाहरण के लिए:

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

  • उनके लिए आपूर्ति की गई कुछ ट्रिगर का उपयोग करके, छात्र नियमित बहुभुज बना सकते हैं, और दिलचस्प सर्पिल आकार बना सकते हैं।

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

कृपया ध्यान दें कि यह प्रश्न " शुरुआती के लिए चुनौतीपूर्ण जावा प्रश्नों " से अलग है । मैं प्रति से अधिक चुनौतीपूर्ण नहीं देख रहा हूँ, बस दिलचस्प। मुझे लगता है कि अगर छात्र किसी ऐसी चीज पर काम करते हैं, जहां वे आसानी से जवाब दे सकते हैं "कोई भी कभी भी ऐसा क्यों करना चाहता है?" तब वे बेहतर सीखेंगे।

प्रति गैलन माइल्स की गणना जैसी सरल समस्याएं भी अच्छी हो सकती हैं। हालांकि, अगर इसे और अधिक प्रासंगिक बनाने के लिए अद्यतन करने का एक तरीका है, तो सभी बेहतर। यदि आपके पास कहीं और (एक किताब या वेबसाइट) से व्यायाम है, तो कृपया स्रोत का हवाला दें।

आज आपको नए सिरे से सोचने में मदद करने के लिए , कई उदाहरणों के लिए बेलोइट माइंडसेट सूची देखें , जो निश्चित रूप से आपको बूढ़ा महसूस कराएगा।


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

@ मायरा: यह प्रोग्रामिंग कोर्स की शुरुआत के लिए है, सीएस मेजर्स के लिए पहला कोर्स है। मैं पहले 5 हफ्तों (या पहले दिन) का उपयोग करने के लिए छात्रों के लिए रोमांचक समस्याओं की तलाश कर रहा हूं, और न केवल अंत में। यह इन आवश्यकताओं में काम करने के लिए एक वास्तविक चुनौती है (और मुझे विश्वास है कि कुछ मुद्दे मेरे नियंत्रण से बाहर हैं), इसलिए मैं मदद के लिए आप लोगों की ओर मुड़ रहा हूं।
मैक्नील

जवाबों:


9

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

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

जैसे

You have 10 guesses left.      * * * E * * T
What is your next guess?

फिर कोड से कट और पेस्ट तत्व को हटाने के लिए छोरों को पेश करें क्योंकि 10 अनुमान नीचे गिना जाता है ... लाइन ग्राफिक्स होने और 5 सप्ताह के पाठ्यक्रम के अंत में छड़ी व्यक्ति को लटका / बचाया जा रहा है।

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


महान विचार! मुझे लगता है कि मैं इसका उपयोग करने जा रहा हूं। :-) BTW, "ट्यूशन के स्तर" से आपका क्या तात्पर्य है? जैसा कि लागत में?
मैक्नील

विश्वविद्यालय से पहले प्रोग्रामिंग ट्यूशन की कमी के बारे में इसकी अधिक जानकारी है। कल्पना कीजिए कि रसायन विज्ञान करने के लिए विश्वविद्यालय में पहुंचने और परमाणु, अणुओं और इलेक्ट्रॉनों के बारे में बताया जा रहा पहला शब्द खर्च करना। कंप्यूटर विज्ञान को समझने के लिए 3 साल का समय बहुत कम है।
माइकल शॉ

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

7

एक पाठ साहसिक खेल की तरह लगता है एक भयानक काम कहीं मध्य सेमेस्टर हो सकता है। मेरे पास एक वर्ग था जिसने हमें Colossal Cave Adventure खेला और फिर अपना खेल बनाया। इसने मुझे शुरुआती बुनियादी निर्माणों के बारे में बहुत कुछ सिखाया, और सभी को इसमें शामिल होने में बहुत मज़ा आया।


2
मजेदार लगता है, लेकिन इसे छोटा रखें।

7

कैसे एक समस्या या http://projecteuler.net/ से दो का उपयोग करने के बारे में। इनमें से कुछ काफी दिलचस्प हैं और एक उन्हें हल करने के लिए एक कार्यक्रम लिखने का लाभ देख सकता है। वे काफी छोटे हैं कि कई काम के रूप में किया जा सकता है। एक और जिसे मैं उपयोग करना चाहता हूं वह $ 1.00 शब्द ढूंढ रहा है। वर्णमाला का प्रत्येक अक्षर पेनीज़ अर्थात = 1, b = 2 में अपनी स्थिति के लायक है। आप कितने $ 1.00 डॉलर के शब्द पा सकते हैं? इसमें फ़ाइल i / o (एक शब्दकोश में पढ़ना), सरणियाँ, लूपिंग आदि शामिल हो सकते हैं।


1
परियोजना यूलर के लिए +1। बहुत ही शांत। हालाँकि कुछ समस्याएं थोड़ी बहुत उन्नत हैं, फिर भी कई ऐसी हैं जो नहीं हैं।
मैकनील

मैं प्रोजेक्ट यूलर से प्यार करता हूं लेकिन मुझे यकीन नहीं है कि अगर मैं विश्वविद्यालय में अभ्यास करता तो यह मजेदार होता।
ओलिवर वीलर

नहीं, उनमें से सभी मज़ेदार नहीं होंगे, लेकिन कुछ मुझे लगता है कि हम अच्छे विकल्प हैं
ग्रेटी

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

  • उन्हें एक एन्क्रिप्टेड फ़ाइल दें जिसे कुछ प्रतिवर्ती नियम के साथ एन्क्रिप्ट किया गया था और उन्हें एक डिकोडर लिखने के लिए कहें (हालांकि यह काफी सरल है)। यह संदेश की सामग्री के बारे में रहस्य के कारण इसे हल करने के लिए एक अतिरिक्त प्रोत्साहन देता है।

  • मुझे नहीं पता कि आप केवल एक आयामी सरणियों को क्यों कवर करते हैं और मैट्रिस नहीं हैं (वे वास्तव में सभी अलग नहीं हैं), लेकिन यदि आप इसे सिलबस में शामिल करने के लिए तैयार हैं, तो जॉन कॉनवे के जीवन का खेल भी अपेक्षाकृत आसान है और कुछ में परिणाम है मज़ा।

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


एकाधिकार खेल सुझाव के लिए +1। 2 डी सरणियों के लिए, मैं पूरी तरह से सहमत हूं कि वे बहुत ही दिलचस्प कार्य कर सकते हैं। हालाँकि, ऐसी अड़चनें हैं जो इसे 2 डी सरणियों को व्यवहार्य नहीं बनाती हैं (उदाहरण के लिए, पाठ्यपुस्तक पहले से ही तय है, और एक अरब अन्य संकाय राजनीति मुद्दे हैं कि मैं आपको बोर नहीं करूंगा, और न ही मैं आपको इन पर अपनी व्यक्तिगत राय से बोर करूंगा। मेरे नियंत्रण से बाहर)।
मैकेंल

आह, हमें स्कूल में एकाधिकार का खेल बनाना था। और एक एन्क्रिप्शन ब्रेकर।
कार्रा

एकाधिकार के लिए +1। एक बार छात्रों के पास इसे कोडित करने के बाद, उन्हें विभिन्न गुणों पर उतरने की संभावनाएं उत्पन्न करने के लिए कहें। यह ज्ञान वास्तव में रणनीतिक रूप से मदद करता है।
joshdick

4

हमने स्कूल में सिर्फ i / o, फ़ंक्शन और सशर्त ऑपरेटरों के साथ काफी कुछ प्रोजेक्ट बनाए। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के बारे में जानने से पहले हमने सब किया। ये परियोजनाएं धीरे-धीरे आगे बढ़ती हैं और अधिक से अधिक कठिन होती हैं। यह कहने के लिए पर्याप्त है कि हमारे पास प्रत्येक सप्ताह में 4 घंटे वर्ष के अंत में लगभग पर्याप्त नहीं थे।

ये सभी परियोजनाएं केवल कार्यों और i / o के साथ की गईं:

  • एक खेल जो सीखता है। आप कई सारे स्टिक लेते हैं, पीसी एक स्टिक लेती है। दोहराएँ। आखिरी जो एक छड़ी रखता है वह खो देता है। हमें एक साधारण सेल्फ लर्निंग प्रोग्राम बनाना था जो प्रत्येक गेम के बाद बेहतर हो। 2 डी सरण सीखने के लिए अच्छा उदाहरण है।

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

  • एक बारकोड निर्माता। यह कार्यक्रम एक बाहरी पुस्तकालय को कॉल करने के लिए एक अभ्यास था। आपको एक कोड मिला और बार कोड के साथ एक छवि बनानी पड़ी। छवि को उत्पन्न करने के लिए एक बाहरी पुस्तकालय का उपयोग किया गया था।

  • यात्रा सेल्समैन समस्या को हल करने के लिए एक आनुवंशिक एल्गोरिथ्म। यह 2 या 3 व्यक्तियों के लिए एक अधिक उन्नत परियोजना थी। आप एक यादृच्छिक मार्ग से शुरू करते हैं और यह मार्ग हर समय सुधार करता है जब तक कि आपके पास "अच्छा मार्ग" न हो। बोनस: मार्ग के साथ एक नक्शा बनाएँ।

  • एक काम कर रहे lzw संपीड़न कार्यक्रम । यह अंतिम, 4 लोगों का प्रोजेक्ट था। पैरामीटर काफी सरल थे। "ज़िप file.txt file.zip" या ऐसा ही कुछ। फन प्रोजेक्ट लेकिन lzw एल्गोरिदम को समझने में थोड़ा समय लगा।


बहुत दिलचस्प ... आप किस स्कूल में गए थे? क्या यह सब आपके पहले साल में था?
मैकनील

यह सूचना विज्ञान इंजीनियरिंग विशेषज्ञता के लिए लोगों को गर्म करने का एक कोर्स था। आप उस वर्ष के बाद भी अपनी विशेषज्ञता बदल सकते हैं। छात्रों को मूल लूप पता था, स्क्रीन / फ़ाइलों और कार्यों के लिए कुछ i / o।
कार्रा

3

एक कैलकुलेटर अंकगणितीय संचालन सीखने के लिए एक अच्छी परियोजना होगी। आप इसे एक साधारण मेनू-आधारित कंसोल ऐप या एक GUI बना सकते हैं। चार कार्यों (+, -, *, /) को शुरू करने के लिए और अधिक जटिल चीजों के लिए अतिरिक्त बिंदुओं के साथ जैसे कि वर्गमूल, आदि।

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

स्थिर तरीकों को प्रदर्शित करने के लिए, आप एक ईमेल-लुकअप समस्या असाइन कर सकते हैं। नाम और ईमेल की एक फ़ाइल है, और स्थैतिक निर्माता एक सूची में नाम / ईमेल डाल सकते हैं, एक स्थिर विधि के साथ एक दिया नाम के लिए ईमेल खोजने के लिए।

आशा है कि ये आपको कुछ विचार देंगे! अपनी कक्षा के साथ अच्छे भाग्य।


1
+1 धन्यवाद! यह ठीक उसी तरह का उत्तर है जिसकी मुझे तलाश है।
मैकनील

खेल कैलकुलेटर की तुलना में अधिक मजेदार हैं।

3

एक असाइनमेंट के लिए एक बहुत ही दिलचस्प और शांत चीज 2 डी में कॉनवे के गेम ऑफ लाइफ के कार्यान्वयन को लिख रही है। यह बुनियादी सरणी डेटा संरचनाओं के लिए बहुत अच्छी तरह से मैप करता है, यह मज़ेदार है और ऐसा करना बहुत आसान है, लेकिन फिर भी कुछ सोच की आवश्यकता है। यह कुछ जिज्ञासा और प्रयोग को खोल सकता है (एआई)।

उन्नत छात्र अतिरिक्त बिंदुओं के लिए 3 डी में एक संस्करण लिख सकते हैं।


3

मैं एक अभाज्य संख्या जनरेटर पर iterate होगा।

कार्य

  1. 1 से 100 तक प्रिंट प्रिंट करें।
  2. इनपुट 1 से इनपुट 2 तक प्रिंट प्रिंट करें।
  3. मुख्य पीढ़ी का रिकॉर्ड और प्रिंट प्रदर्शन डेटा।
  4. मुख्य पीढ़ी का ग्राफ प्रदर्शन डेटा।
  5. प्राइम नंबर जनरेटर के एल्गोरिथ्म अनुकूलन पर Iterate।

2

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

मैं यथासंभव लंबे समय से कंसोल I / O से दूर रहने की कोशिश कर रहा हूं। यह इन दिनों कई छात्रों के लिए एक विदेशी अवधारणा है, क्योंकि वे सभी GUIs के साथ बड़े हुए हैं। इसलिए मैं एमवीसी पर ध्यान केंद्रित करता हूं, मॉडल को सही कर रहा हूं, और उनके मॉडल का परीक्षण करने के बाद ही जीयूआई को जोड़ रहा हूं। ब्लूज में स्वचालित इकाई परीक्षण और कोड पैड के माध्यम से परीक्षण किया जाता है । कोई public static void main()आवश्यक नहीं है, कभी भी।


दिलचस्प। शायद आप अपने अनुभवों को एक लेख या ब्लॉग प्रविष्टि में लिखेंगे?

2

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

  • Wumpus की तरह सरल साहसिक खेल
  • बेसबॉल या जो कुछ भी खेल सिमुलेशन (केवल महत्वाकांक्षी के लिए ग्राफिक्स)
  • जेनेटिक इवोल्यूशन का अनुकरण करते हुए विज्ञान
  • खेल / विज्ञान, जैसे सेलबोट रेसिंग
  • वित्त, अपने घर या निवेश में लोगों के लिए अपना बैंक होने की तरह
  • संगीत या सरल चित्रमय खेल

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

आमतौर पर उनकी परियोजनाएं कोड की कुछ सौ पंक्तियां होने के कारण समाप्त हो जाती थीं, और वे हमेशा इसका आनंद लेते थे।

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


1

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


1

मेरे इंट्रो कोर्स में, तीन परियोजनाएँ मुझसे जुड़ीं

एक यादृच्छिक मोंड्रियन पेंटिंग प्रदर्शित करने के लिए एक प्रोग्राम
लिखें। एक ब्रिकब्रेकर गेम का पहला भाग लिखें, एक निर्धारित क्षेत्र के अंदर चारों ओर उछलती हुई गेंद प्राप्त करें,
एक पाठ-आधारित साहसिक खेल लिखें

मेरे एल्गोरिदम वर्ग से
एक सर्पिंस्की त्रिकोण लागू करें

इन चार परियोजनाओं ने मुझे स्ट्रिंग प्रोसेसिंग, रेंडमाइजेशन, ग्राफिक्स, रिकर्सन और एनीमेशन की बहुत अच्छी समझ दी।


1

क्या सभी छात्र सीएस की बड़ी कक्षाओं में हैं? मेरा अनुमान नहीं होगा। मैं असाइनमेंट के साथ आऊंगा जो क्लास में मेजर्स के अनुरूप हैं।

उदाहरण:

  • कला छात्र एक ऐसा कार्यक्रम लिख सकते हैं जो कैनवास के टुकड़े के आयामों को ले जाता है और कैनवास की मात्रा की गणना करने के लिए एक फ्रेम पेंटिंग के लिए अनुपलब्ध होगा (कैनवास को फ्रेम के चारों ओर लपेटने और स्टैपल करने के कारण)।

  • Econ के छात्र एक वस्तु पर चक्रवृद्धि ब्याज की गणना कर सकते हैं।

  • गणित के छात्र प्रोजेक्ट यूलर से समस्याएं चुन सकते थे।


1
वर्ग बड़ी कंपनियों और गैर-बड़ी कंपनियों के लिए है। कई जीव विज्ञान में हैं।
मैकनील

दिलचस्प। आइडिया: एकल-कोशिका वाले जीवों की तस्वीर देखें जो पानी में तैर रहे हों। छवि को B & W में कनवर्ट करें। पानी में जीवों की संख्या की गणना करने के लिए एक कार्यक्रम लिखें। यह सभी प्रकार के दिलचस्प चर्चा विषयों को सामने लाएगा: बढ़त का पता लगाना, पानी और गैर-पानी के बीच अंतर, धूल का सफाया, इत्यादि
बैरी ब्राउन

अच्छी तरह से जैव के लिए, स्पष्ट बात यह है कि मन में स्प्रिंग्स सेलुलर ऑटोमेटा है। कुछ विचार प्राप्त करने के लिए आप bioquest.org पर एक लूट ले सकते हैं ।
केवेट केरेक

1

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

प्रसंस्करण भी है , जिसे मैंने अभी खोजा था, जो मूल रूप से प्रोग्रामिंग सिखाने के लिए बनाया गया था, और इसकी जावा में भी।


0

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

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


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

1
यह एक समस्या है जो वे अपने टीआई -83 कैलकुलेटर पर (आसानी से) नहीं कर सकते हैं । फिर भी एक अन्य कर कैलकुलेटर इसे काट नहीं करेगा।
बैरी ब्राउन

1
ये छात्र प्रोग्रामिंग के लिए नए हैं और इस पाठ्यक्रम में अपने बच्चों को लेने की जरूरत है। इसे उबाऊ बनाना शायद सबसे कुशल तरीका नहीं है कि उन्हें कैसे पढ़ाया जाए और हमें सर्वश्रेष्ठ शिक्षकों को देखना चाहिए बजाय इसके कि उन्हें अंत से लेकर अंत तक जावा विनिर्देशन का पाठ करना चाहिए।

1
नहीं, ये परियोजनाएं मज़ेदार होनी चाहिए। फन प्रोजेक्ट मुश्किल हो सकते हैं। वास्तव में, मेरी अधिकांश पालतू परियोजनाएं रोज़मर्रा की प्रोग्रामिंग से कठिन हैं जो मैं काम करता हूं।
कार्रा

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

0

उनके मोबाइल फोन पर एक मूर्खतापूर्ण विजेट बनाने का काम। कुछ ऐसा जो वे अपने दोस्तों को दिखा सकें। मेरे पास एक उबेर-सस्ता एटी एंड टी फोन है और यह कुछ प्रकार की जार फाइलें लेता है।


0

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

कुछ लोगों ने मुझे प्रभावित किया है:

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

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

  3. सिमुलेशन समस्याएं जो तुच्छ दिखाई देती हैं। ट्रैफ़िक सिमुलेशन (वाहन, नेटवर्क), रेस कार सिमुलेशन (बाएं, दाएं, तेज, धीमे), किराने की दुकान सिमुलेशन।

  4. नेटवर्किंग समस्याएं (पिछले कुछ वर्षों में मैंने जिन स्नातकों के साथ काम किया है, उनमें एक बड़ी कमजोरी)। हैंडहेल्ड के साथ सहकर्मी नेटवर्किंग समस्याएं, उदाहरण के लिए, एन-सिंक मुद्दों, पीयर अपडेट, पीयर ट्रस्ट आदि की जटिलता साबित करना।

  5. छोटी भाषाएं (हाल की कब्रों में एक और कमजोरी)। एक साधारण गेम AI (चेकर्स, रोशाम्बो, टैंक, सीएसएस मोजो, ट्विटर बॉट्स) के लिए थोड़ी सी भाषा विकसित करें। भाषा डिजाइन, व्याख्या और कार्यों की अवधारणाओं के बारे में सोचना मौलिक है।


क्या पेपर, रॉक, कैंची एआई को परिणाम जानने के लिए मिलता है, या देखें कि इतिहास क्या था?
मैकनील

हां, सी उदाहरण में सरणियों के माध्यम से इतिहास उपलब्ध हैं (लेकिन यह जावा, रूबी, आदि के लिए समान रूप से लागू होगा)। मूल प्रतियोगिता पृष्ठ देखें: webdocs.cs.ualberta.ca/~darse/rsbpc.html
ब्रूस एल्डरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.