مقدمه:
علوم كامپیوتر یکی از کلاسیک ترین رشته ها در گروه رشته های کامپیوتر است که بر مبانی و اصول کامپیوتر تاکید بسیار دارد. علوم كامپیوتر پل ارتباطی دانش كامپیوتر و ریاضی است و مهمترین هدف آن دستیابی به بهترین الگوریتمهای موجود (روشهای حل مسأله) در كمترین زمان و با كمترین خطا و بیشترین دقت است.
به عبارت دیگر هدف این رشته تربیت گروهی متخصص كامپیوتر است كه با دید ریاضیتر و منطقیتر به حل مسائل مطرح شده در علوم كامپیوتر یا ریاضی بپردازند.
تاریخچه:
یافته های اولیه از چیزی که بعدها علوم کامپیوتر نامیده شد مربوط به قبل از اختراع کامپیوتر است، زمانیکه ماشین هایی مانند چرتکه برای محاسبه کارهای عددی قرن ها قبل اختراع شد.
در حوالی دهه 40 همچنانکه ماشین های محاسباتی توسعه داده می شد، واژه کامپیوتر اختراع شد. وقتی معلوم شد که کامپیوتر تنها برای محاسابات کارایی ندارد رشته علوم کامپیوتر به صورت رشته ای دانشگاهی در دهه 60 میلادی گسترش یافت که با استقبال دانش آموزان رو برو شد.
کاربرد و زیر شاخه ها:
کاربردها در علم رایانه
1- یک تعریف رسمی برای محاسبات و محاسبه پذیری و اثبات مسائلی که غیرقابل حل و سخت است.
2- مفهوم زبان برنامه نویسی ابزاری برای بیان دقیق اطلاعات تحلیل پذیر در سطوح مختلف انتزاع است.
کاربردها خارج از علم رایانه:
1- موجب بوجود آمدن انقلاب دیجیتال شد که به عصر اطلاعات فعلی منجر شد.
2- در رمزنگاری شکسته شدن کد انیگما کمکی اساسی برای پیروزی متفقین در جنگ جهانی دوم شده است.
3- محاسبات علمی مطالعه پیشرفت ذهن و بررسی ژنوم انسانی در پروژه ژنوم انسانی را ممکن ساخت.
زیر شاخه ها:
این رشته دارای چهار حیطه محاسبات علمی، نظریه الگوریتمها، سختافزار، سیستمهایاطلاعاتیاست.
محاسبات علمی در زمینه برنامهریزی خطی ، غیرخطی ، آنالیز عددی و نرمافزار در ریاضی است ؛ یعنی در این گرایش كاربرد ریاضیات در كامپیوتر مطالعه میشود.
نظریه الگوریتمها به بررسی راههای مختلف حل مسئله به یاری روشهای بهینهتر ، سریعتر و بهتر میپردازد . به عبارت دیگر هدف این گرایش پیادهسازی و بهینه كردن الگوریتم است.
معماری یا ساختار كامپیوتر نیز در حیطه سختافزار مطالعه میشوند و سیستمهای اطلاعاتی هم به مدیریت پروژههای نرمافزاری و سیستمهای اطلاعاتی پرداخته است .
نظریه الگوریتمها به بررسی راههای مختلف حل مسئله به یاری روشهای بهینهتر ، سریعتر و بهتر میپردازد . به عبارت دیگر هدف این گرایش پیادهسازی و بهینه كردن الگوریتم است.
معماری یا ساختار كامپیوتر نیز در حیطه سختافزار مطالعه میشوند و سیستمهای اطلاعاتی هم به مدیریت پروژههای نرمافزاری و سیستمهای اطلاعاتی پرداخته است .
تسلط و علاقه به ریاضیات شرط اول موفقیت در رشته علوم كامپیوتر است و دانشجوی این رشته باید بتواند با استدلال ریاضی با مسائل برخورد نماید . در ضمن باید اطلاعات عمومی خوبی داشته و حتی پس از فارغالتحصیلی به مطالعه و تحقیق پشت نكند چون در طی تحصیل تنها اطلاعات پایهای و كلی را فرا میگیرد و برای حضور در بازار كار باید خود تلاش كند و اهل مطالعه و تحقیق باشد.
موقعیتهای شغلی فارغالتحصیل علوم كامپیوتر شباهت بسیاری با مهندسی كامپیوتر گرایش نرمافزار دارد اما در كل نقش فارغالتحصیل این رشته به عنوان مدیر و هماهنگ كننده بسیار مهم و قابل توجه است. فردی كه مسئول انتخاب راهحل مسائل و حل آنها همچنین تقسیم الگوریتمها در بین مهندسین نرمافزار و در انتها جمع كردن قسمتهای توزیع شده میباشد.
تفاوت با مهندسی کامپیوتر:
بسیاری از اشخاص مهندسی نرم افزار را با علم کامپیوتر یکی می دانند. این دید بسیار محدود کننده و غلط است. در واقع مهندسی نرم افزار را می توان مستقل از علم کامپیوتر دانست.
هر چند پیش نیاز کاری مهندسین نرم افزار آشنایی با علوم کامپیوتری است اما اساسا، علم کامپیوتر با تئوریها و روش هایی سر و کار دارد که به کامپیوترها و سیستم های نرم افزاری مربوط می شود، در حالی که مهندسی نرم افزار با مسائل عملی تعیین مشخصات، تحلیل، پیاده سازی و تولید نرم افزار سر و کار دارد. البته بدیهی است که مهندسی نرم افزار و علم کامپیوتر رابطه تنگاتنگی با هم دارند و پیشرفت در علم کامپیوتر نیاز به پیشرفت علم نرم افزار را می طلبد. داشتن برخی از علوم کامپیوتر برای مهندسین نرم افزار ضروری است(همان طور که دانش فیزیک برای مهندسین الکترونیک ضرروی است).
در حالت ایده آل، کل مهندسی نرم افزار از تئوری های علم کامپیوتر ساخته می شود، اما واقعیت چیز دیگری است. مهندسین نرم افزار اغلب باید از رهیافت های ذهنی برای توسعه نرم افزار استفاده کنند و احتمالا ایده ای که تا به حال شکل نگرفته را عملی کنند. تئوری های علم کامپیوتر را همیشه نمی توان به مسائل واقعی پیچیده ای اعمال کرد که نیازمند راه حل های نرم افزاری اند.
در واقع مهندسین نرم افزار باید مسائل پیچیده واقعی را با تفکر نرم افزاری مبتنی بر علم کامپیوتر حل کنند. این گونه مسائل واقعی کاملا با تئوری های علم کامپیوتر در تناقض است و در این میان وظیفه مهندسین نرم افزار تحلیل و رفع تناقضات مسئله با علوم کامپیوتری و ایجاد سیستم نرم افزاری مبتنی بر علم کامپیوتر می باشد.
به طور مثال ساخت یک نرم افزار اتوماسیون اداری که قرار است تمامی سیستم های یک سازمان بزرگ از جمله سیستم حسابداری، تولید ، فروش ، انبارداری وغیره را پیاده سازی نماید، نیاز به داشتن دانش مهندسی نرم افزار دارد. چنین سیستمی را نمی توان با تئوری و منطق کامپیوتری پیاده سازی نمود چون این گونه سیستم ها نیاز به تحلیل های تشریحی دارند که با علوم کامپیوتر که فقط قادر با حل مسائل منطقی است کاملا در تضاد می باشد.
علوم کامپیتردر ایران:
این رشته در سال 1358 و در مقطع كارشناسی به عنوان یك رشته مادر، وارد دانشگاه تهران شد. اما در سال1365 با راه اندازی دو شاخه مهندسی كامپیوتر، این رشته از لیست رشته های انتخابی دانش آموزان در كنكور حذف شد. با این حال نقش و اهمیت این رشته به حدی است كه برنامه ریزان ما را مجبور كرد تا دوباره در سال،1377 این رشته را در مقطع كارشناسی راه اندازی نمایند.
در تمام دنیا، رشته علوم كامپیوتر به عنوان «مادر» علم كامپیوتر، یكی از اركان غیرقابل انكار علوم و صنایع شان محسوب می شود. چرا كه كارشناس این رشته، با داشتن پایه تئوری قوی، می تواند با ابداع روشهای جدید، با نوشتن برنامه های جامع و مفید، كمك مؤثری برای مهندسان كامپیوتر باشد.
این رشته كه در واقع یك رشته میان رشته ای است در مقطع كارشناسی ارشد جزء رشته های شناور به حساب می آید كه داوطلبان می توانند علاوه بر رشته خود در آزمون این رشته نیز شركت نمایند. البته دانشجویان رشته های كامپیوتر و ریاضی مشتری های اصلی این رشته به شمار می آیند ولی این رشته توانسته است با توجه به ویژگی های خاص خود داوطلبانی را از رشته های دیگر نظیر برق نیز جذب نماید.
تواناييهاي لازم:
تسلّط و علاقه به رياضيات شرط اوّل موفّقيّت در رشتهي علوم کامپيوتر است و دانشجوي اين رشته بايد بتواند با استدلال رياضي با مسائل برخورد نمايد. در ضمن بايد اطّلاعات عمومي خوبي داشته و حتّي پس از فارغالتّحصيلي به مطالعه و تحقيق پشت نکند، چون در طيّ تحصيل تنها اطّلاعات پايهاي و کلّي را فرا ميگيرد و براي حضور در بازار کار بايد خود تلاش کند و اهل مطالعه و تحقيق باشد.
موقعيت شغلي در ايران:
موقعيتهاي شغلي فارغالتّحصيل علوم کامپيوتر شباهت بسياري با مهندسي کامپيوتر گرايش نرمافزار دارد، امّا در کل نقش فارغالتّحصيل اين رشته به عنوان مدير و هماهنگ کننده، بسيار مهم و قابل توجّه است. فردي که مسؤول انتخاب راهحل مسائل و حلّ آنها، همچنين تقسيم الگوريتمها در بين مهندسين نرمافزار و در انتها جمع کردن قسمتهاي توزيع شده ميباشد.
درسهاي اين رشته در طول تحصيل:
دروس اصلي و تخصّصي مشترک در گرايشهاي مختلف علوم کامپيوتر:
رياضي عمومي، فيزيک پايه، آمار و احتمال، اصول کامپيوتر، اصول سيستمهاي کامپيوتري، جبر خطي عددي، رياضيات گسسته، آناليز عددي، ساختمان دادهها و الگوريتمها، نظريه اتوماتا و زبانها، کامپايلر، نظريه محاسبات، اصول طراحي نرمافزار، منطق، ذخيره و بازيابي اطلاعات، پايگاه دادهها، اصول سيستمهاي عامل، شبيهسازي کامپيوتري، زبانهاي برنامهسازي، اصول مديريت، مباني اقتصاد.
دروس تخصصي گرايش محاسبات علمي:
برنامهريزي خطي، برنامهريزي غيرخطي، نرمافزار رياضي، آناليز عددي، طراحي هندسي کامپيوتري.
دروس تخصصي گرايش نظريه الگوريتمها،برنامهريزي پويا، نظريه گراف، بهينهسازي ترکيبي و آناليز شبکهها، نظريهي کدگذاري، سيستمهاي صفي و مدلهاي کارآيي.
دروس تخصصي گرايش سختافزار:
مدارهاي منطقي، معماري کامپيوتر، ريزپردازنده
دروس تخصصي گرايش سيستمهاي اطّلاعاتي:
تحليل و طرّاحي سيستمهاي اطّلاعاتي، متدولوژي ساخت سيستمهاي اطّلاعاتي، مديريت پروژههاي نرمافزاري، سيستمهاي اطّلاعاتي مديريت.