सीएस विषय है कि एक स्नातक पता होना चाहिए [बंद]


34

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

मैंने अपना कॉलेज पास करने में कामयाबी हासिल की और एक कंपनी में भी इंटर्नशिप की, जहाँ मैंने एक प्रोजेक्ट किया और शुक्र है कि वे मेरे ग्रेड के बारे में परेशान नहीं हुए, क्योंकि वे औसत से ऊपर थे।

अब, मुझे यह जानने में दिलचस्पी है कि एक सीएस छात्र को किन विषयों में पूरी तरह से और सकारात्मक रूप से जागरूक होना चाहिए? ऐसे विषय जिनकी उद्योग में प्रासंगिकता हो सकती है। ऐसा इसलिए है क्योंकि मेरे पास अपने हाथों पर कुछ खाली समय है और इससे मुझे उनकी अच्छी समझ बनाने में मदद मिलेगी।

आपके सुझाव क्या हैं? एक की तरह, एल्गोरिदम एक विषय है।


3
नियमित अभिव्यक्तियाँ ऑटोमेटा सिद्धांत पर आधारित हैं, और यह आपकी मदद करेगा यदि आपको कभी भी कुछ भी पार्स करना है। मैंने स्कूल में काम किया है और सीखी है जो मेरे पास मौजूद नौकरियों के लिए अप्रासंगिक है, लेकिन मैंने जो भी सीखा है उस पर कम से कम उतना ही काम करता है जितना मैंने काम किया है। मैंने कुछ भी नहीं सीखा कि सभी परिस्थितियों में क्षेत्र में बेकार हो जाएगा।
डेविड थॉर्नले

2
मुझे आपके प्रकार ... jk (सॉर्ट) के साथ काम करने से नफरत है। अगर मैं आप होते, तो मैं सबसे पहले उन चीजों की समीक्षा करने के लिए समय निकालता, जो आपको स्कूल से जानना चाहिए - इस तरह आप अपने अगले साक्षात्कार में एक बेवकूफ की तरह नहीं दिखेंगे। उसके बाद मैं उचित मात्रा में डेटा स्ट्रक्चर्स और एल्गोरिदम सीखूंगा, जो इस तरह दिखते हैं कि उनका उपयोग वास्तविक दुनिया में किया जा सकता है। आपको यह पता लगाने की जरूरत है कि आप कहां होना चाहते हैं। यदि एक गेम डेवलपर, तो आपको शायद रेखीय बीजगणित, 3 डी ग्राफिक्स, कम्प्यूटेशनल ज्यामिति की आवश्यकता है। सामान्य तौर पर आपको कम से कम डेटा str, alg, database, os और compiler सामान की समीक्षा करने और सीखने की आवश्यकता होती है।
नौकरी

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

1
आपको नीचे बहुत सारे शानदार CS उत्तर मिल रहे हैं, लेकिन मुझे लगता है कि आपके प्रश्न को सीमित करके, जैसे कि आपने मेरे BSCS को प्राप्त करने के बाद से 15 वर्षों में देखी गई सबसे उपयोगी चीजों में से एक को याद कर रहे हैं, क्या लोगों को विभेदित किया है इस उद्योग में अच्छा काम किया है: छोटे समूह संचार और टीमवर्क कौशल। मूर्खतापूर्ण जैसा कि लगता है, भाषण / भाषा / रंगमंच विभाग के प्रमुख और "छोटे समूह संचार" या "टीम / समूह नेतृत्व / प्रबंधन" जैसे वर्ग लेते हैं। यहां तक ​​कि अगर आप प्रबंधन करने की योजना नहीं बनाते हैं, तो आप जो कौशल उठाते हैं, वह आपको एक बेहतर इंजीनियर और टीम का सदस्य बना देगा।
कबबी

जवाबों:


41

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

वास्तविक संकलक निर्माण जहां आप जमीन से अपना प्रतीक स्कैनर और पार्सर लिखते हैं।

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

अगर मुझे किसी एक विषय में विश्वविद्यालय के पाठ्यक्रम व्याख्याता के पास जाना और धन्यवाद देना होता, तो यही होता। इसके बिना मुझे मिल जाता लेकिन मेरे समाधान बहुत ज्यादा बदसूरत होते।

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


6
+1 कंपाइलर यूनी में मेरे पसंदीदा पाठ्यक्रमों में से एक था, और हमेशा उपयोगी होता है। मैंने शायद ही कभी lex / yacc / bison का उपयोग किया हो, फंडामेंटल बहुत अधिक ठोस उपयोग के हैं।
परिक्रमा

