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

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

2. पाठ्यक्रम परिणाम: पाठ्यक्रम/प्रयोगशाला के सफलतापूर्वक समापन पर छात्र सक्षम होंगे

CO1: डेटा संरचना की समय और स्थान दक्षता को डिज़ाइन और विश्लेषण करें।

CO2: स्थिर और गतिशील मेमोरी प्रबंधन की अवधारणा को समझें

CO3: दी गई समस्याओं के लिए उपयुक्त डेटा संरचना की पहचान करें।
CO2: CO4: डेटा संरचनाओं के अनुप्रयोगों पर व्यावहारिक ज्ञान रखें

3. मुख्य उपकरण/सॉफ्टवेयर उपलब्ध हैं

3.1 कोर i7 इंटेल 3.60 के 50 डेल डेस्कटॉप 24x7 1GBPS हाई-स्पीड इंटरनेट कनेक्शन से जुड़े हैं। डेल के इंटेल कोर i7 डेस्कटॉप कंटेंट स्ट्रीमिंग के लिए अनुकूलित हैं, जिसमें उच्च गुणवत्ता वाले डिस्प्ले, उन्नत ग्राफिक्स और तेज़ कनेक्टिविटी जैसी सुविधाएँ हैं। डेल के इंटेल प्रोसेसर डेस्कटॉप को मल्टीटास्किंग को कुशलतापूर्वक संभालने के लिए डिज़ाइन किया गया है, जिससे उपयोगकर्ता आसानी से एक साथ कई एप्लिकेशन चला सकते हैं।

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

3.3 Dev-C++ एक मुफ़्त पूर्ण-विशेषताओं वाला एकीकृत विकास वातावरण (IDE) है जो C और C++ में प्रोग्रामिंग के लिए GNU जनरल पब्लिक लाइसेंस के तहत वितरित किया जाता है। इसे मूल रूप से कॉलिन लाप्लास द्वारा विकसित किया गया था और इसे पहली बार 1998 में रिलीज़ किया गया था। यह डेल्फी में लिखा गया है। 1998 में पहला संस्करण रिलीज़ होने के बाद से लाखों डेवलपर्स, छात्र और शोधकर्ता Dev-C++ का उपयोग करते हैं। इसे दर्जनों C++ और वैज्ञानिक पुस्तकों में शामिल किया गया है और यह दुनिया भर के विश्वविद्यालयों और स्कूलों के बीच पसंदीदा शिक्षण उपकरण में से एक बना हुआ है।

3.4 जावा एक उच्च-स्तरीय, वर्ग-आधारित, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जिसे यथासंभव कम कार्यान्वयन निर्भरता रखने के लिए डिज़ाइन किया गया है। जावा को मूल रूप से सन माइक्रोसिस्टम्स में जेम्स गोसलिंग द्वारा विकसित किया गया था। इसे मई 1995 में सन के जावा प्लेटफ़ॉर्म के मुख्य घटक के रूप में रिलीज़ किया गया था। यह एक सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है जिसका उद्देश्य प्रोग्रामर को एक बार लिखने, कहीं भी चलाने (WORA) की अनुमति देना है, जिसका अर्थ है कि संकलित जावा कोड उन सभी प्लेटफ़ॉर्म पर चल सकता है जो जावा का समर्थन करते हैं, बिना किसी पुन: संकलन की आवश्यकता के। जावा अनुप्रयोगों को आम तौर पर बाइटकोड में संकलित किया जाता है जो अंतर्निहित कंप्यूटर आर्किटेक्चर की परवाह किए बिना किसी भी जावा वर्चुअल मशीन (JVM) पर चल सकता है। GitHub के अनुसार 2022 में जावा तीसरी सबसे लोकप्रिय प्रोग्रामिंग भाषा थी।

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

4. प्रयोगों की सुझावात्मक सूची

1. किसी सरणी में संग्रहीत संख्याओं का माध्य और माध्यिका ज्ञात करने के लिए एक प्रोग्राम लिखें।

2. किसी सरणी में एक तत्व सम्मिलित करने और सरणी से एक तत्व हटाने के लिए एक प्रोग्राम लिखें।

3. किसी सरणी में किसी संख्या के लिए रैखिक और बाइनरी खोज करने के लिए एक प्रोग्राम लिखें।

