روزنامه شریف/ اخبار راستکی دانشگاه صنعتی شریف را از روزنامه دنبال کنید.
نقطه خط
اینجا مهندسی کامپیوتر نیست
گفتوگو با دکتر دانشگر، عضو هیئت علمی دانشکده ریاضی و علوم کامپیوتر
روزنامه: چرا رشته علوم کامپیوتر به عنوان یک رشته دانشگاهی وجود دارد؟ علوم کامپیوتر چه نیازی را از جامعه برطرف میکند؟
واژه علوم کامپیوتر واژهای است که در پنجاه سال اخیر به کار گرفته شده و آن هم به دلیل سیر تحول سریع علوم مرتبط با کامپیوترها بوده است. در واقع از پیدایش کامپیوترهای امروزی زمان زیادی نمیگذرد و این دستگاه از پنجاه شصت سال پیش که بوجود آمده، در حال توسعه است. برای این توسعه نیاز به متخصصینی بوده که آن را به خوبی بشناسند و بتوانند آن را بهبود ببخشند؛ مثل متخصصینی که در ارتباط با ساخت و اصلاح و تعمیر سختافزار آن مشغول به کار هستند یا متخصصین نرمافزار که بتوانند با استفاده از آن راهحلهای حرفهای و عملی برای مسائل مختلف ارائه دهند یا متخصصین آیتی و ... . علوم کامپیوتر در واقع به مسائل کامپیوترها از دیدگاه تحلیلی و نظری میپردازد. البته قطعا یک نفر در دانشکده علوم کامپیوتر با مسائل نرمافزاری غریبه نیست ولی تأکید در علوم کامپیوتر روی تحلیل مسائل کامپیوتری و الگوریتمی و ... است و قرار نیست در این دانشکده برنامههای کاربردی توسعه بدهیم. علوم کامپیوتر تلاش میکند افرادی تربیت کند که قدرت تحلیل و مدلسازی خوبی در ارتباط با مسائل مربوط به کامپیوتر داشته باشند.
روزنامه: دانشآموزی که میخواهد علوم کامپیوتر را به عنوان رشته تحصیلی در دانشگاه انتخاب کند، چه ویژگی و شخصیتی داشته باشد؟
دانشجویی که به رشته علوم کامپیوتر وارد میشود، باید استعداد و تمایلی به مدلسازی و تفکر منظم و تئوری داشته باشد. البته به این معنی نیست که همه درسها تئوری است، قطعا درسهای نرمافزاری هم دارند، درسهای سختافزاری هم دارند و برحسب برداشتن درسهای اختیاری میتوانند سمت و سوی کاری و پژوهشی خود را تعیین کنند.
البته تأکید من این است که اگر کسی واقعا میخواهد در ارتباط با کامپیوتر مهندس حرفهای شود، بهتر است سراغ رشته مهندسی کامپیوتر برود. در رشته علوم کامپیوتر تا حدودی نیاز به کار نظری و تفکر مجرد وجود دارد. در علوم کامپیوتر بیشتر به جنبههای تحلیلی و نظری درسها و مباحث پرداخته میشود تا جنبههای فنی و مهندسی.
روزنامه: آینده تحصیلی و پژوهشی و کاری رشته علوم کامپیوتر چگونه است؟ فارغالتحصیلان علوم کامپیوتر در چه جاهایی مشغول فعالیت میشوند؟
گرایشهای علوم کامپیوتر در مقطع تحصیلات تکمیلی عبارتاند از: نظریه محاسبه، محاسبات علمی، نظریه سیستم، زبانهای صوری، علوم داده، نظریه سیستمها و هوش مصنوعی
علوم کامپیوتر خوشبختانه گستره پهناوری دارد. دانشجو هم میتواند در خود رشته بماند و تا مقطع بالا ادامه تحصیل بدهد و کار آکادمیک انجام دهد، هم براساس گذراندن درسهای اختیاری در کارشناسی میتواند با داشتن پیشزمینه علوم کامپیوتر به رشتههای دیگر برود؛ مثلا فردی با کارشناسی علوم کامپیوتر در ارشد مدیریت خوانده یا علایقش به سمت مهندسی بوده و بعدا مهندس کامپیوتر شده یا حتی بعد از کارشناسی جذب بازار کار شده است. البته این افراد معمولا در سالهای آخر کارشناسی با بازار کار ارتباط برقرار کرده و از زمان دانشجویی توانستهاند مسائل بازار کار را درک کنند. حتی مثالهایی وجود دارد که افرادی وارد سیستمهای بانکی شده و به موفقیت رسیدهاند. اگر دانشجوی علوم کامپیوتر دانش خوبی از آمار، ترکیبیات و مدلسازی داشته و در برنامهنویسی هم ماهر باشد، در زمینه تحلیل داده هم میتواند فعالیت کند که در حال حاضر مرغوبیت زیادی دارد.
واقعیت این است که تنوع خروجی رشته علوم کامپیوتر میتواند خیلی زیاد باشد؛ خوب است که دانشجو در یکی دو سال اول تحصیل با انتخاب مناسب درسها و مشورت با استاد راهنما و افراد دیگر درک کند که استعداد و تصمیمش چیست و بر اساس آن در دو سال بعدی مسیری را برود که به مقصد موردنظرش ختم شود.
روزنامه: سخن و توصیه آخر شما درباره انتخاب رشته برای دانشآموزها چیست؟
به عنوان یک توصیه پدرانه میگویم حتما رشتهای را انتخاب کنند که دوستش دارند و میتوانند در آن وقت بگذارند. البته این علاقه بیاد واقعی باشد، یعنی لازم است اطلاعات صحیح و موثقی از رشتهها داشته باشند تا بتوانند بفهمند علاقهشان واقعی است یا کاذب. آدم اگر به حوزهای علاقه داشته باشد میتواند روی آن وقت و انرژی صرف کند و در آن حوزه موفق میشود.
دنیای الگوریتمها
فیلم بازی تقلید (The Imitation Game) داستان زندگی آلن تورینگ (Alan Turing)، پدر کامپیوترهای امروزی است. با این که فیلم در راستای افزایش جذب بیننده دخل و تصرف زیادی در واقعیات آن دوران داشته اما چیزی که به خوبی نشان میدهد، اولین استفاده جدی از محاسبهگرهای دیجیتالی(کامپیوترها) است. آلن تورینگ یک ریاضیدان باهوش و خلاق است که در سن ۲۴ سالگی یک ماشین انتزاعی به نام ماشین تورینگ طراحی میکند. البته کاری که تورینگ را از ریاضیدانان پیش از او متمایز میکند، نه طراحی انتزاعی این ماشین بلکه ساخت عملی مدل ساده این ماشین است که دید ریاضیدانان به علومکامپیوتر را دگرگون میکند. این فیلم داستان تولید ماشین پیچیدهایست که سیستم رمزنگاری نازیها را رمزگشایی میکند و باعث به پایان رسیدن سریعتر جنگ و کاهش تلفات میشود.
علوم کامپیوتر رشتهایست که چند ده سال پیش از آلن تورینگ آغاز شده و به عنوان بخش کوچکی از ریاضیات مورد توجه ریاضیدانان بوده. پس از آنکه تورینگ در موضوعات کاملا کاربردی از آن کمک گرفت و در آنها بسیار موفق بود، رفته رفته کاربرد کامپیوترها در زندگی انسان بیشتر شد و به دنبال آن اهمیت این رشته نیز افزایش یافت تا جایی که خود علوم کامپیوتر به شاخههای مجزا شکسته شد. رشتهای به وجود آمد برای تمرکز بر روی ساخت رایانه و تولید رایانههای با قدرت و سرعت و حافظه بیشتر که به آن رشته سختافزار میگوییم. بعد از مدتی مسائل آنقدر پیچیده و چند وجهی شدند که صِرف حل مسئله به معنای پایان کار نبود و نیاز به رشتهای بود که بتواند این راه حل را عملیاتی کند. به این رشته مهندسی نرمافزار گفته میشود. در واقع یک مهندس نرمافزار باید بتواند یک پروژه بزرگ کامپیوتری را مدیریت و به سرانجام برساند. اما آنچیزی که امروز به عنوان رشته علوم کامپیوتر نامیده میشود، همان حل مسائل کامپیوتری است. یک دانشمند کامپیوتر (computer scientist) باید بتواند مسائلی را که مورد نیاز حال یا آیندهی بشر است، حل کند.
علوم پایه به رشتههایی گفته میشود که به طور مستقیم با مسائل کاربردی و مهندسی ارتباط ندارد. این رشتهها به دلیل نداشتن تأثیر لحظهای و عینی در بین مردم و حتی مسئولین کمتر طرفدار دارند. علاوه بر این رشتههای علوم پایه صبر و تلاش بسیار بیشتر و مداومتری میخواهند تا به ثمر برسند. شما ممکن است در مورد یک مسئله پنج سال فکر و تحقیق کنید و نهایتا نتوانید آن را حل کنید اما تمام تغییرات بزرگ را همین دانشمندان رقم زدهاند. شاید بتوان علوم کامپیوتر را نزدیکترین رشته علوم پایه به مسائل کاربردی دانست اما همچنان عمیق و خلاق و صبور بودن از جمله الزامات یک رشته علوم پایه است.
چه چیزی انتظار شما را میکشد؟
دانشگاه شریف در دهه پنجاه و شصت شمسی رشتهای به نام علوم کامپیوتر در دانشکده ریاضی داشته است. در اواخر دهه شصت برخی استادان دانشکده ریاضی و برق دانشکده مهندسی کامپیوتر را راهاندازی میکنند و تا سال ۸۲ منحصرا در حوزه کامپیوتر فعالیت میکنند. در سال ۸۲ استادان دانشکده ریاضی رشته علوم کامپیوتر را راه میاندازند. البته به دلیل کمبود استاد و جدید بودن رشته درسهای بسیار کمی در حوزه مخصوص علوم کامپیوتر ارائه شد و بنابراین استقبال از این رشته کم بود. اوایل دهه نود تعدادی از استادان جوان و خلاق به دانشکده اضافه میشوند که حوزهی مورد علاقه اکثر آنها علوم کامپیوتر است و این باعث رونق گرفتن بیشتر این رشته میشود.
اساتید دانشکده ریاضی بر خلاف اکثر دانشکدهها درسهای متنوعی را آموزش میدهند. این موضوع اولا باعث رشد و یادگیری خود استادان و ثانیا پویایی آموزش در دانشکده میشود. به این صورت که شما در یک درس خاص میتوانید روشهای متفاوت تدریس را مشاهده کنید و از زوایای مختلفی آن را بیاموزید.
از مزایا و همچنین معایب رشته علوم کامپیوتر اختیار عمل بسیار زیاد دانشجویان در برداشتن دروس است، به این صورت که به طور معمول اختیار دانشجویان دیگر دانشکدهها در برداشتن دروس فقط منحصر به انتخاب استاد و زمان کلاس آن درس است ولی در دانشکده ریاضی شما تعداد بسیار زیادی درس دارید که باید از بین آنها چندتا را بردارید. همینطور در بیشتر دانشکدهها به طور معمول دانشجویان میتوانند حدود ۴ واحد (یک یا دو درس) خارج از دانشکده درس بردارند ولی در این دانشکده میتوانید تا ۱۷ واحد خارج از دانشکده برداشته شود. این اختیار هم تهدید است و هم فرصت. به این معنا که اگر شما به مسیر آینده خود فکر نکنید و سردرگم انتخاب واحد کنید، احتمالا در نهایت تقریبا در هیچ زمینهای صاحب نظر نیستید اما اگر فکر شده و با مشورت این کار را انجام دهید، هم میتوانید تجربههای متنوعی کسب کنید و هم در موضوع مورد علاقه خود بسیار بیشتر عمیق شوید. از طرفی دوران کارشناسی دوران یافتن مسیر کاری و تحصیلی است، پس در انتخاب حوزه کاری خود عجله نکنید و درسها و موضوعات متنوعی را دنبال کنید تا بتوانید انتخاب بهتری داشته باشید.
رشته علوم کامپیوتر دانشکده علوم ریاضی شریف (با این جلال و جبروت) نهایتا ۵ یا ۶ استاد دارد و این ضعف بزرگیست. شما ممکن است به درسی علاقهمند شوید ولی به علت کمبود استاد سالها منتظر ارائه آن درس بمانید و یا زمینه خاصی در این حوزه شما را درگیر کند و هیچ استادی نباشد که در این زمینه فعالیت کند.
سال اول تحصیل در این رشته به گذراندن درسهای اولیه مشترک در دانشگاه مانند ریاضی پایه، فیزیک پایه، مبانی برنامهنویسی و ... میگذرد و علاوه بر اینها در ترم دوم درس برنامهنویسی پیشرفته ارائه میشود که اولین برخورد جدی دانشجویان با پروژههای بزرگ برنامهنویسی است.
سال دوم شامل درسهای مبانی رشته مانند نظریه زبانها و اتوماتا، جبرخطی، تحقیق در عملیات، منطق، داده ساختار و احتمال است و دانشجویان را برای گذراندن دروس تخصصی آماده میکند.
رشته علوم کامپیوتر چهار سبد درسی دارد که هرکدام مربوط به زمینههای مختلفی از رشته هستند، مثلا یک سبد بیشتر مفاهیم ریاضیاتی و محض را در خود جا داده و یک سبد درسهای نرمافزاری و مورد نیاز برای کدنویسی پیشرفته. این حق انتخاب به دانشجو ابتکار عمل میدهد تا بتواند علوم کامپیوتر را با طعم دلخواه خود بخواند.
در سالهای سوم و چهارم علاوه بر دروس تخصصی اجباری دروس سبدها برداشته میشود و دانشجویی که در دو سال اول تقریبا حوزه مورد علاقه خود را یافته، در این دو سال تمرکز بیشتری روی دروس تخصصی زمینه مورد علاقه خود دارد.
تصمیم بگیر لعنتی!
همانطور که گفتیم، داشتن اختیار عمل بالا در برداشتن دروس متنوع باعث شده تا دانشآموخته علوم کامپیوتر با توجه به حوزهای که در دوران کارشناسی بر روی آن تمرکز داشته، بتواند در رشتهها و موضوعات بسیاری تحصیل خود را ادامه دهد که به اختصار به آنها اشاره میکنیم:
۱.علوم کامپیوتر نظری: اگر علاقه شما به موضوعات تئوری و پایه علوم کامپیوتر است و یا علاقه به حل مسائل خلاقانه دارید، این بخش به درد شما میخورد. موضوعاتی مانند الگوریتم، گراف، نظریه محاسبه، ترکیبیات، رمزنگاری، نظریه اطلاعات و ...
۲.علوم داده: پیشنیاز رشته علوم داده، دروس آماری و ریاضیات پایه است. این رشته نسبتا جدید در دانشکده ریاضی ارائه میشود و جزء رشتههای کاربردی به حساب میآید. البته دانشکده ریاضی شریف هنوز دانشجوی ارشد علوم داده نپذیرفته است.
۳.هوش مصنوعی: این رشته در دانشکده کامپیوتر ارائه میشود ولی بسیاری از دانشجویان از علومکامپیوتر وارد این رشته میشوند. دروس جبرخطی و ریاضیات پایه و همچنین دروس آماری و الگوریتم از پیشنیازهای این رشته هستند.
۴.مهندسی نرمافزار: با این که این رشته به طور مستقیم در ادامه رشتهی مهندسی نرمافزار در کارشناسی است، اما دانشجویان علوم کامپیوتر که به این حوزه علاقهمند هستند، میتوانند در ادامه به این رشته بروند با شرط آنکه دروسی مثل پایگاهداده، کامپایلر، مهندسی نرمافزار و سیستمعامل را گذرانده و تا حد خوبی به آنها مسلط باشند.
۵.علوم بینرشتهای: در سالهای اخیر به علت رابطه تنگاتنگ علوم کلاسیک به همدیگر بسیاری از این تعاریف منسوخ شدهاند و علوم جدیدی شکل گرفتهاند که اصطلاحا علوم بینرشتهای نام دارند. از معروفترین آنها بیوانفورماتیک و علوم شناختی است که در میان دانشمندان بسیار محبوب هستند. این رشتهها به دلیل بینرشتهای بودن در دانشکدههای مختلف ارائه میشوند ولی در آيندهی نزدیک دانشکدههایی با تمرکز بر همین موضوعات به وجود میآیند.
آخرش که چه؟
به دلیل پیشرفت سریع تکنولوژی در ایران بازار کار علوم کامپیوتر (که در دهه گذشته از کمکارترین رشتهها بود) بسیار بزرگ شده است. دانشجوی علوم کامپیوتر شریف میتواند در این حوزهها فعالیت کند:
۱.توسعه دهنده(developer): با این که این شغل در اصل مختص رشته مهندسی کامپیوتر است اما دانشجوی علوم کامپیوتر شریف حداقلهای مورد نیاز برای کار کردن به عنوان توسعهدهنده را خواهد داشت. نتیجه کار شما در این حوزه، اپلیکیشن، وبسایت یا زیرساخت خواهد بود. اگر علاقه به این بخش از کارها دارید، باید درسهای نرمافزاری بیشتری بردارید. تسلط بر برنامهنویسی شیءگرا و پروژه محور، داده ساختار، پایگاه داده، شبکه و ... به شما کمک زیادی خواهد کرد. از مزایای این بخش این است که اگر علاقه دارید زودتر وارد بازار کار شوید، میتوانید بعد از یکی دوسال از شروع دانشگاه کمکم کار خود را شروع کنید.
۲.دانشمند داده(Data scientist): شرکتهای بزرگی در کشور وجود دارند که نیاز مبرمی به تحلیل دادههای خود دارند. این شغل در آینده نزدیک به شدت مورد نیاز خواهد بود و تعداد افراد مناسب برای این کار بسیار محدود است. این حوزه هم نیاز به دانش ریاضی و آماری پیشرفته و هم نیاز به مهندسی نرمافزار و برنامهنویسی حرفهای دارد و دانشجوی علوم کامپیوتر با هر دوی این موضوعات تا حدی آشنایی دارد. نتیجه کار یک دانشمند داده، تحلیل آماری، دادن راهبرد و روش انجام کار در شرکتها است.
۳. متخصص یادگیری ماشین: حوزه یادگیری ماشین از بزرگترین و مهمترین حوزههای علمی و فنی دنیاست، به طوری که یادگیری ماشین در هر حرفهای وارد میشود، تحول بزرگی ایجاد میکند؛ از حوزه سلامت گرفته تا موضوعات اقتصادی و بورس و حتی مسائل نظامی. تمرکز جدی اکثر شرکتهای بزرگ تکنولوژی روی این موضوع است و پیشرفت این حوزه بسیار زیاد. دانش ریاضی و الگوریتمی و همینطور توانایی برنامه نویسی دو پیشنیاز اصلی و حیاتی این حوزه هستند و دانشجوی علوم کامپیوتر میتواند نقشآفرینی جدی در این حوزه داشته باشد.
۴.تحقیق و توسعه(R & D): بسیاری از شرکتهای بزرگ برای حل مسائل خود تیمی به نام تحقیق و توسعه به وجود میآورند و پیشرفتهای تکنولوژیک آنها از این مسیر هموار میشود. حوزههای تحلیل ترافیک و مسیریابی، حوزههای نظام بانکی و تشخیص جرم، امنیت شبکه و بسیاری از بخشهای دیگر صنعتی نیاز به متخصصان تحقیق و توسعه علوم کامپیوتر دارند.
هرکسی را بهر کاری ساختند
در سالهای اخیر استقبال از رشته علوم کامپیوتر به شدت افزایش پیدا کرده، به طوری که این رشته در شریف در سال ۹۴ از نظر آخرین قبولی رشته هفتم یا هشتم بود ولی در سال ۹۷ رشته علوم کامپیوتر پس از مهندسی کامپیوتر و مهندسی برق سومین رشتهایست که بیشترین متقاضی را دارد. به نظر میرسد همانطور که در دهههای قبل رشتههای عمران و مکانیک و برق به عنوان رشته برتر مطرح میشد و دلیل اصلی آن بازار کار مناسب آنها بود، در این سالها به علت بازار کار نسبتا هموار حوزه تکنولوژی از رشتههای کامپیوتر استقبال زیادی میشود. این رویه مانند گذشته باعث آسیب به دانشآموزانی میشود که بدون بررسی و یافتن رشته مناسب خود رشتهی معروف (ترند) را انتخاب میکند. علاوه بر آن چون این بازار کار بیشتر به سمت کارهایی از جنس مهندسی کامپیوتر است، باعث افت کیفیت علوم تئوری در حوزه علوم کامپیوتر خواهد شد. بنابراین اگر شما جزء افرادی هستید که به کار برنامهنویسی و توسعه نرمافزار در شرکتهای کامپیوتری علاقهمندید، توصیه میشود اولویتتان رشته مهندسی کامپیوتر در دانشگاههای دیگر باشد.
دانشجوی علوم کامپیوتر باید کسی باشد که میتواند یک مسئله کامپیوتری را حل کند. این یعنی باید بتواند به صورت بلندمدت روی یک موضوع تمرکز کند، تحقیق و مطالعه بلد باشد و خلاقیت و صبر کافی را داشته باشد.
مطلبی دیگر از این انتشارات
اصول برنامه نویسی خوب - خودت رو تکرار نکن! DRY
مطلبی دیگر از این انتشارات
۱۰ فونت مخصوص برنامه نویسی
مطلبی دیگر از این انتشارات
زامارین چیست؟