मैं पूरी तरह से एक अलग कारण से सहमत हूं। कोड जनरेटर को लिखने का तरीका जानने के लिए - भले ही मैंने लेक्स और याक का उपयोग किया था - ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में मेरा पहला और सबसे अच्छा विसर्जन था।
पीटर टर्नर

आप (और यह भी जानते हैं कि कैसे) को सादे सी, या कुछ अन्य गैर-ओओ भाषा में कोड जनरेटर लिखना चाहिए। फिर प्रक्रियात्मक कोड के बहुत बड़े टुकड़ों को लिखने में एक सबक, और समझदार और समझदार चरणों में पार्सर / स्कैनर / कोड पीढ़ी को तोड़ना।
जल्‍दी से जल्‍दी quickly

+1 कंपाइलर में बहुत सारे पैटर्न और सिद्धांत शामिल होते हैं जो आपको डिज़ाइन और कोड को देखने के बाद पूरी तरह से अलग रोशनी में देखने की अनुमति देगा।
एंड्रयू टी फिननेल

2
"यह कुछ ऐसा है जिसे मैंने सोचा था कि मैं कभी भी, कभी भी, फिर से उपयोग करूंगा।" अगर मेरे पास हर बार एक डॉलर था, तो मैंने कहा कि जब मैं छोटा था, तो ....
निक स्प्रीट्ज़र

37
  1. डेटा संरचनाएं / एल्गोरिदम विशेष रूप से रेखांकन। वास्तविक दुनिया की स्थितियों की मात्रा जिसमें मैं ग्राफ से संबंधित एल्गोरिदम का उपयोग करने में कामयाब रहा हूं, मेरे लिए आश्चर्य की बात है। डेटा संरचना या एल्गोरिथ्म कब उपयुक्त है, इसकी विशेषताओं को जानने पर ध्यान दें। एक समस्या को देखने में सक्षम होना और उदाहरण के लिए गतिशील प्रोग्रामिंग / लालची एल्गोरिथ्म का उपयोग करना महत्वपूर्ण है और यह आपको बहुत समय बचा सकता है।

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

  3. ओएस अवधारणाओं। मेमोरी मैनेजमेंट, शेड्यूलर आदि। प्रत्येक डेवलपर को वास्तव में ऑपरेटिंग सिस्टम की एक ठोस समझ होनी चाहिए, जो कि आपके द्वारा लिखा गया कोड लगातार उसके साथ बातचीत कर रहा है।

  4. NetSec। मुझे बहुत कम डेवलपर्स का सामना करना पड़ा है जिन्हें विकास के साथ बुनियादी सुरक्षा चिंताओं (बफर ओवरफ्लो, xss, SQLI, आदि) की ठोस समझ है। यदि आप उद्योग में सफल होना चाहते हैं तो यह वास्तव में जरूरी है। यह बहुत अच्छा है यदि आप अगली बड़ी बात लिख सकते हैं लेकिन आपके पास बहुत से उपयोगकर्ता नहीं होंगे यदि आप उनका डेटा सुरक्षित नहीं रखते हैं।

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


1
+1 संपूर्ण सूची की बहुत आवश्यकता है, (4) विशेष रूप से आधुनिक वितरित युग में इतना महत्वपूर्ण है।
१५:०५

1
डेटा संरचनाओं / ग्राफ़ पर +1। प्रोग्रामर की संख्या जो मुझे पता है कि सही तरीके से हैशटेबल का उपयोग करना नहीं जानता है या क्यों एक लिंक्ड सूची के बजाय कुछ मामलों में एक साधारण सरणी मुझे हर रोज आश्चर्यचकित करती है।
माचादो

प्रोग्रामिंग प्रतिमानों के लिए +1। विभिन्न प्रकार की भाषाओं के बीच विरोधाभासों की एक अच्छी समझ बहुत मदद करती है।
अपूर्व ०२०

19

