رشته نرم افزار به نظر من از یک طرف یه حسن نسبت به هوش داره
اونم اینه که دروسی که توی کارشناسی خوندیم مستقیما با دروس ارشد مرتبط هست و خیلی از دروس ارشد رسما به همون اسامی و با پسوند "پیشرفته" مطرح می شن مثل الگوریتم پیشرفته یا پایگاه داده پیشرفته و .... اما در گرایش هوش با دروسی مواجه خواهیم شد که در کارشناسی تقریبا دیدی نسبت به اونا نداریم مثل شبکه عصبی یا منطق فازی و ..
به همین خاطر در نرم افزار با احتمال بیشتری این امکان هست که از بدو ورود، تصمیم بگیریم برای پایان نامه می خواهیم چه کار کنیم و طبق همون روال درس برداریم.
از طرف دیگه به نظرم رشته نرم افزار یه عیب نسبت به رشته هوش داره اونم اینه که درسها هر کدوم ساز خودشون رو می زنن و همگرایی کمتری دارند. مثلا ارتباط دادن کامپایلر پیشرفته به سیستم عامل پیشرفته یا الگوریتم پیشرفته به مراتب مشکل تر (و شاید حتی غیرممکن) نسبت به برقراری ارتباط بین دروس داده کاوی و شبکه عصبی یا منطق فازی در رشته هوش هست.
اما در ایران پایان نامه های رشته نرم افزار در مقطع ارشد دو حالت پیدا می کنه یا مستقیما به فیلدهای نرم افزاری می پردازه یا به سمت هوش گرایش داره.
۱) اگرانتخاب شما حالت اول هست قاعدتا باید در طول تحصیل دروس نرم افزاری اخذ کنید و از الان هم شروع به پیش مطالعه نمایید.
من چند تا فیلد که زیاد روش کار می شه رو همراه با پیش نیازهایی که به نظرم میاد قبل از شروع ارشد خوبه مطالعه بشن اینجا مینویسم (البته فیلدها وسیع تر از این هستن و نمی شه همه رو در قالب زیر دسته بندی کرد یا دقیقا مثل زیر مرزبندی کرد)
قبل از هر چیز می گم که منظور از مطالعه منابع در اینجا خوندن کتب زبان اصلی هست. اینکه چرا این حرف رو می زنم و چجوری زبان تون خوب میشه توی این تاپیک توضیح دادم:
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
۱- مهندسی نرم افزار
مطالعه کتاب پرسمن و سامرویل با دید مفهومی یعنی اینکه مثلا معماری نرم افزار یعنی چی دقیقا، روش های تست نرم افزار چیا هستن خصوصا در حالا شی گرا و خصوصا مطالعه فصول آخر پرسمن که توی کارشناسی درس نمی دن و سراغ مباحث وب و ... می ره.
۲- شبکه
مطالعه کتاب تننباوم و کتاب راس باز هم با یک دید عمیق تر و فراتر از کارشناسی مثلا اینکه الگوریتم های مسیریابی چطوری کار می کنن و شبکه بی سیم و چندرسانه ای چجوری هستن یا مباحث امنیتی چیا هستن و چه الگوریتمهایی دارن
۳- الگوریتم
کتاب طراحی الگوریتم CLRS را بطور کامل میل بفرمایید :-) یعنی اونقدر مسلط بشین که بتونین بعدا در یه زمینه ای خودتون الگوریتم مناسبی پیشنهاد بدین یا یه بهبود خوب در الگوریتمهای موجود اعمال کنین. البته اگر به الگوریتمهای گرافیکی و هندسه محاسباتی مثل مساله برش علاقه مندید مطالعه فصول مرتبط از کتاب گرافیک کامپیوتری Hearn هم توصیه می شه
۴- سیستم های توزیع شده
یکی از مباحث داغ الان cloud computing هست. مطالعه کتاب توزیع شده تننباوم و نیز singhal توصیه می شه که می گن توزیع شده یعنی چی و مباحث اصلی این فیلد رو مطرح می کنن
۵- پایگاه داده
اینجا شاید تنها موردی باشه که مطالعه کتاب فارسی رو هم پیشنهاد می دم. کتاب پایگاه داده استاد بزرگوار روحانی رانکوهی جلد اولش رو خوب مسلط باشین، مباحث معماری پایگاه داده و پرس و جو و نرمال سازی رو خوب متوجه بشین و جلد دوم این کتاب ارزشمند که مباحث ارشد روپوشش می ده رو هم بخونین. توی پرانتز بگم که استاد روحانی رانکوهی برای توصیف دقیق و عملی سبک نگارش و ارائه درست مطالب و زحماتی که خالصانه کشیده اند به گردن همه ما حق دارن خدا حفظ شون کنه
ضمنا مطالعه کتاب پایگاه داده silberschats از فصل transaction به بعد هم خیلی توصیه می شه چون هم مرجع اصلی درس پایگاه داده پیشرفته هست و هم خیلی روان و قشنگ نوشته.
۶- کامپایلر و زبان های برنامه سازی
مطالعه فصول فراتر از کارشناسی در کتاب کامپایلر Aho و نیز کتاب زبان برنامه سازی sebesta ویرایش دهم. با این دید بخونید که بتونین یه پارسر برای یه زبان جدید بسازین یا بتونین الگوریتمی پیشنهاد کنید که بهینه سازی کد انجام بدین
۷- شبیه سازی و مدلسازی
معمولا توی بحث شبکه و سیستم توزیع شده و همچنین فیلدهایی که به نظر خیلی تئوریک می رسن مثل مهندسی نرم افزار، برای اینکه ایده خودتون رو اثبات کنین به شبیه ساز ی نیاز دارین. مباحث تئوری صف (Queue Theory) و زنجیر مارکف (Markov chain)توی این زمینه خیلی کاربردی هستن. ضمنا حتما دنبال یادگیری ابزار شبیه سازی هم باشین. ابزارهای خاصی برای شبیه سازی شبکه یا cloud موجود هست و همچنین ابزارهی عمومی مثل متلب و arena هم هستن. بلد بودن ابزار مناسب خیلی مهمه
من کتاب آقای Menasce رو هم پیشنهاد می کنم که ساده و روان و از دید کامپیوتری بررسی کرده (اسم کتاب: Performance by Design: Computer Capacity Planning By Example) و ضمنا مقالات ایشون رو هم یه نگاهی بیندازین (صفحه خانگی:
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
) واقعا این کاره هست. خیلی دیگه از کتابهای مربوط به این بحث، از دید کلی یا از دید رشته های دیگری مثل صنایع این مباحث رو مطرح می کنن. البته اونا هم خوب هستن ولی ممکنه در ابتدا به نظر یه مقدار سخت برسن
به هر حال حتی توی گرایش نرم افزار هم پیشنهاد می کنم یکی دو تا درس مرتبط با هوش رو بگذرونین یا حداقل سر کلاس شون بشینید چون همه فیلدهای تحقیقاتی الان به سمت هوشمند شدن می رن و ممکنه با پیشرفت روند پایان نامه تون به سمت هوش کشیده بشین: پیشنهاد من دو درس داده کاوی و سیستم های تصمیم یار (DSS) هست که یه دید کلی از مباحث هوش به صورت کاربردی به ما می دن.
۲) اگر انتخاب شما حالت دوم هست یعنی انجام پایان نامه با گرایش هوش (مثلا فیلد پردازش تصویر یا صوت یا روباتیک یا...)، به این تاپیک مراجعه فرمایید:
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
امیدوارم همگی موفق باشیم