2013-02-14 30 views
48

मैंने इस विषय पर कई जवाब पढ़े हैं, लेकिन मेरे पास अभी भी प्रश्न हैं .. गणित पाठ्यक्रमों के बहुत सारे हैं, और मुझे नहीं पता कि पहले कौन से को लेना है। प्रत्येक कंप्यूटर वैज्ञानिक को कौन सा गणित वर्ग लेना चाहिए? और कौन सी कक्षा पहले होनी चाहिए और क्यों?कंप्यूटर विज्ञान के लिए गणित

उत्तर

71

बहुत अच्छा और महत्वपूर्ण सवाल पर चला जाता है! प्रत्येक कंप्यूटर वैज्ञानिक के लिए गणित की अच्छी समझ आवश्यक है, और गणित की आवश्यकता अधिक विविध बनने लग रही है।

  • Discrete Math कंप्यूटर विज्ञान के लिए सबसे महत्वपूर्ण और बुनियादी वर्ग है, और इस कारण के लिए यह आम तौर पर गणित विभागों सीएस विभागों के बजाय में की पेशकश की है। यह कक्षा कक्षा में एल्गोरिदम के लिए आपके परिचय को कम करेगी और आपको गणितीय रूप से चीजों को साबित करने और डेटा संरचनाओं और एल्गोरिदम का विश्लेषण करने के लिए मूलभूत सिद्धांतों को सिखाएगी।
  • Calculus, जबकि सीधे स्तर-स्तर कंप्यूटर विज्ञान कक्षाओं में उपयोग नहीं किया जाता है, आमतौर पर आपके गणित कौशल को बढ़ाने के लिए आपके विश्वविद्यालय द्वारा प्रदान किए जाने वाले पाठ्यक्रमों का अनुक्रम होता है। जैसे ही आप संख्यात्मक प्रोग्रामिंग और मशीन सीखने जैसी चीजों में शामिल होना शुरू करते हैं, हालांकि, यह बेहद उपयोगी साबित होगा। यह उन्नत संभावना/सांख्यिकी पाठ्यक्रमों के लिए भी एक आवश्यकता है।
  • Probability आमतौर पर आपके असतत गणित वर्ग में कुछ हद तक कवर किया जाता है, लेकिन आप गणित और सांख्यिकी विभाग में निरंतर संभाव्यता वितरण और statistical inference पर कक्षा लेना चाहते हैं। यह आपको संख्यात्मक गणना और अनुकरण करने के तरीके के बारे में बेहतर समझ देगा, और मूल रूप से machine learning के लिए आवश्यक है, जो कंप्यूटर विज्ञान के सबसे महत्वपूर्ण अनुप्रयोगों में से एक है।
  • Linear Algebra एक ऐसा वर्ग है जिसे आप मुख्य रूप से मशीन सीखने और (उन्नत) एल्गोरिदम कक्षाओं के लिए उपयोगी पाएंगे, लेकिन कंप्यूटर दृष्टि, कंप्यूटर ग्राफिक्स, मशीन लर्निंग और अन्य मात्रात्मक उप-विषयों में इसका महत्व सर्वोपरि है।

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

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

  • Real analysis, measure theory जहां मिल जाएगा कि अगर आप काफी लंबे समय के लिए संभाव्यता और कलन का अध्ययन, वे फिर से अभिसरण भी शामिल है। विश्लेषण आमतौर पर एक उपयोगी बात है जब आप संख्याओं से जुड़े एल्गोरिदम के साथ काम करना शुरू करते हैं।

  • Optimization, linear optimization, convex optimization, gradient descent, और इतने पर भी शामिल है। कई मामलों में, एक मशीन लर्निंग मॉडल "सीखना" मूल रूप से एक उद्देश्य कार्य को अनुकूलित करने के लिए उबाल जाता है, और इस कार्य के गुण जैसे कि यह उत्तल है या नहीं, यह अनुकूलित करने के लिए कितना आसान है पर एक बड़ा प्रभाव पड़ता है।

  • Numerical methods: कुछ पर विचार नहीं होगा यह एक गणित वर्ग से प्रति, लेकिन फ्लोटिंग प्वाइंट गणित के अपूर्ण प्रतिनिधित्व में एल्गोरिदम और सिद्धांत का अनुवाद करने में, वहाँ कई व्यावहारिक समस्याओं को हल किया जाना है। उदाहरण के लिए, log-sum-exp trick

  • उन लोगों के लिए जो "डेटा विज्ञान" और संबंधित क्षेत्रों में होंगे, उन्नत आंकड़े और विशेष रूप से causal inference बहुत महत्वपूर्ण हैं। बहुत सी चीजें जानने के लिए हैं, अधिकांशतः क्योंकि बहुत से डेटा तक पहुंचने के लिए this problem अनियमित के लिए है।

+0

क्या मुझे इन कक्षाओं को सूचीबद्ध करने के क्रम में रखना चाहिए? – LoLzMan

+0

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

+0

मेरे यूनी में, आप पहले सेमेस्टर में रैखिक बीजगणित, पृथक गणित और गणक के साथ शुरू करते हैं। @AndrewMao मुझे आपके प्रश्न के अंतिम भाग में दिलचस्पी होगी। – phant0m

8
+2

इनमें से किसी के पास 99% प्रोग्रामिंग के साथ कुछ भी नहीं है। यदि गणित इतना महत्वपूर्ण है, तो गणित वर्ग कहां हैं? –

+2

मैं आवेदन कर रहा हूं: कॉम्बिनेटोरिक्स, अलग गणित, संभावना, गणित तर्क और रैखिक बीजगणित सीधे प्रोग्रामिंग के लिए, उनमें से सभी को एल्गोरिदम के साथ संबंध हैं। – dud3

+1

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

6

जब से तुम "कंप्यूटर वैज्ञानिक" निर्दिष्ट करते हैं, हम कठिन मार्ग ले लेंगे:

  1. एल्गोरिदम का विश्लेषण कैलकुस, अंतर समीकरण, और पृथक गणित पर निर्भर करता है। (कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग कार्यक्रमों के बीच प्राथमिक अंतर के रूप में एल्गोरिदम के कई दृश्य विश्लेषण)। संख्यात्मक तरीके, रेखीय बीजगणित, आदि
  2. कम्प्यूटेशनल ज्यामिति
  3. समारोह सन्निकटन
  4. सेट सिद्धांत, तर्क/प्रथम क्रम पथरी
  5. संभावना:
  6. कंप्यूटर ग्राफिक्स/वैज्ञानिक दृश्य पृष्ठभूमि के एक इंजीनियरिंग विश्लेषण तरह की आवश्यकता है/सांख्यिकी
  7. सूची :)
संबंधित मुद्दे