स्नातक आवश्यकताओं को पूरा करना सबसे अच्छा कंप्यूटर वैज्ञानिक होने के लिए जरूरी नहीं है कि आप हो सकते हैं। एक सामान्य कॉलेज के पाठ्यक्रम के लिए, यहाँ शीर्ष दस चीजें हैं जिन्हें आपको सीखना चाहिए:

  1. अर्थशास्त्र की मूल बातें - अधिक अर्थव्यवस्था में काम करने के लिए पूरक और विकल्प जैसे विषयों को शामिल करने वाला एक परिचयात्मक पाठ्यक्रम महत्वपूर्ण है, या बस इसे समझना चाहिए। जबकि गिफेन गुड की अवधारणा जरूरी नहीं कि आपकी मदद करेगी, बाहरी लोगों के बारे में जानकर । यह आपकी सराहना करने में भी मदद कर सकता है कि आपके द्वारा महसूस की गई स्थितियों से अधिक परिस्थितियां जीत-जीत हैं।

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

    प्रमाण लेखन क्यों आवश्यक है? क्योंकि यह प्रोग्रामिंग है! इस बारे में सोचें कि आपने पहली बार प्रोग्राम करना कैसे सीखा: यदि किसी कार्य के लिए एifऔर एक पाश, तुम उन पर एक दूसरे के संबंध में कोई अंतर्ज्ञान नहीं हो सकता है। लेकिन अब वही कार्य पूरी तरह से स्वाभाविक लगेगा। प्रमाण लिखना बहुत समान है। ट्रिक्स का एक सेट है जो आप सीखते हैं, और एक बार जब आप उन्हें सीखते हैं तो चीजें काफी अलग दिखती हैं।

  3. कैसे लिखें - लिखित संचार कौशल आवश्यक हैं, चाहे आप उद्योग या शिक्षा में काम करेंगे। यह सबसे अच्छा है यदि आप एक यांत्रिकी पाठ्यक्रम पा सकते हैं, और एक लेखन पाठ्यक्रम नहीं है जो प्रभावी रूप से एक अलग विषय के बारे में है। यही है, कई स्कूल एक विशेष विषय के बारे में बनाकर लेखन पाठ्यक्रम को अधिक प्रासंगिक या दिलचस्प बनाने की कोशिश करेंगे। पाठ्यक्रम के "उबाऊ" संस्करण के लिए जाने की कोशिश करें।

  4. संभाव्यता और आँकड़े - कुछ चीजें हैं जो आप केवल एक कोर्स करके ठीक से उठा लेंगे। सीएस प्रमुख आवश्यकताओं के साथ (जो आपको असतत गणित, एकल चर और एकाधिक चर कलन, और रैखिक बीजगणित) और बीजगणित और / या वास्तविक विश्लेषण देना चाहिए, आँकड़े उठाना शायद आपको गणित में मामूली देगा। सीखने के आँकड़े आपको उनकी परियोजनाओं पर अन्य वैज्ञानिकों के साथ काम करने में मदद कर सकते हैं।

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

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

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

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

  9. जिस पाठ्यक्रम से आप घृणा करना चाहते हैं, उससे संबंधित विषय - यह एक ऐसा सीएस कोर्स हो सकता है, जिसे आप बहुत-निम्न-स्तरीय, बहुत-सैद्धांतिक या एक गैर-सीएस पाठ्यक्रम भी पा सकते हैं, जो आपको बहुत आपत्तिजनक, बहुत-कठिन, या बहुत-उबाऊ लगता है। । यदि इस तरह का एक कोर्स आपके लिए एक मुद्दा लगता है, और आप खुद को दूसरों को समझाते हुए पाते हैं कि आप इतने खुश हैं कि आपको ऐसा करने की आवश्यकता नहीं है, तो यह आपको बताना चाहिए कि आप बहुत कुछ सीखेंगे। कोर्स करके! शायद आप पाठ्यक्रम की सामग्री नहीं सीखेंगे, लेकिन आप अपनी सीमाओं के बारे में सीखेंगे और शायद अपने द्वारा किए गए औचित्य के बारे में। [संकेत: वे आमतौर पर कमजोर होते हैं।]

  10. गैर-सीएस पाठ्यक्रम आपको प्यार करने के लिए निश्चित है - अंत में, आपको कुछ मजेदार होना चाहिए। यह वह कोर्स है जिसे आप शायद कम से कम प्राप्त करेंगे, लेकिन इसे वैसे भी लें। एक बार करें। यदि आप कई पाठ्यक्रमों से प्यार करते हैं, तो आपके लिए अच्छा है, लेकिन सुनिश्चित करें कि यह इस सूची के बाकी पाठ्यक्रमों को कवर करने के तरीके से नहीं मिलता है।

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


चढ़ाव के लिए एक व्याख्या सहायक होगी। शायद मैं अपना जवाब बदल सकता हूं, और फिर आप अपना दिमाग बदल सकते हैं।
मैकनील

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

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