4. 5 पाठ्यक्रमों में 10 छात्रों द्वारा प्राप्त अंकों को दो-आयामी सरणी में संग्रहीत करने के लिए एक प्रोग्राम लिखें।

5. लिंक्ड सूची में प्रविष्टि, विलोपन और खोज सहित एकल लिंक्ड सूची को लागू करने के लिए एक प्रोग्राम लिखें।

6. लिंक्ड सूची को बाधित किए बिना लिंक्ड सूची के तत्वों को उल्टे क्रम में प्रिंट करने के लिए एक प्रोग्राम लिखें।

7. लिंक्ड सूची को उलटने के लिए एक प्रोग्राम लिखें।

8. लिंक्ड सूचियों का उपयोग करके दो बहुपदों को जोड़ने के लिए एक प्रोग्राम लिखें।

9. लिंक्ड सूची में प्रविष्टि, विलोपन और खोज सहित दोहरी लिंक्ड सूची को लागू करने के लिए एक प्रोग्राम लिखें।

10. एक सरणी और लिंक्ड सूची का उपयोग करके स्टैक को कार्यान्वित करने के लिए एक प्रोग्राम लिखें।

11. सरणी और लिंक्ड सूची का उपयोग करके कतार को लागू करने के लिए एक प्रोग्राम लिखें।12. सरणी का उपयोग करके एक वृत्ताकार कतार को लागू करने के लिए एक प्रोग्राम लिखें।

13. लिंक्ड सूची का उपयोग करके प्राथमिकता कतार को लागू करने के लिए एक प्रोग्राम लिखें।

14. लिंक्ड सूची का उपयोग करके डबल-एंडेड कतार को लागू करने के लिए एक प्रोग्राम लिखें।

15. विभिन्न प्रकार की सॉर्टिंग को लागू करने के लिए एक प्रोग्राम लिखें। (बबल, इंसर्शन, क्विक, सिलेक्शन, मर्ज, हीप)

16. बाइनरी ट्री बनाने और इसके प्रीऑर्डर, इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल को प्रदर्शित करने के लिए एक प्रोग्राम लिखें।

17. बाइनरी सर्च ट्री में इंसर्शन, डिलीशन और सर्च करने के लिए एक प्रोग्राम लिखें।

18. ग्राफ बनाने के लिए एक प्रोग्राम लिखें।

19. ग्राफ में दो शीर्षों के बीच की दूरी की गणना करने के लिए एक प्रोग्राम लिखें।

20. ग्राफ में शीर्षों के प्रत्येक जोड़े के बीच की दूरी की गणना करने के लिए एक प्रोग्राम लिखें।

21. किसी ग्राफ का न्यूनतम स्पैनिंग वृक्ष बनाने के लिए प्रोग्राम लिखें।

5. सुझाई गई पुस्तकें:

6. संदर्भ

1. थॉमस एच. कॉर्मेन, सी.ई. लीसरसन, आर एल.रिवेस्ट और सी. स्टीन, एल्गोरिदम का परिचय, तीसरा संस्करण, एमआईटी प्रेस, 2009।

2. एलिस होरोविट्ज़, एस. साहनी, फ़्रीड, "सी में डेटा संरचनाओं के मूल सिद्धांत", दूसरा संस्करण, 2015।

3. वाई. लैंगसम, एम. जे. ऑगेंस्टीन और ए. एम. टेनेनबाम, सी का उपयोग करते हुए डेटा संरचनाएँ, पियर्सन एडु. एशिया, 2004।

4. डेटा संरचनाएँ - लिपशुट्ज़ टीएमएच

https://en.wikipedia.org/wiki/Data_structure

https://www.geeksforgeeks.org/data-structures/

https://www.codechef.com/roadmap/data-structures-and-algorithms

https://sourceforge.net/projects/dev-cpp/files/latest/download

https://bloodshed-dev-c.en.softonic.com/

https://www.java.com/download/ie_manual.jsp

https://www.python.org/downloads/

FACULTY COORDINATOR: Dr. L Shyam Sunder Singh

LAB INCHARGE: Meraj Mohammed

LAB CO-INCHARGE: Manoj

PLACE: Room#10, Ground Floor, CSED@NIELIT

 

Hindi