سلام، هدفم از این مطلب راهنمایی کساییه که مهندسی کامپیوتر (و احتمالا تا درصد زیادی علوم کامپیوتر) قبول شدن و میخوان خودشون رو برای دانشگاه آماده کنند. البته همچنین ممکن است برای دید پیدا کردن از محیط دانشگاه و رشته کامپیوتر هم مفید باشد.
بدون مقدمه چینی بیشتر میرم سراغ چند تا نکته که بهتون کمک خواهد کرد:
شاید کلیشه به نظر بیاد ولی نترسید دیگه، میلیونها آدم تو ایران وارد دانشگاه شدن و اتفاق عجیبی هم براشون نیافتاده. اگر دانشگاه سراسری باشید که احتمالا میرید دانشکده کامپیوتر یا برق و کامپیوتر بسته به دانشگاهتون و برنامه کلاسی همراه با شماره کلاس زدن و میرید سر کلاس. اگر دانشگاه آزاد باشید فکر کنم انتخاب واحد هم خواهید داشت.
به این نکته توجه داشته باشید که اگر مثلا ۷۰−۱۰۰ نفر ورودی هستید احتمالا به ۲ دسته شماره دانشجویی زوج و فرد یا به چند گروه تقسیم میشید چون معمولا کلاس ها ۱۰۰ نفره نیست.
انگار دارم در مورد حوزه آزمون حرف میزنم ولی خب اگر از قبل بدونید کدوم دانشکده میخواید برید و به کدوم در دانشگاه نزدیک تره، کلی پیاده روی (و تو بعضی دانشگاهها کلی سربالایی) صرفه جویی میکنید.
البته این نکته رو هم بدونید که بعضی دانشگاهها همهی دانشکدههاشون یه محل واحده ولی عمده دانشگاهها دانشکدههاشون توی نقاط مختلف شهره. (از ساختمون های فرعی با عنوان پردیس هم یاد میشه) مثلا دانشگاه امیرکبیر همه دانشکدههاش توی خیابون حافظه ولی دانشگاه تهران ساختمان اصلیش توی انقلابه ولی دانشکدههای فنیش توی امیرآباده (که باز به نسبت نزدیکه) و مثلا پردیس منابع طبیعیش توی کرجه. دانشگاه بهشتی ساختمان اصلیش توی ولنجکه و دانشکدههای فنیش به جز کامپیوتر توی پردیس عباسپوره. دانشگاه خواجه نصیر (تا این لحظه) تو کل شهر پخشه مثلا دانشکده برق و کامپیوتر: سید خندان، مکانیک و مواد و صنایع: ونک، علوم: جلفا و .. .
حالا باید بدونید کدوم پردیس باید برید و باقی داستان... (همیشه داشتن یه نفر تو اون دانشگاه که ازش سوال بپرسید خوبه.)
خیلی از دانشگاهها تمرینهای برنامهنویسی شون رو توی quera.ir قرار میدن. (استثنا زیاد داره البته مثل دانشگاه تهران و خواجهنصیر)
داستان به این صورته که هر استاد و درسی (مثلا درسی که ترم ۱ دارید، مبانی کامپیوتر و برنامه نویسی) یه کلاس توی quera تشکیل میده و اونجا سری به سری تمارین رو قرار میده و شما یه برنامه مینویسید برای جواب دادن به هر تمرین و برنامهتون به صورت خودکار داوری میشه و بهتون نتیجهش نشون داده میشه.
نکتهای که شاید فهمیدنش براتون گرون تموم بشه اینه که سیستم چک کردن تقلب هم داره و کدهاتون به صورت خودکار بررسی میشن پس فکر تقلب رو نکنید.
البته که میتونید هر موقع نیاز بود اکانت بسازید ولی داشتن اکانت و آشنا بودن به محیط سایت و سابمیت کردن چند تا کد (توی قسمتهای عمومیش) میتونه شما رو جلو بندازه و از استرستون کم کنه.
اگر برنامهنویسی بلدید و اومدید رشته کامپیوتر که خیلی کار خوبی کردید و این پاراگراف رو رها کنید فقط لطفا جلوی بقیه ادای بلد بودن همهچیز رو در نیارید.
چیزی که توی درسهای ترم۱ تون جدیده درس برنامهنویسی هست که درس جذابیه و میخواد بهتون برنامهنویسی رو توی یک ترم یاد بده، به نظر من یاد گرفتن برنامهنویسی یه زمانی احتیاج داره که آدم بفهمه با کامپیوترش چند چنده، دقیقا چه اتفاقی میافته، یکم بازی کنه تا دستش بیاد که چجوری میشه که کامپیوتر برنامههای ما رو اجرا میکنه، ببینید صحبت از زبون خاصی نمیکنم ولی میگم که اصول اولیه برنامهنویسی رو بلد باشید. (احتمالا hello world و if و انواع loop رو تمرین کنید به اندازه کافی جلو می افتید.)
اصلا هم نگران نباشید که شما مثلا توی خونه پایتون یاد گرفتید تو دانشگاه بهتون سیپلاسپلاس یاد میدن یا برعکس، بین زبونهایی که آموزشش توی اینترنت هست یکی رو انتحاب کنید و یکم برید جلو.
اگر بخوام زبان برنامه نویسی برای شروع پیشنهاد بدم انتخاب هام به c,c++و python محدود میشه. البته انتخاب زبان کاملا سلیقهایه و خودم با پاسکال شروع کردم و اگرچه به نظرم خیلی زبون خوبیه ولی به دلیل کاربرد نداشتن یادگیریش رو پیشنهاد نمیکنم.
در مورد منابع شروع هم توی youtube تا دلتون بخواد آموزش هست ولی اگر با آموزش متنی راحت ترید خودم با آموزش python سکانآکادمی خیلی ارتباط برقرار کردم. (البته بازم خیلی منبع زیاده خودتون بهتر میدونید.)
برای فهمیدن تفاوت کامپایلر و مفسر خوندن این مطلب هم توصیه میشود.
همونطور که گفتم تو درس مبانیبرنامه نویسی(و کلی از درسای ترمای آینده) احتیاج به برنامهنویسی و به صورت ابتدایی تر، احتیاج به کامپیوتر دارید. (منصفانه نگاه کنیم منطقیه، اومدیم رشته کامپیوتر خب به کامپیوتر احتیاج داریم دیگه؟)
به صورت تئوری دانشگاه دولتی باید هرچی شما نیاز دارید رو در اختیارتون قرار بده ولی خب تقریبا نباید منتظر چیزی باشید، کامپیوترهای سایتها به طرز ناراحتکنندهای قدیمی و خرابن (کامپیوترهایی که من دیدم رو میگم البته ولی چیز عمومی ایه). اگر خوابگاهی هستید احتمالا کامپیوترهای خوابگاه از اون هم نا امید کننده تر باشن اگر کلا چیزی وجود داشته باشه...
پس احتیاج به کامپیوتر شخصی دارید، ولی پیشنهاد اکید من داشتن لپتاپه! لپتاپ رو به چند دلیل نسبت به کامپیوتر ثابت اولویت بدید:
۱− توی خیلی از کلاسای آینده احتیاج به کامپیوتر دارید، بعضی استادا توی خود کلاس و بعضا توی کلاس تدریسیارها احتیاج به لپتاپ دارید.
۲−تو زمان بین کلاسها میخواید تکلیف انجام بدید و تکلیفهاتون کامپیوتریه.
۳−میخواید از یه ترمبالایی (مثلا تدریس یار) سوال بپرسید و خیلی وقتا آیدی یا ایمیلشون سخت به دست میاد ولی خودشون راحتتر در دسترس هستن، اگر لپتاپ داشته باشید راحت میتونید سوالتون رو بپرسید ولی اگه بخواید براش برنامهتون رو بفرستید حسابی اذیت میشید.
۴− برای تحویل پروژه احتیاج به لپتاپ دارید. (البته میتونید قرض بگیرید موقتی ولی بعید می دونم تو تلاش اول موفق بشید پروژهتون رو تنظیم کنید رو لپتاپ یه نفر دیگه کار کنه..)
ولی در نهایت: اگر تازگی کامپیوتر شخصی (PC) خریدید یا قصد نداریدم هزینه کنید و یه دستگاه دیگه بخرید، باید بگم اگه دوبرابر بقیه تلاش کنید میتونید سال اول رو بدون لپتاپ (با قرض لپتاپ از دوست و آشنا برای تحویل پروژه) و فقط یه کامپیوتر شخصی بگذرونید ولی واقعا کار سختیه و اصلا توصیه نمیشه. (دقیقا کاریه که من کردم.)
در مورد مشخصات، خیلی نسخه پیچیدن کار سختیه، بیاید از خیلی قدیما شروع کنیم، استانداردسازی زبان سیپلاسپلاس مربوط به سال ۱۹۹۸ هست و پایتون نسخه۲ سال 2000 عرضه شده پس با سختافزار های قدیمی و خیلی ضعیفتر (تا یادم نرفته در مورد قانون مور هم بخونید) اون موقع هم باید خوب کار کنن، ما هم که میخوایم برنامه بنویسیم پس نباید مشکلی باشه؟ خب بله سخت افزار هرقدر قدیمی که پیدا کنید کد این زبونها رو اجرا میکنه ولی چند تا قضیه هست:
۱- داستان فقط کد نوشتن نیست، امروز شما احتیاج دارید فقط کد بزنید، فردا به یه سیستم احتیاج دارید براتون یونیت تست انجام بده، یه روز احتیاج دارید دیتابیس و وب سرویس بیارید بالا و تست کنید، پس احتیاج به سخت افزار بهتری دارید.
۲− همیشه که قرار نیست با سیپلاسپلاس و پایتون کد بزنید، یه روز اگر بخواید اندروید کد بزنید باید سیستمتون خیلی قوی باشه تا بتونید کار کنید.
۳− برنامه نویسهای حرفهای از محیط توسعه نرمافزار (ide) استفاده میکنن که بهشون توی برنامهنویسی کمک می کنه (تقریبا به جز من همه استفاده می کنن، واقعا هم خوب و به درد بخوره) و سیستم قویای رو احتیاج داره.
پس فهمیدیم سیستم حداقلی که فقط برنامهها رو اجرا کنه جوابگوی نیاز ما نیست و یه سیستم بهتر میخوایم. نظر شخصی من رو بخواید اگر حداقل سیستم مورد نیاز برای اندروید استودیو رو نگاه کنید سیستم حداقلی و کارراه بندازی باشه (اگر کمی هم صبور باشید) ولی اگر بودجهتون بیشتره این مشخصات هم به نظر خوب میاد:
رم سیستم بالای ۸ (خود ۸ نه، هرچقدر بالاتر پیدا کردید مثلا ۱۲ یا ۱۶) بالاتر از ۱۶ هم امروز اتلاف سرمایهست.
سیپییو: بسته به نسلی که خرید میکنید داره ولی به نظرم نسل حداقل ۶ و اینتل i5 یا i7.
کارت گرافیک: اول روشن کنم که گیگابایت معیار خوبی برای سنجش قدرت کارت گرافیک نیست، باید مشخصات کاملش رو ذکر کنید، نکته دیگه اینکه برای برنامهنویسی (و ۹۹ درصد چیزایی که توی دوره لیسانس یاد میگیرید ) نیازی به کارت گرافیک حرفهای ندارید و هر حداقلی که لپتاپها دارن کفایت می کنه ولی اگر درس گرافیک بردارید یا کارهای هوش مصنوعی و یادگیری ماشین بخواید انجام بدید به کارت گرافیک حرفهای تر احتیاج پیدا میکنید.(بازم تاکید کنم احتمالا توی دوره لیسانس نیازی ندارید)
هارد دیسک: کلا بسته به نیاز که چقدر فیلم و بازی نگهداری میکنید ولی به نظرم ۲۰۰ گیگابایت هم کافی باشه برای کل داستانها. البته که اگر بودجه اجازه میده ssd توی اولویته چون سریعتره و در مقابل حرکت و تکان مقاوم(تر)ه وگرنه hdd هم پاسخگوی نیازها هست.
وزن: البته که مهمه، در کارایی لپتاپ شاید موثر نباشه ولی به نظرم از همه فاکتور های دیگه مهمتره چون عملا این لپتاپ به مدت ۴ سال توی کولهپشتیتون جای ثابت داره پس بهتره که سبک باشه، به نظرم اگر زیر ۲ کیلوگرم بتونید پیدا کنید که برد کردید.
اسپیکر، نور پسزمینه، حسگر اثر انگشت،مانیتور: به نظرم هیچ کدوم اهمیتی ندارن فقط مانیتور چشمها رو اذیت نکنه همین وگرنه رزولوشن و نرخ تازهسازی تصویر (refresh rate) اهمیتی توی برنامهنویسی ندارن. البته اگر توی روشنایی آفتاب هم بتونید ازش استفاده کنید نقطه مثبت محسوب میشه ولی اجباری نیست.
کیبرد: در کنار وزن جزو فاکتورهای مهمیه که متاسفانه زیاد بهش توجه نمیشه، در طول کار با لپتاپ مهمترین تماس شما غیر از چشم، دستهاتون روی کیبرد (و بعدم تاچپده) و مهمه که راحت باشید و حس خوبی از تایپ باهاش بگیرید.
با فرض اینکه لپتاپ خریدید یا لپتاپ قرض گرفتید یا کامپیوتر داشتید یا هرچیزی بالاخره احتیاج به یه محیطی دارید که بتونید توش برنامه بنویسید و اجرا کنید.
اول به یک ادیتور و به کامپایلر (یا مفسر) نیاز دارید، در مورد ادیتور گزینههای خوب vs code و atom و notepad++ هستند که یکی را انتخاب کنید و دانلود کنید.
برای کامپایلر و مفسر میتونید تو اینترنت سرچ کنید. ( برای سی و سیپلاسپلاس روی ویندوز این مطلب توصیه میشود)
بازم تاکید کنم شما احتیاج دارید در طول روز ساعتها پشت کیبرد باشید و تایپ کنید پس چه بهتر اگه تو تایپ خوب باشید و سریع، فکر نکنید تا حالا چطوری تایپ میکردم پس، تایپ ۱۰ انگشتی رو یاد بگیرید و تاثیرات شگفت انگیزش رو توی لذتبخشی برنامهنویسی رو متوجه بشید.
هم تایپ فارسی و هم تایپ انگلیسی توصیه میشود ولی اولویت با تایپ انگلیسیه، آموزش های یک سایت رو کامل دنبال کنید و جلو برید.
هرازگاهی هم تست بدید برای سنجش پیشرفت، اولش حدود ۲۰ کلمه بر دقیقه معمولی به نظر میرسه، با کمی تمرین به ۴۰−۵۰ میشه رسید و من دوستی دارم که در کمتر از یکسال از ۲۰ به ۱۲۰ رسید.
سایتهای خوب در این زمینه هم:
برای آموش انگلیسی من از typing.com استفاده کردم که متاسفانه فیلتر شد.
برای آموزش توصیه اصلیم همون typing.comه ولی آموزش سایت speedtypingonline.com هم خوب به نظر میرسه.
برای تست سرعت هم سایت های :
onlinetyping.org
10fastfingers.com (که اینم فیلتره متاسفانه)
خوب به نظر میرسند.
سایتهای خوب آموزش فارسی:(توحه کنید که اگر یه آموزشی پولی بود لزوما خوب نیستا، آموزشهای رایگان رو با اولویت بیشتر بررسی کنید):
utype.ir
typekadeh.com
typeo.top
پ.ن۱:لطفا از سایت فارسی برای آموزش تایپ انگلیسی و برعکس استفاده نکنید، نتیجه خوبی نمیده.
پ.ن۲: اگر دلیلی پیدا کردید که چرا سایت تایپ فیلتر میشه خوشحال میشم بهم بگید.
اگه تو محیط فعلیتون کسی از لینوکس حرفی نمیزنه احتمالا تو دانشکاه کامپیوتر که برید خیلیا از لینوکس حرف میزنن، به نظر خوبه قبل اینکه حرفاشون رو بهتون بقبولونن ببینید لینوکس در مورد چیه. (مثلا بدونید چرا اینکه من تو کل این متن گفتم لینوکس، در واقع صحیح نیست و گنو/لینوکس درسته)
پیشنهاد اکید من اینه که اگر خوشتون اومد، اوبونتو یا مینت رو روی ماشین مجازی (virtual box یا vmware) امتحان کنید چون ممکنه بار اولی که تازهکارید و نصب میکنید همهی هارد دیسکتون رو از دست بدید.
بدون هیچ گونه اغراقی توی برنامه نویسی، شما همیشه نیاز به سرچ دارید، چه مبحثی رو خوب نفهمیدید یا چیز بیشتری رو میخواید بدونید یا میخواید اطلاعات بیشتری بگیرید یا یه مشکل دارید که کسی بلد نیست رفعش کنه، در خیلی مواقع نیاز به سرچ دارید. حتما سرچ توی گوگل رو یاد بگیرید.(البته گوگل هم مثل تمام پیشنهاد های دیگه من اجباری نیست و جایگزین های خوبی مثل bing و duckduckgo داره که خود منم ازشون استفاده میکنم!)
مهمترین استفاده ما از گوگل سرچ کردن ارورها و مشکلاتمون تو برنامهنویسیه که اغلب به سایت stackoverflow.com ختم میشه.
توی این مطلب در مورد چند تا سایت حرف زدیم مثلا quera یا گوگل یا سایتهای تایپ حرف زدیم، یه سایت خیلی مهم برای هر برنامهنویس stackoverflow.comه که توش کلی سوال و جواب برنامهنویسی هست که احتمالا هر سوالی که داشته باشیم یا مشکلی رو که خورده باشیم رو یک نفر قبلا اونجا به اون مشکل خورده و یکی دیگه کمکش کرده حل کنه، خوبه سایتهای خوب مثل این رو بشناسید تا توی سرچ اگر چشمتون خورد به همچین سایتی بدونید جواب همین نزدیکیست.
سایت های خوب دیگه:
virgool.io (همین ویرگول خودمون هم خیلی سایت خوبیه ها بعله)
medium.com (نوشتههای خوب برنامهنویسهای دیگه رو میتونید پیدا کنید)
reddit.com
stackexchange.com
و سایتهایی که داکیومنتیشن زبان مورد استفادهتون رو داره خیلی مهمن.
یه سری سایت خیلی مهم هم در زندگی دانشجویی شما سامانههای دانشگاهتون هستند که در بدو ورود سعی کنید همشون رو پیدا کنید و بهشون سر بزنید مثلا id بسازید برای خودتون یا وضعیت غذای سلفتون رو بررسی کنید (و احتمالا قبل از همه در سامانه گلستان ثبت نام کنید)
ضمنا یادتون نره که دانشگاهتون اینترنت داره و غیر از پسورد مرسوم وایفای احتمالا لازمه در یکی از همین سامانهها اکانت بسازید.
از کنار این موضوع سرسری نگذرید، موضوع فقط درس اصلی شما ( برنامه نویسی ) نیست، یکی از مهم ترین درسهای ترم۱ درس ریاضی۱ هست که توش مباحث بسیار گسترده و متفاوتی تو تایم کم مطرح میشه خیلی از دانشجویان مجبور میشوند این درس را مجددا بگذرانند ( اصطلاحا پاس نمی شوند). نکته مهم اینکه خیلی از مباحث پیشنیاز ریاضی۱ مثل انتگرال از کتابهای نظام جدید حذف شدهاند و دانشجوی عزیز به خاطر عدم تدریس در دبیرستان، مباحث ریاضی۱ را متوجه نمیشود و خدایی نکرده باعث افتادن وی میشود بنابراین توصیه اکید من این است که کتاب ریاضی۱ (یا جزوه در مواردی) که اغلب کتاب توماس یا سیلورمن را معرفی میکنند را گرفته و یک دور بخوانید مخصوصا قسمتهای انتگرال چون این انتگرال تا آخر مهندسی با شماست...
تدریسیار یا TA یا teaching assistant یک نفر یا تعدادی آدم دلسوز :) ترمبالایی هستند که با کمک استاد سعی میکنن شما بهتر یاد بگیرید. صمنا تا جایی که اطلاع دارم وجود تدریسیار در دانشگاههای سراسری و رشتههای فنی مرسوم است.
آنها برخی از کارهای زیر را انجام میدهند: ۱− برگزاری کلاسهای حل تمرین (غیر از ساعات درس استاد) ۲− مشخص کردن تمرین ۳− جواب دادن به سوالهای درسی شما (تا جایی که وقتشان اجازه دهد) ۴− تصحیح تمرینها و کوییزهای شما ۵− برگزاری کارگاه جهت تفهیم بهتر مطالب
نکته: تدریسیار وظیفه ندارد با شما از طریق شبکههای اجتماعی در ارتباط باشد و راه ارتباطی رسمی شما سامانه درسافزار (و ایمیل) است.
در مورد قبل از سامانه درس افزار صحبت شد، سامانه درس افزار راه ارتباطی رسمی شما دانشجوی عزیز و تیم تدریس یار و استاد محترم است، از این سامانه برای تحویل گرفتن پروژه و تکلیف، گذاشتن فایل در اختیار شما و .. استفاده میشود. (فکر میکنم معادل بین المللی این سامانه piazza باشد.)
محیط توسعه نرمافزار یا IDE یک محیط بسیار خوب و کاربردی است که شما در آن کدهایتان را می نویسید و این محیط برای شما کدها را اجرا کرده و موقع نوشتن به شما پیشنهاد میدهد و ..
بر صورتی که از محیط توسعه استفاده نکنید (که برای دانشجویان ترم یکی توصیه میشود استفاده نکنید) باید با یک تکست ادیتور (مثل notepad++ یا gedit یا vs code یا atom ) کدها را نوشته و ذخیره کنید و با برنامه دیگری (کامپایلر یا مفسر) آن را اجرا کنید.
باز هم تکرار کنم تفاوت کامپایلر و مفسر (intrepreter) را اینجا بخوانید.
در گذشته مهندسی کامپیوتر مثل بقیه رشتهها گرایشهای محتلف سخت افزار و نرم افزار داشت ولی چند سالیست که همه گرایشها ادغام شده اند و همه دانشجویان با عنوان مهندس کامپویتر فارغ التحصیل میشوند، واحدهای غیر اصلی هم بسته به علاقه دانشجو قابل انتخاب هستند برای مثال می توان از ۳۰ واحد اختیاری، ۱۵ واحد مرتبط با نرم افزار، ۱۰ واحد مرتبط با سخت افزار و ۵ واحد مرتبط با فناوری اطلاعات برداشت.
خیلی از دانشگاهها کانالی تحت عنوان " خفت کتاب " دارند با این هدف که ترمبالاییها کتابهای استفاده شده و نشدهشون رو که دیگه استفاده نمیکنند به ترم پایینیها بدهند، معمولا دانشجویان اسم و عکس جلد کتابهای درخواستی یا ارسالی را برای ادمین ارسال میکنند و ادمین پیام را در کانال فوروارد میکند..
حتما سعی کنید پیگیر این کانالها باشید تا از خرید کتاب برای یک ترم اجتناب کنید و در صرف هزینه و وقت و البته محیط زیست صرفه جویی کنید.معمولا توی دانشگاه روز و ساعت مشخص میکنند و پرداخت هزینه ..معمولا توی دانشگاه روز و ساعت مشخص میکنند و پرداخت هزینه ..
خب تموم شد، موفق باشید:)
بازم اگر نکتهای به ذهنتون رسید که خوبه اضافه بشه یا سوال داشتید خوبه که بپرسید.