जबकि तारीफ का ज्ञान निश्चित रूप से उपयोगी है, मेरा मानना ​​है कि अर्थशास्त्र के लिए पूरक का ज्ञान अधिक प्रासंगिक है।
14

1
@ विज: सीएस छात्रों के लिए अर्थशास्त्र के बारे में, जोएल में पढ़ने लायक एक अच्छी चर्चा है: joelonsoftware.com/articles/CollegeAdvice.html
मैकनेल

8

कंपनी के कुछ प्रतिनिधियों और दोस्तों से बात करने के बाद, जिनके कई साक्षात्कार थे:

  • डेटाबेस
  • OOP
  • एल्गोरिदम
  • डेटा संरचनाएं

नए किराए के लिए "मस्ट" होना चाहिए (या जैसा कि उन्होंने कहा, "अत्यधिक अनुशंसित" पाठ्यक्रम)।

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

उम्मीद है की वो मदद करदे!


1
OOP और डेटा संरचनाओं से सहमत होंगे।
apoorv020

4
बुनियादी डेटा संरचनाएं ... sooooooooooo महत्वपूर्ण। अधिक महत्वपूर्ण, मुझे लगता है, OOP की तुलना में। आपको यह सोचने में सक्षम होने की आवश्यकता है कि जानकारी कैसे संग्रहीत और व्यवस्थित की जाए। और अगर एम्बेडेड सिस्टम पर आपके डेटा स्ट्रक्चर्स का इन-मेमोरी लेआउट जीवन-या-मृत्यु सामान है।
जल्दी_नौकर

3
गणित कक्षाओं के लिए +1। वे आपको बड़ी समस्याओं / प्रणालियों का ट्रैक रखने के लिए सीखने में भी मदद करते हैं।
माइकल के

1
नेटवर्किंग करना भी अच्छा है।
कीयो

OOP? आप OOP के बिना हास्केल या सी में कार्यक्रम कर सकते हैं ... मैं आपको देता हूं कि इसका व्यापक रूप से उपयोग किया जाता है, लेकिन मुझे नहीं लगता कि यह एक मौलिक है। दूसरी ओर, विभिन्न प्रतिमानों के लिए एक्सपोजर काफी उपयोगी लगता है।
मैथ्यू एम।

6

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

मैं एक एम्बेडेड बैक ग्राउंड से आता हूं। हर एक व्यक्ति जो मेरे साथ काम करता है, उसके पास ईई डिग्री या सीई की डिग्री थी और यह आंशिक रूप से है क्योंकि जब "पुराने लोग" जब कॉलेज में होते हैं तो वे कई सीई प्रोग्राम उपलब्ध नहीं थे। तो, यह बहुत स्पष्ट है कि यदि आप एम्बेडेड क्षेत्र में काम करना चाहते हैं जो एक हार्डवेयर पृष्ठभूमि वांछनीय है।

चाहे जिस क्षेत्र में भी आप काम करना चाहते हों, मेरा मानना ​​है कि हर प्रोग्रामर को प्रोग्रामिंग असेंबल करने का कोर्स करना चाहिए। आप इसे कभी भी उपयोगकर्ता नहीं कर सकते हैं, लेकिन यह बिल्कुल यही सिखाएगा कि एक फ़ंक्शन कॉल के दौरान प्रोसेसर स्तर पर क्या हो रहा है, कैसे व्यवधानों को संभाला जाता है, कैसे मेमोरी को संरचित किया जाता है या विभिन्न एड्रेसिंग मोड का उपयोग कैसे किया जाता है। मेरा मानना ​​है कि यह सब चीजें आपको एक बेहतर प्रोग्रामर बनाएंगी।

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


+1 क्योंकि कंप्यूटर विज्ञान की डिग्री आपको विषयों / प्रौद्योगिकियों की एक विस्तृत श्रृंखला के साथ अनुभव प्रदान करती है। बस सॉफ्टवेयर डिजाइन पाठ्यक्रम पर ध्यान देना सुनिश्चित करें।
श्री चींटी

+1 असेंबली के लिए, स्टैक के निचले भाग में वास्तव में समझने के लिए हमेशा समझदार होना चाहिए। अच्छा होगा अगर हर कोई हार्डवेयर भी जानता हो, लेकिन कई लोगों के लिए यह एक कदम बहुत दूर होगा।
परिक्रमा

