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