رشته علوم کامپیوتر
علوم کامپیوتر برای اولین بار در سال ۱۹۶۰ بهعنوان یک رشتهی تحصیلی مستقل مطرح شد. این رشته از دیدگاه دو کارشناس انجمن صنفی متخصصان کامپیوتر جهان علم شناخت و بررسی الگوریتمها معرفیشده است. بهطورکلی رشتهی علوم کامپیوتر با محوریت الگوریتمها با موارد زیر معرفی میشود:
- مطالعهی رفتار الگوریتمها و توصیف ریاضی آنها
- طراحی سیستمهای کامپیوتری که الگوریتمها را اجرا کند
- طراحی زبانهای برنامهنویسی که الگوریتمها را به برنامههای قابلاجرا روی سختافزارها تبدیل کند
- درک مسائل علمی، فنی و مهندسی و تبدیل آنها به الگوریتمهایی که توسط کامپیوتر قابلاجرا باشند
برخلاف باور عموم این رشته در مورد برنامهنویسی نیست درواقع علوم کامپیوتر برای حل مسائل، زبانهای برنامهنویسی را میسازد یا مورداستفاده قرار میدهد. هدف اصلی این رشته دستیابی به بهترین الگوریتم در کمترین زمان، با کمترین خطا و بالاترین دقت است.

هیئت اعتبار گذاری علم رایانه (The computer sciences Accreditation Board) نظریه محاسبات، الگوریتمها و ساختمان داده، زبانهای برنامهسازی، معماری کامپیوتر، مهندسی نرمافزار، هوش مصنوعی، شبکههای کامپیوتری، سیستمهای پایگاه داده، پردازش موازی، ارتباط انسان و کامپیوتر، گرافیک کامپیوتری، سیستمهای عامل و محاسبات عددی را موضوعات مهم و خطیر این علم معرفی کرده است که در اینجا به توضیح مختصر برخی از آنها میپردازیم.
۱. نظریه محاسبات
نظریه محاسبات به پرسش چه چیزی قادر است محاسبه شود (بررسی مسائلی که قابلحل میباشند) و محاسبهی آن به چه میزان توان و منابع نیاز دارد (نظریهی پیچیدگی محاسباتی) پاسخ میدهد. این موضوع مطالعهی مجازی محاسباتی ابزار یا ماشینها میباشد.
۲. ساختمان داده
از بنیادیترین مباحث علوم کامپیوتر، ساختمان داده میباشد. ساختمان داده سازمان دادن دادهها برمبنای مدلی منطقی یا ریاضی برای استفادهی بهینه از دادهها میباشد. درحالیکه ساختمان داده روش ذخیرهسازی اطلاعات باهدف دسترسی آسان به آنها است الگوریتم بهعنوان روشی برای حل مسئله ارائه میشود. از پرکاربردترین مباحث ساختمان داده میتوان آرایه، صف، پشته، لیست پیوندی، گراف، درخت و جدول درهمسازی را نام برد.
از دیدگاه لینوس توروالدز ( مبدع لینوکس) برنامهنویس خوب کسی است که به ساختمان دادهها اهمیت بیشتری میدهد درحالیکه یک برنامهنویس معمولی بیشتر کدها را مدنظر قرار میدهد.
۳. زبان برنامهنویسی
ساختارهای زبانی که بهوسیلهی آنها میتوان یک الگوریتم را برای اجرای رایانه توصیف کرد و امکان نوشتن برنامه جهت تولید نرمافزار را پدید میآورند زبانهای برنامهنویسی نام دارند. زبانهای برنامهنویسی را به ۵ نسل تقسیم میکنند. بسیاری از زبانهای برنامهنویسی دارای ویژگیهای دستوری (Syntax) و معناشناسی (Semantics) میباشند. اولین زبان برنامهنویسی برای هدایت رفتار ماشینهایی مانند دستگاههای نساجی اتوماتیک و نوازندههای پیانو تولید شد و زمان اختراع آن قبل از اختراع کامپیوتر میباشد.
۴. سیستم عامل
نرمافزاری که مدیریت منابع رایانه را به عهده دارد سیستمعامل یا سامانهی عامل نام دارد. سیستمعامل به کاربر و برنامههای کاربردی خدماتی ارائه میدهد و از ضروریترین نرمافزارهای سیستم کامپیوتری بهحساب میآید. از محبوبترین سیستمعاملها میتوان به اندروید، آیاواس، لینوکس، مایکروسافت ویندوز، ویندوز فون و … اشاره کرد.
۵. پایگاه داده
به مجموعهای از دادهها با ساختار منظم ساختمان داده گفته میشود. پایگاه داده نسخههای مختلفی دارد مثلاً نسخهای که برای وب استفاده میشود MySQL و نسخهی مورداستفاده در موبایلها SQLite میباشد. هر پایگاه داده از بخشهای مختلفی مانند بیت، بایت، کاراکتر، فیلد، رکورد و جدول تشکیلشده است. مدلهای پایگاه داده عبارتاند از: مدل تخت، مدل سلسلهمراتبی، مدل شبکهای و مدل رابطهای که مدل رابطهای پایهی سامانه مدیریت پایگاه دادههای امروزی میباشد. یک طراح پایگاه داده وظیفه دارد تا برای تولید یک مدل داده مفهومی، طرحی پیشنهاد کند.
۶. هوش مصنوعی
هوش مصنوعی یا هوش ماشینی به سیستمهایی گفته میشود که واکنشهایی مشابه رفتارهای هوشمند انسانی برای حل مسائل دارند. ریشهی اصلی هوش مصنوعی در علوم فلسفه، زبانشناسی، ریاضی، روانشناسی، عصبشناسی، فیزیولوژی، تئوری کنترل، احتمالات و بهینهسازی است و در علوم کامپیوتر، علوم مهندسی، علوم زیستشناسی، علوم اجتماعی، پزشکی و … کاربردهای فراوانی دارد.از زبانهای برنامهنویسی هوش مصنوعی لیسپ، پرولوگ، کلیپس و ویپیاکسپرت را میتوان نام برد.