5

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

  1. डेटा संरचना
  2. एल्गोरिथम विश्लेषण
  3. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग
  4. या तो C ++ या जावा में एक विशिष्ट पाठ्यक्रम
  5. ऑपरेटिंग सिस्टम
  6. यूजर इंटरफेस डिजाइन
  7. समानांतर प्रोग्रामिंग

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

  1. परिमित भाषा और ऑटोमेटा सिद्धांत
  2. संकलक निर्माण
  3. ग्राफ सिद्धांत
  4. कृत्रिम होशियारी

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

2

मैं सूची में सॉफ़्टवेयर इंजीनियरिंग या डिज़ाइन प्रथाओं को भी जोड़ूंगा, हालांकि उनकी सामग्री को आमतौर पर उद्योग में छात्रों द्वारा उठाया जाता है।

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

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

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


कृपया अपने अनुभवों के बारे में अधिक विस्तार प्रदान करें और किसी को उन पाठ्यक्रमों को लेने की आवश्यकता क्यों है।

@ मर्क: क्या आप डाउनवोट के पीछे तर्क समझा सकते हैं?
apoorv020

@ apoorv020 बिना यह बताए कि आप सॉफ्टवेयर इंजीनियरिंग या डिज़ाइन प्रैक्टिस की सिफारिश क्यों कर रहे हैं, आपका जवाब उपयोगी नहीं है। आपका संपादन अभी भी स्पष्ट नहीं करता है कि आप उन्हें क्यों सुझा रहे हैं।

सॉफ्टवेयर इंजीनियरिंग या डिज़ाइन प्रैक्टिस लेने के लिए @ apoorv020 एकमात्र रिडीमिंग मूल्य है कि आप आम तौर पर एक मिड-साइज़ (जो भी इसका मतलब है) प्रोजेक्ट बनाते हैं? आपने व्यक्तिगत रूप से उन पाठ्यक्रमों को लेने से क्या सीखा?

वे जानते हैं कि अच्छे हैं, लेकिन ये सीएस विषय नहीं हैं।
थॉमस ओवेन्स

2

कॉलेज में सीखी गई चीजें जो मैं हर दिन इस्तेमाल करता हूं:

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

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

मुझे कई गणित पाठ्यक्रम लेने थे। मैंने स्नातक होने के बाद से पथरी का उपयोग नहीं किया है। काश मैंने एक सांख्यिकी पाठ्यक्रम लिया। (फिर से, मैंने स्नातक होने के बाद से पाने के लिए पर्याप्त उठाया है, लेकिन मेरी इच्छा है कि मैं अधिक जानता था।)

सीएस विभाग से परे, एक लेखन पाठ्यक्रम ले लो। सफलता के लिए अच्छे लिखित संचार कौशल आवश्यक हैं।


+1 आश्चर्य कि डेटाबेस आपके पाठ्यक्रम में अनिवार्य नहीं थे, आमतौर पर एक आवश्यक घटक माना जाता है।
परिक्रमा

ये था। मैं इसे एक तकनीकी पर निकल गया और इसे पछतावा हुआ।
पीडब्ल्यूसी

@ ऑर्ब्लिंग: अक्सर छोटे विभागों (बड़े राज्य के स्कूलों में उन लोगों के विपरीत) के पास हर प्रमुख विषय की आवश्यकता के लिए पर्याप्त व्याख्याता नहीं होते हैं। मेरे स्कूल में, उदाहरण के लिए, डेटाबेस एक वैकल्पिक था।
मैक्नील

@ मैकनील: मेरे पाठ्यक्रम पर, प्राथमिक डेटाबेस कोर्स एक पूर्वापेक्षा थी (सभी मूल बातें: ईआर मॉडलिंग, सामान्य रूप, एसक्यूएल (न केवल बुनियादी एसक्यूएल, यौगिक / नेस्टेड, आदि), सूचकांक प्लेसमेंट, आदि), बाद, अधिक जटिल , डेटाबेस पाठ्यक्रम ऐच्छिक थे (मुझे लगता है कि कुल तीन थे)। मैं उन्हें लेने के लिए कभी नहीं चुना, जैसा कि मुझे लगा कि यह सामान था जिसे मैं स्वतंत्र रूप से अन्य पाठ्यक्रमों की तुलना में अधिक आसानी से अवशोषित कर सकता हूं जो मुझे याद होगा। सोचें कि मैंने उन्नत किया या इसके बजाय।
१ling

@pwc: मुझे यकीन है, क्या आपको याद है कि आपने इसका विरोध क्यों किया?
१ling

