روزنامه شریف/ اخبار راستکی دانشگاه صنعتی شریف را از روزنامه دنبال کنید.
برنامهای بنویسید که ...
بازار فعلا ما را میخواهد
گفتوگو با دکتر بیات سرمدی، عضو هیئت علمی دانشکده مهندسی کامپیوتر
روزنامه: چرا رشته مهندسی کامپیوتر به عنوان یک رشته دانشگاهی وجود دارد؟ مهندسی کامپیوتر چه نیازی را از جامعه برطرف میکند؟ چرا در سالهای اخیر اقبال عمومی به سمت این رشته افزایش پیدا کرده است؟
هر زمانی یک رشتههایی در جامعه پرطرفدار میشود، یک زمان عمران پرطرفدار بود، یک زمان مکانیک، یک زمان برق و الآن هم کامپیوتر که بیشتر رتبههای خوب کنکور و بچههای المپیادی را جذب میکند. قسمتی از این اقبال به سمت کامپیوتر به دلیل سیگنال بازار است که نیازش به متخصصین رشتههای خاص را به جامعه اعلام میکند. عواملی مثل اپلای و ادامه تحصیل در خارج از کشور هم تأثیر خودش را دارد.
الآن در ایران بیزینسهای معروف به فناوری اطلاعات مربوط میشود. از طرف دیگر راهاندازی کسبوکار در این حوزه تجهیزات و زیرساختهای عجیب و غریبی نیاز ندارد و امکانات لازم برای آن برخلاف برخی رشتهها در داخل کشور در دسترس است. خلاصه در نظر مردم جامعه بازارش سهلالوصول است و خیلی وقتها بحثهای مدیریتی، بازاریابی، لجستیک و ... پشت این بیزینسهای اینترنتی دیده نمیشود ولی به هر حال ارزش این شرکتها، شهرتشان و تعداد مخاطبان و مشتریشان سیگنالی است که از طرف بازار به جامعه ارسال میشود.
این وضعیت بازار به معنای ارزشمند نبودن رشتههایی مثل برق، مکانیک، مواد، مهندسی شیمی و ... نیست. اتفاقا خیلی از کارهای استراتژیک و مهم برای کشورها با استفاده از تخصص این رشتهها انجام میشود، یعنی برخی از این کسبوکارهای اینترنتی نباشد، اتفاق خاصی رخ نمیدهد، هرچند تا حدی در عدالت اجتماعی تأثیر دارند ولی مثلا صنایع نظامی کشور کاملا به رشتههای دیگر وابسته است. البته در کشوری مثل ایران با این منابع و ذخایر طبیعی رشتههای دیگری مثل مهندسی شیمی باید مورد اقبال بچهها باشد ولی متأسفانه اینطور نیست.
در مورد نیاز جامعه به مهندسی کامپیوتر دو دسته نیاز را میتوان مطرح کرد. دسته اول نیازهای ضروری هستند که کشور به آنها نیاز دارد و زیرساختهای حیاتی محسوب میشود؛ مثل شبکه ملی اطلاعات یا دولت الکترونیک که در همه جای دنیا پیگیری میشود و لازمه استقلال کشور و برقراری آزادی و عدالت اجتماعی است. دسته دیگر نیازها هم از جنس نیازهای رفاهی است و در حوزه فناوری اطلاعات کسبوکارهای زیادی برای رفع این نیازهای رفاهی ایجاده شده و به درآمدهای زیادی هم دست پیدا کردهاند که نمونههای فراوانی از آنها را شما در جامعه میبینید.
روزنامه: دانشآموزی که میخواهد مهندسی کامپیوتر را به عنوان رشته تحصیلی در دانشگاه انتخاب کند، چه ویژگی و شخصیتی داشته باشد؟
مهندسی کامپیوتر به هرحال یک رشته مهندسی است. البته مهندسی کامپیوتر یک طیف گسترده دارد؛ از سختافزار که به مهندسی برق و گرایش دیجیتال آن نزدیک است تا نرمافزار که بیشتر برنامهنویسی و توسعه نرمافزار است و علوم کامپیوتر که بیشتر رنگ نظری و علوم پایه و ریاضی دارد. طبعا ریاضی در سراسر این طیف مهم بوده ولی در بعضی جاها پررنگتر و در بعضی جاها کمرنگتر است. برخی علوم دیگر مثل شیمی نقش کمتری در این رشته دارد. البته با پدید آمدن زمینههای بینرشتهای مثل بیوانفورماتیک علوم شیمی، زیستشناسی، پزشکی و حتی علوم انسانی هم وارد بازی میشوند. علاقه هم اهمیت زیادی در موفقیت در کامپیوتر دارد، به هرحال بچهها معمولا با برنامهنویسی آشنا هستند و احتمالا علایق خود را میشناسند.
روزنامه: آینده تحصیلی و پژوهشی مهندسی کامپیوتر چگونه است؟ در تحصیلات تکمیلی این رشته چه گرایشهایی دارد؟
دانشکده مهندسی کامپیوتر در حال حاضر در مقطع کارشناسی گرایش ندارد ولی در مقطع ارشد گرایشهای معماری کامپیوتر (سختافزار)، نرمافزار، هوش مصنوعی، رایانش امن، شبکه، الگوریتم محاسبات و بیوانفورماتیک برای ادامه تحصیل وجود دارد. درسهای کارشناسی هم به گونهای است که بچهها دانش پایه مهندسی کامپیوتر را به خوبی فراگیرند و با گذراندن درسهای اجباری و اختیاری با گرایشهای مختلف آشنا شده و آینده تحصیلی خود را با توجه به علاقه و مهارتها و توانایی خود انتخاب کنند. در هر گرایش نیز آزمایشگاهها و گروههای پژوهشی فعالی در دانشکده کامپیوتر فعالاند و پژوهشهای لبه تکنولوژی و مهم و استراتژیکی برای کشور انجام میدهند.
آینده در مشت ماست
فکر میکنم همه ما بدانیم که کامپیوتر چیست؟ و مهمتر از آن چگونه مورد استفاده قرار میگیرد؟ عظیمترین شرکتهای دنیای امروز ما، شرکتهای ITمثل اپل، آمازون، مایکروسافت و آلفابت(گوگل) هستند که بازه وسیعی از خدمات را ارائه میدهند؛ از تولید دستگاههای الکترونیک تا ایجاد برنامهها و اپهای مختلف برای استفادههای تخصصی یا روزمره و اتصال اجزای مختلف دنیای امروز به وسیله اینترنت، شرکتهای IT نقش مهمی را در زندگی ما ایفا میکنند. در ایران نیز این شرکتها و کسبوکارها کم نیستند: کافهبازار، اسنپ و دیجیکالا که تا ۱۵ سال پیش حتی وجود هم نداشتند اما اکنون شاید هر روز با یکی از آنها سروکار داشته باشیم. کامپیوترها دنیای امروز ما را در مشت خود گرفتهاند و به برقراری ارتباطات بین ما کمک میکنند.
در سالهای اخیر رشد تمدن بشر و رشد مسائل کامپیوتر بیش از پیش به هم گره خوردهاند. اینترنت به یکی از پایههای اساسی توسعه تبدیل شده است، هم توسعه صنعتی و هم توسعه اجتماعی. ایدههایی مثل خانه هوشمند یا ماشین خودران همین الان هم به واقعیت پیوستهاند و شاید با یک شبکه یکپارچه که در کنترل زندگی روزمره به ما کمک میکند -یا حتی زندگی روزمره ما را کنترل میکند- فاصلهای نداشته باشیم. شرکتهای بزرگی مانند گوگل و فیسبوک تقریبا هر اطلاعاتی را که فکرش را بکنید از ما دارند، اطلاعاتی که بعضا خودمان نداریم و میتوانند با تحلیل آن، متناسب با خصوصیات و رفتارهای ما مشکلات و نیازهایمان را حدس بزنند یا حتی جهتدهیشان کنند. در دنیای توسعهیافته آینده، که شگفتآور و در عین حال ترسناک است، کامپیوترها همه چیز را کنترل میکنند و مهندسی کامپیوتر رشتهای است که سنگ بنای این دنیا را طبقه به طبقه بالا میبرد.
مهندسی کامپیوتر به حل مسائل روز در حوزههای مختلف میپردازد؛ از مسائلی که الان پیش پا افتاده به نظر میرسند -مثل ارتباط تصویری با فردی در آن سر دنیا- تا چالشهایی که حتی فکر کردن به آنها باعث سرگیجه میشود -مثل خلق آثار هنری یا افزایش فعالیت مفید و بازدهی انسان- میتوانند ذیل مهندسی کامپیوتر تعریف شوند. مسائلی مثل اینترنت اشیاء، رباتهای هوشمند، سیستمهای توزیعشده، رمزارزها، یادگیری ماشین و ... همه حوزههایی از مهندسی و علوم کامپیوتر هستند که با توجه به نیازها و مسائل دنیای واقعی رشد کردهاند و به بخشهایی جدانشدنی از دنیای ما تبدیل شدهاند. در نهایت اگر بخواهم خلاصه کنم، مهندسی کامپیوتر علم بهبود و توسعه نرمافزارها و سختافزارها و استفاده از آنها برای تسهیل فعالیتهاست.
همه چیز برای شما مهیاست
ترم اول شریف برای بسیاری از بچهها ترسناک است، دانشجوی هر رشتهای که باشند؛ جنس درسهای دانشگاه با درسهای دبیرستان متفاوت است و کم نیستند افرادی که علاقهای به فضای رقابتی و درسی شریف نداشته باشند. در دانشکده کامپیوتر این معضل جدیتر است؛ اکثر دانشجویان رتبههای زیر ۱۵۰ کنکور هستند یا المپیادیهایی هستند که بخش قابل توجهی از مطالب این رشته را در دوران المپیاد مطالعه کردهاند و این امر ناخودآگاه تبدیل به رقابتی نه چندان جذاب -و نه چندان سازنده- در سالهای اخیر شده است. اما از ترم دو که یخ بچهها باز میشود، فضای رفاقتی دانشجویان بیشتر شده و اگر هم «رقابت» بینشان باشد، به شکلی سازندهتر خواهد بود و اینجاست که درسهای رشته کامپیوتر جدی میشوند. در ترم یک شما در درس مبانی برنامهنویسی با پایههای برنامهنویسی و برنامهسازی آشنا میشوید و این اصول اولیه را همراه با زبان C یا C++ میآموزید و در ترم دوم با اولین درس سنگین کارشناسی، برنامهسازی پیشرفته آشنا میشوید که برنامهنویسی اصولی و درست را به زبان برنامهنویسی Javaآموزش میدهد. پروژه این درس اولین پروژه جدی شماست و تا سالها در خاطراتتان میماند. درس مهم دیگر شما درترم دوم مدارهای منطقی است که با زبانی ساده پایههای کار یک کامپیوتر را توضیح میدهد.
باقی دروس کارشناسی درسهای تخصصیتری در شاخههای مختلف مهندسی کامپیوتر هستند؛ مباحثی مثل الگوریتمها، سیستمهای عامل و نحوه کارکردشان، شبکههای کامپیوتری، آمار و احتمال و حتی مباحثی مثل مدیریت پروژههای نرمافزاری. در درسی مثل معماری کامپیوتر میآموزید که دقیقا چه اتفاقی درون یک کامپیوتر رخ میدهد و رایانه شما چگونه درخواستهای شما را دریافت و پردازش میکند تا بتواند به یک خروجی مناسب برسد و در درس کامپایلر یاد میگیرید که چگونه این درخواستها به زبانی قابل فهم برای کامپیوتر تبدیل میشوند. حتی در درس ارائه مطالب علمی و فنی یاد میگیرید که چگونه یک مبحث را به درستی در یک کنفرانس ارائه دهید و چه نکاتی را در این ارائه رعایت کنید. دروس اختیاری این رشته نیز بسیار گستردهاند و میتوانید با مباحثی مثل برنامهنویسی موبایل، بیوانفورماتیک، اینترنت اشیاء، پردازش تصویر و… آشنا شوید. با این حال کارشناسی مهندسی کامپیوتر فقط به درسهای آن خلاصه نمیشود و شما با فضای کار هم آشنا میشوید.
بسیاری از بچهها از ترم دو که با اصول برنامهنویسی نسبتا آشنا هستند، وارد فضای کار میشوند. شرکتهای کامپیوتری کم نیستند و تعداد زیادی از این شرکتها برنامههای مختلفی برای تربیت کارآموز برگزار میکنند و به دلیل رابطه خوبی که با شریفیها دارند، دانشجوهای شریف را به راحتی پذیرش میکنند. بسیاری از شریفیها نیز در دوران کارشناسی مسیر استارتآپ را در پیش گرفتهاند که تعدادی از آنها به موفقیتهای بزرگی هم رسیدهاند.
در کنار همه اینها، فضای دانشکده کامپیوتر شریف پر از فعالیت فوق برنامه است. تعدادی از وسیعترین رویدادهای دانشجویی کشور در همین دانشکده برگزار میشود و دانشجوها از صفر تا صد، از کارهای فنی و طراحی سایت تا حمایت مالی و جذب اسپانسر، از چسباندن پوستر تا برندسازی همه را خود انجام میدهند و نکات مختلفی را از فضای اجرا میآموزند.
آلیس در سرزمین عجایب
آینده تحصیلی دانشجوهای کامپیوتر معمولا در فعالیتهای پژوهشی است. در علوم کامپیوتر همچنان حوزههایی بکر و دستنخورده وجود دارد که چالشهای پژوهشی و مسائل حلنشده خاص خود را دارند؛ حوزههایی مثل هوشمندسازی، یادگیری ماشین، یادگیری عمیق و سیستمهای پیچیده از مسائل و ترندهای روز کامپیوتریها هستند. دانشکده کامپیوتر شریف هم در بعضی از این حوزهها استادان خوبی دارد که در آزمایشگاههای پژوهشی با دانشجوها به دنبال حل این مسائل هستند. سازمانهایی مثل پژوهشگاه دانشهای بنیادی(IPM) یا پژوهشکده رویان هم در زمینه پژوهش حرفهایی برای گفتن دارند.
مسیر دیگر تحصیل برای دانشجوهای شریف، مسیر تحصیل در خارج از کشور است. بچههای دانشکده با پدیده «اینترنشیپ» غریبه نیستند؛ کم نیستند دانشجوهای کارشناسی که تابستان خود را به فعالیت پژوهشی در کنار استادهایی در دانشگاههای خارج از کشور بگذرانند و با فرهنگ تحصیل و پژوهش در دانشگاههای مختلف آشنا شوند. «اپلای» یا پذیرش گرفتن از دانشگاههای خارج از کشور نیز آینده متداولی برای دانشجوی کارشناسی کامپیوتر است. دانشکده کامپیوتر شریف یکی از برترین دانشکدههای کشور است و بسیاری از استادهای این دانشکده در دانشگاههای خارج از کشور تحصیل کردهاند یا با آنها ارتباط دارند و هر سال بیش از نصف فارغالتحصیلهای کارشناسی سعی میکنند مسیر تحصیل را در دانشگاههای خارج از کشور ادامه دهند. بسیاری از دانشجوهای قدیمی ایرانی هماکنون در شرکتهای ITخارجی مشغول به کارند یا در دانشکدههای مهندسی و علوم کامپیوتر استادند و گهگداری در سمینارها یا برنامههای پژوهشی ایران نیز شرکت میکنند و ارتباطات خود با بچهها را حفظ کردهاند.
اما آینده تحصیلی کامپیوتریها محدود به رشتههای کامپیوتری نیست. علم کامپیوتر در دنیای امروز نسبتا جدید است و بسیاری از علوم سنتی هنوز نتوانستهاند به درستی از ابزارهای کامپیوتری برای پیشبرد اهداف و پیشرفت علم خود استفاده کنند. کم نیستند فارغالتحصیلان کامپیوتری که با دیدی از حل مسائل به وسیله رایانه که به دست آوردهاند، در رشتههای دیگری به ادامه تحصیل میپردازند؛ رشتههایی که مسائلشان با کامپیوتر حلشدنیتر میشود و به شهود و ابزارهای حل مسئله یک کامپیوتری نیازمندند.
کجا باید برم؟
تقریبا هر شرکت بزرگی به یک تیم ITنیاز دارد. از کارهایی مثل سایت و اپ نوشتن تا سیستمهای داخلی شرکت هر کدام ممکن است به مهندسهای کامپیوتر نیاز داشته باشد. همه کامپیوتریها برنامهنویس و دولوپر یا توسعهدهنده نمیشوند ولی مسیر برای دولوپرها نسبتا باز است و گزینههای زیادی برای کار دارند و میتوانند به راحتی کسب درآمد کنند. با این حال کار در شرکتهای بزرگی که در حوزه کامپیوتر فعالیت میکنند با بقیه شرکتها یک تفاوت مهم دارد؛ جای آموزش، رشد و پیشرفت در این شرکتها بازتر است و جنس کارها فقط پیادهسازی راه حلهای دیگران نیست بلکه حل مسائل پیچیده به وسیله ابزارهای جدید است. گاهی چنین شرکتهایی باید سوالاتی را حل کنند که تنه به تنه پژوهشهای دانشگاهی میزند و گاهی باید ابزارهایی را پیاده کنند که تا سالهای سال مورد استفاده بقیه قرار میگیرد.
از طرفی، در شرکتهای حوزه ITفضاهای مدیریتی هم روی خوشی به کامپیوتریها نشان میدهد. کامپیوتر بخش زیادی از دنیای ما را گرفته و مرز بین علم «سنتی» و علم «مدرن» محسوب میشود و این باعث شده برای بهینهسازی مسائل مدیریت در تیمهای کوچک و بزرگ این صنعت فعالیتهایی جدی صورت بگیرد. دانشجوهای مهندسی نرمافزار در دوره کارشناسی با تکنیکهای مدیریت پروژه و الگوهای مدیریتی آشنا میشوند و در فضای کار این ساختارها را پیاده میکنند.
کیبورد به دستها
خیلی از کامپیوتریها افرادی «خوره کامپیوتر» هستند که به دلایل مختلف و غیر مرتبط بخش اعظم وقت خود را پای کیبورد میگذرانند. از گیکهایی که در فامیل خود برای تعمیر موبایل و نصب ویندوز به آنها مراجعه میکنید -و البته از این به بعد برای نصب لینوکس به آنها مراجعه خواهید کرد- تا گیمرهایی که از تکتک ساعات تابستان بعد از کنکور خود به بهینهترین نحو استفاده کردهاند، به کامپیوتر میآیند. خیلی از کامپیوتریها المپیادیهای سابق هستند که به حل مسائل ریاضی و الگوریتم علاقهمندند یا در مدارس خاص اصول برنامهنویسی را فراگرفتهاند و هستند افرادی که صرفا با توجه به چشمانداز مثبتی که آینده این رشته دارند، به آن میآیند. البته با توجه به رویکردی که این افراد در دانشکده و دانشگاه پیش میگیرند، بار دیگر مسیرشان تفاوت میکند.
کامپیوتریها افرادی افراطکارند، خیلیهایشان بسیار درسخوان و نمرهدوست هستند که به هیچ بیست و پنج صدمی رحم نمیکنند، عدهای دیگر آدمهایی بسیار صنعتی -و سنتی- هستند که از همان ابتدای کارشناسی -و حتی قبل آن- به کار در شرکتهای بزرگ حوزه کامپیوتر مشغولند و دیگران را نیز به این فعالیت تشویق میکنند. گروهی دیگر از همان ترمهای اول به فعالیتهای پژوهشی و کار در آزمایشگاه استادها روی خوش نشان میدهند و عدهای فعالیتهای اجرایی را ارج مینهند و در هر رویدادی دستی دارند. طبیعتا عدهای نیز هستند که کلا راحت گرفته و به انواع فعالیتهای دیگر در خارج از دانشکده میپردازند و از دوران دانشجویی خود به نحو احسن(!) استفاده میکنند.
مطلبی دیگر از این انتشارات
نگاهی به اصل KISS در برنامه نویسی!
مطلبی دیگر از این انتشارات
چگونه uuid را مدل ایجاد کنیم
مطلبی دیگر از این انتشارات
ایجاد الگوی Single Tone در زبان ++C