تفاوت رشتهی علوم کامپیوتر و مهندسی کامپیوتر
اگر دو رشتهی علوم کامپیوتر و مهندسی کامپیوتر را یک ساختمان در نظر بگیریم علوم کامپیوتر طبقهی اول و مهندسی کامپیوتر طبقهی دوم این ساختمان میباشند. برخلاف مهندسی کامپیوتر، علوم کامپیوتر دروس آزمایشگاهی ندارد و بیشتر دارای جنبهی تحقیقات نظری میباشد.
دانش کامپیوتر روشهایی را مطرح میکند که به کامپیوترها و سیستمهای نرمافزاری مربوط میشود درحالیکه مهندسی کامپیوتر با مسائل عملی، تحلیل، پیادهسازی و تولید نرمافزار سروکار دارد؛ به عبارت سادهتر علوم کامپیوتر الگوریتمها را ارائه میدهد و مهندسی کامپیوتر با بهکارگیری دانش به تولید میپردازد.
تواناییهای لازم برای این رشته
دانشجویان این رشته باید تسلط و علاقهی زیادی به ریاضی داشته باشند. این دانشجویان باید توانایی زیادی در استدلال ریاضی داشته باشند تا بتوانند با مسائل برخورد نمایند. اشخاصی که در این رشته مشغول هستند باید اهل مطالعه و تحقیق بوده و اطلاعات عمومی بالایی داشته باشند چراکه فناوری و تکنولوژی همواره در حال رشد و تغییر است.