2

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

  • डाटा संरचनाओं और एल्गोरिदम

    वस्तुतः कंप्यूटिंग में सब कुछ एल्गोरिदम का उपयोग करके डेटा को संभालने के लिए वापस आता है। सरणियों और हैशटेबल्स पर विशेष ध्यान दें, क्योंकि वे अब तक आम उपयोग में सबसे उपयोगी डेटा संरचनाएं हैं, लेकिन सूचियां और पेड़ और ग्राफ (अच्छी तरह से, सूची प्रतिबंधित प्रकार के पेड़ हैं, और पेड़ प्रतिबंधित प्रकार के ग्राफ हैं) साथ ही महत्वपूर्ण हो। इसके अलावा, एल्गोरिदम समझना कोड के उत्पादन के लिए महत्वपूर्ण है जो भयानक नहीं है। (नहीं तो आप एक हे का उपयोग कर की तरह, चीजें हैं जो सिर्फ भयानक हैं करूँगा ( एन 3 ) एल्गोरिथ्म जहां एक हे ( एन लॉग इन करें n ) एक करना होगा।) अपने सीएस डिग्री एक नहीं है, तो अनिवार्य पाठ्यक्रम इस पर डी एस + A, यह सीएस नहीं है। या सॉफ्टवेयर इंजीनियरिंग। या यहां तक ​​कि सिर्फ प्रोग्रामिंग।

इसके अलावा, जो कोर्स मैंने कई वर्षों में कई क्षेत्रों में उपयोगी पाया है वह है:

  • संगामिति

    संगामिति के कई पहलू हैं, लेकिन मैं साझा-मेमोरी और संदेश-पासिंग के बीच अंतर की समझ की उम्मीद करूंगा। मैं वहां लॉकिंग स्ट्रेटेजी (म्यूटेक्स, सेमाफोर्स, इत्यादि) और लेनदेन की मजबूत कवरेज भी चाहता हूं।

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

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


1

जब मैं कॉलेज में था तब काफी कुछ विषय थे जिन्हें मैं अपने वास्तविक जीवन में उपयोग नहीं कर पाया था और कभी-कभी यह अंतर्ज्ञान सही साबित हुआ था (औपचारिक तरीके वास्तव में ज्यादातर मामलों में तुच्छ समस्याओं के लिए केवल व्यावहारिक हैं) और अन्य समय में पूरी तरह से गलत हो गया है (बिग-ओ नोटेशन बहुत उपयोगी है) इसलिए मुझे लगता है कि मेरे पूरे युवा स्व भाग सही थे।

यदि आप स्वयं को वास्तविक दुनिया के लिए तैयार करना चाहते हैं, तो सामान के अलावा @ K-Ran ऊपर की सिफारिश करता है, मैं सुझाव देता हूं कि कोड को पूरा पढ़ना और उसका उपयोग करना किसी भी विषय में गहन शोध के आधार पर जो आपको मुश्किल लगता है या आपको महसूस नहीं होता है पर्याप्त रूप से कवर किया गया।


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

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

Z जैसी चीजें केवल मिशन-क्रिटिकल सॉफ़्टवेयर के लिए उपयोग की जाती हैं, जैसे कि संगठन, जहाँ आप कहते हैं, जान जोखिम में है। हालाँकि, मुझे लगता है कि उन्हें सीखने से कोड शुद्धता की बहुत अधिक जागरूकता पैदा होती है और सभी प्रकार के विनिर्देशन में पूरी तरह से गहराई आ जाती है। कभी-कभी आप जो सीखते हैं वह खुद के लिए नहीं है, लेकिन यह सुनिश्चित करने में मदद करता है कि ऊपर क्या है।
परिक्रमा

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

1

मुझे लगता है कि आपको निम्नलिखित का अध्ययन करना चाहिए:

ऑपरेटिंग सिस्टम: - भले ही आपको प्रोग्रामर के रूप में काम करने के लिए इसकी आवश्यकता न हो लेकिन यह जानना योग्य है कि ऑपरेटिंग सिस्टम कैसे काम करता है और यह एक सीएस ग्रेड से अपेक्षित है। कोई भी अच्छी किताब मदद कर सकती है।

OOP: - यह ब्रेड और बटर है। नितांत जरूरी। यदि आप पूछना चाहते हैं तो पुस्तकें: आपकी पहली पुस्तक होनी चाहिए: - पहले ओओएडी, फिर आप ग्रैडी बूच और इवर जैकबसन की पुस्तक के लिए जा सकते हैं

डेटा संरचना और एल्गोरिदम: - तार्किक सोच और मानसिकता विकसित करने के लिए बहुत महत्वपूर्ण है।

मेरे लिए यह काफी है। अभी इतनी देर नहीं हुई है। :)


1

जैसा कि कोई व्यक्ति जो नियमित रूप से प्रोग्रामिंग नौकरियों के लिए उम्मीदवारों का साक्षात्कार लेता है, और कोई व्यक्ति जो 12+ वर्षों के लिए उद्योग में रहने के बाद यथोचित रूप से पूरा हो जाता है, मैं निम्नलिखित सुझाव दूंगा

  • डेटाबेस डिजाइन और एसक्यूएल: यह आश्चर्यजनक है कि कितने प्रोग्रामर सरल एसक्यूएल को नहीं जानते हैं, और अच्छे एसक्यूएल कौशल वाले लोग अमूल्य हैं। एक अच्छा डेटाबेस डिजाइन करने में सक्षम होना एक कंपनी में उपयोगी नहीं हो सकता है जिसमें एक सेट डेटाबेस संरचना है, स्टार्ट-अप और बदलाव के दौर से गुजर रही कंपनियों के लिए, यह एक जरूरी है!
  • डिजाइन पैटर्न्स। वे आपको अच्छे डिजाइन के बारे में बेहतर निर्णय लेने में मदद करेंगे
  • OOP: यह आमतौर पर अधिकांश पाठ्यक्रमों के लिए प्री-रेक है, लेकिन यह मदद करेगा।
  • एल्गोरिदम: क्योंकि बहुत कम लोग जानते हैं कि पुनरावृत्ति क्या होती है, तो आइए समझते हैं कि यह उन्हें कब जटिल कोडिंग से बचा सकता है
  • डेटा संरचनाएं: अधिकांश आधुनिक भाषाएं आपके लिए इस सामान के साथ काम करती हैं, लेकिन उन्हें समझना अच्छे डिजाइन की कुंजी है।

फिर, कुछ अतिरिक्त पाठयक्रम कार्य, पढ़ें:

  • प्रमाणन प्रकार की किताबें। वे अक्सर आपको कवर प्रकार के सिंटैक्स और ऑपरेटरों के नीचे सिखाते हैं। यह जानना अधिक महत्वपूर्ण है कि आप 'क्योंकि यह काम करता है' के बजाय कुछ ऐसा क्यों कर रहे हैं, जो इतना सामान्य है।

1

ITPPENDS , इस प्रश्न का एक अच्छा उत्तर नहीं है।

प्रोग्रामर कंप्यूटर सॉफ्टवेयर लिखने वाले व्यक्ति की पहचान करने के लिए एक सामान्य दुनिया है।

अब, वहाँ सभी प्रकार के सॉफ्टवेयर है। उदाहरण के लिए, विकिपीडिया को सामान्यीकरण के स्रोत के रूप में उपयोग करके हम 3 महान सामान्यीकरण को पूरा कर सकते हैं :

  • सिस्टम प्रोग्रामिंग
  • प्रोग्रामिंग सॉफ्टवेयर
  • अनुप्रयोग प्रक्रिया सामग्री

पहले क्षेत्र प्रणाली प्रोग्रामिंग में डिवाइस ड्राइवर, ऑपरेटिंग सिस्टम, सर्वर विकसित होते हैं, इसलिए उदाहरण के लिए आप एक ऑपरेटिंग सिस्टम कोर्स का पालन कर सकते हैं।

लेकिन प्रोग्रामिंग सॉफ्टवेयर के बारे में क्या ? यहाँ के रूप में विकिपीडिया ने लिखा है कि आप संकलक, डिबगर्स, दुभाषिए, लिंकर्स, पाठ संपादकों को कोड कर सकते हैं, इसलिए, स्वचालित सिद्धांत, भाषा सिद्धांत, भाषा और संकलक में एक कोर्स उपयोगी हो सकता है।

नहीं हम किसी भी प्रकार के एप्लिकेशन सॉफ़्टवेयर के बारे में बात कर सकते हैं:
- वीडियो गेम: बीजगणित, भौतिकी, वस्तु उन्मुख पाठ्यक्रम?
- गणितीय सॉफ्टवेयर: गणितीय पाठ्यक्रम?
- छवि संपादन: गणितीय, भौतिकी, एल्गोरिथ्म पाठ्यक्रम?
- औद्योगिक स्वचालन: गणितीय, भौतिकी, एल्गोरिथम, रोबोटिक पाठ्यक्रम?
- चिकित्सा सॉफ्टवेयर: जीव विज्ञान, चिकित्सा, और क्या कोर्स?
- यहां बहुत सारा सामान: यहां बहुत सारे कोर्स।