دروس و واحدهای رشتهی علوم کامپیوتر در مقطع کارشناسی
در سالهای گذشته برای این مقطع ۴ گرایش تعریف میشد اما در حال حاضر با توجه به اینکه چارت اصلی علوم کامپیوتر تغییر کرده تقریباً از هر گرایش یک درس ارائه میشود. دانشجویان این مقطع از ۱۳۴ واحد درسی ۲۱ واحد عمومی، ۲۴ واحد مشترک رشته، ۲۹ واحد اختیاری و ۶۰ واحد بهعنوان واحد هسته (الزامی رشته، الزامی مشترک و انتخابی رشته) میگذرانند.
ردیف | نام درس | تعداد واحد | پیشنیاز |
---|---|---|---|
۱ | مبانی کامپیوتر و برنامهسازی | ۴ | - |
۲ | زبان خارجی | ۳ | - |
۳ | ریاضی عمومی ۱ | ۳ | - |
۴ | مبانی احتمال | ۴ | - |
۵ | مبانی علوم ریاضی | ۴ | ۳ |
۶ | مبانی ترکیبیات | ۳ | ۳ |
۷ | ریاضی عمومی ۲ | ۳ | ۳ |
۸ | برنامهسازی پیشرفته | ۳ | ۱ |
۹ | اندیشه اسلامی ۱ | ۲ | - |
۱۰ | آیین زندگی | ۲ | - |
۱۱ | ریاضی عمومی ۳ | ۳ | ۷ |
۱۲ | ساختمان دادهها و الگوریتم | ۴ | همزمان ۸ |
۱۳ | اصول سیستمهای کامپیوتری | ۳ | همزمان ۸ |
۱۴ | مبانی جبر | ۴ | ۵ |
۱۵ | مبانی نظریه محاسبه | ۳ | ۵ |
۱۶ | احتمال ۱ | ۳ | ۴ |
۱۷ | سیستم عامل | ۴ | ۱۲ |
۱۸ | پایگاه داده | ۴ | ۱۲ |
۱۹ | مبانی آنالیز عددی | ۴ | ۷ |
۲۰ | انقلاب | ۲ | - |
۲۱ | فارسی | ۳ | - |
۲۲ | مبانی آنالیز ریاضی | ۴ | ۷ |
۲۳ | طراحی و تحلیل الگوریتم | ۴ | ۱۵ و ۶ |
۲۴ | کامپایلر | ۴ | ۱۵ |
۲۵ | مباحثی در علوم کامپیوتر | ۳ | - |
۲۶ | قرآن | ۲ | - |
۲۷ | مباحث ویژه | ۳ | ۱ |
۲۸ | معادلات دیفرانسیل | ۳ | ۷ |
۲۹ | الزاما خارج از رشته | ۳ | - |
۳۰ | شبکههای کامپیوتری | ۴ | ۱۳ |
۳۱ | تاریخ اسلام | ۲ | - |
۳۲ | فیزیک عمومی | ۳ | - |
۳۳ | مبانی ماتریس جبر خطی | ۴ | ۵ |
۳۴ | هوش مصنوعی | ۴ | ۱۲ و ۱۶ |
۳۵ | الزاما خارج از رشته | ۳ | - |
۳۶ | تربیت بدنی | ۱ | - |
۳۷ | اندیشه ۲ | ۲ | ۹ |
۳۸ | ورزش ۱ | ۱ | ۳۶ |
۳۹ | تنظیم خانواده | ۱ | - |
۴۰ | شبکههای عصبی | ۴ | ۳۴ |
۴۱ | الگوریتمهای ژنتیک | ۴ | عهده گروه |
۴۲ | منطق فازی | ۴ | عهده گروه |
۴۳ | پروژه کارشناسی | ۳ | عهده گروه |

گرایشهای مقطع کارشناسی ارشد این رشته
این رشته در مقطع ارشد دارای ۳ گرایش هوش مصنوعی، دادهکاوی و مدیریت تجربه و دانش میباشد که در این مقاله به توضیح آنها میپردازیم.
هوش مصنوعی
در این گرایش شبیهسازی و توانایی دستیابی به مغز و رفتارهای انسانی موردبررسی قرار میگیرد. همچنین این گرایش روشهایی برای مسائلی که راهحل دقیق ندارند ارائه میدهد.
دادهکاوی
در این گرایش استخراج اطلاعات از دادهها و الگوریتمها موردبررسی قرار میگیرد.
مدیریت تصمیم و دانش
این گرایش که به رشتهی هوش مصنوعی نزدیک است به تربیت متخصصانی بهمنظور استخراج دانش و تصمیمگیری میپردازد.
آیندهی شغلی و بازار کار این رشته
فارغالتحصیلان این رشته بهعنوان مدیر هماهنگکننده، مسئول انتخاب راهحل برای مسائل با استفاده از الگوریتمها میباشند. فارغالتحصیلان این رشته میتوانند در مراکز صنعتی و تحقیقاتی، سازمانها و وزارتخانهها در پروژههای نرمافزاری، محاسباتی، انفورماتیکی، اطلاعاتی و ارتباطی به فعالیت بپردازند. این فارغالتحصیلان همچنین میتوانند بهعنوان توسعه دهندهی نرمافزار، مدیر پایگاه داده، تحلیلگر سیستمهای کامپیوتری، مدیر پروژههای نرمافزاری و توسعهدهندهی وب مشغول بهکار شوند و از طریق تولید و فروش نرمافزارهای مختلف برای خود و کشور اشتغال ایجاد کنند. شاغلان این رشته با توجه به سابقهی کار، میزان تحصیلات و مقدار مهارت درآمد کسب میکنند.