जैसा कि आप देख सकते हैं कि बहुत से पाठ्यक्रम हैं, जिनका आप अनुसरण कर सकते हैं और आपके काम के लिए उपयोगी बन जाएंगे।

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

जैसा कि आपने सैद्धांतिक रूप से कंप्यूटर विज्ञान में सीखा है! क्या आपने इस पाठ्यक्रम को पूरा किया है? : पी

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

तो अब, आपके CS कैरियर में MUST-HAVE पाठ्यक्रम क्या है?

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

कंप्यूटर विज्ञान में वास्तविकता की गलत भावना है। उदाहरण के लिए कंप्यूटर वैज्ञानिक कभी-कभी सॉफ्टवेयर डेवलपर से बहुत दूर होते हैं।

विकिपीडिया स्पष्टीकरण पर एक नज़र डालें।

जीवन के साथ मज़े करो :)

मेरे 2 सेंट।

मेरी बहुत खराब अंग्रेजी के लिए खेद है।


1

सीएस छात्रों के अंग्रेजी में धाराप्रवाह होने की संख्या को एक हाथ से नीचे कर देना चाहिए।

बोली जाने वाली और लिखित अंग्रेजी दोनों की समझ के बिना आप हमेशा नुकसान में रहेंगे।

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

यदि आप संवाद नहीं कर सकते हैं तो आप खुद को बहुत कम समझने में सक्षम नहीं बना पाएंगे कि दूसरे क्या कह रहे हैं।

बाकी सब सिर्फ विवरण है। यदि आप संवाद कर सकते हैं, कम से कम औसत बुद्धि के हैं और आप जो पढ़ते हैं उसे समझ सकते हैं तो आप भी एक सफल कैरियर प्रोग्रामिंग कर सकते हैं।


1

मैं इस पर थोड़ा अलग दृष्टिकोण से आता हूं कि मैंने सीएस में स्नातक नहीं किया, मैंने इलेक्ट्रॉनिक इंजीनियरिंग में स्नातक किया (व्यवसाय में एक नाबालिग के साथ)।

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

मैं क्या कहूँगा कि मैंने उठाया है कि मुझे उपयोगी लगता है:

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

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


0

मैं सूची में कुछ बुनियादी मानव संसाधन / मनोविज्ञान पाठ्यक्रम भी जोड़ूंगा।

यह एक अजीब जोड़ की तरह लग सकता है, लेकिन पेशेवर रूप से काम का हिस्सा खुद को बेचना और बातचीत करना सीख रहा है। एचआर-ड्रोन की प्रेरणाओं के ठोस ज्ञान के बिना अपने पहले 'वास्तविक' साक्षात्कार में चलना आपदा के लिए एक नुस्खा है और छात्र के कम-वेतन वाले वेतन में खराब होने की संभावना है।

अपने शत्रु को जानो ताकि तुम अपनी रक्षा कर सको।


-1

1 ला वर्ष:

  1. उच्च स्तर की भाषा में बेसिक OOP
  2. डेटा संरचनाएं

दूसरा साल:

  1. कंपाइलर, आप एक साधारण एक स्क्रैच का निर्माण करते हैं
  2. संगामिति

तीसरा वर्ष:

  1. कलन विधि
  2. ऑपरेटिंग सिस्टम, आप एक साधारण से कार्यशीलता और संवर्द्धन जोड़ते हैं
  3. औपचारिक भाषा

चौथा वर्ष:

  1. नेटवर्किंग
  2. वितरित प्रणाली
  3. प्रयोक्ता इंटरफ़ेस
  4. उन्नत संकलक
  5. उन्नत ऑपरेटिंग सिस्टम
  6. कृत्रिम होशियारी
  7. कंप्यूटर ग्राफिक्स

उन पाठ्यक्रमों को बहुत सारे सिद्धांत और कोडिंग अभ्यास प्रदान करना चाहिए।


-2

यह अजीब है किसी ने भी कंप्यूटर आर्किटेक्चर का उल्लेख नहीं किया है।


मुझे लगता है कि कंप्यूटर आर्किटेक्चर यह जानना महत्वपूर्ण है कि क्या आप मेमोरी कैश, पृष्ठ दोष आदि के प्रभाव को समझना चाहते हैं
apurv020
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.