مهندسی کامپیوتر چیست؟ آشنایی با مهندسی کامپیوتر و علوم کامپیوتر

What is computer engineering

What is computer engineering


1. مهندسی کامپیوتر چیست؟

چیزی که در ایران به آن مهندسی کامپیوتر (Computer Engineering) گفته می شود حدودا مطابق با چیزی است که در دیگر کشورها به آن علوم کامپیوتر (Computer Science) گفته می شود. علوم کامپیوتر مطالعه کامپیوترها و سیستم های محاسباتی است. برخلاف مهندسان برق و کامپیوتر، دانشمندان کامپیوتر بیشتر با نرم افزارها و سیستم های نرم افزاری سر و کار دارند. این شامل تئوری، طراحی، توسعه و کاربرد آنها می شود. زمینه های اصلی تحصیل در علوم کامپیوتر شامل هوش مصنوعی، سیستم ها و شبکه های کامپیوتری، امنیت، سیستم های پایگاه داده، تعامل کامپیوتری انسانی، بینایی و گرافیک، تحلیل عددی، زبان های برنامه نویسی، مهندسی نرم افزار، بیوانفورماتیک و تئوری محاسبات است.

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

2. تفاوت مهندسی کامپیوتر و علوم کامپیوتر

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

3. گرایش ها و شاخه های مهندسی کامپیوتر و علوم کامپیوتر

به عنوان یک رشته، علوم کامپیوتر طیف وسیعی از موضوعات را از مطالعات نظری الگوریتم‌ها و محدودیت‌های محاسباتی تا مسائل عملی پیاده‌سازی سیستم‌های محاسباتی در سخت‌افزار و نرم‌افزار را در بر می‌گیرد. CSAB، که قبلاً هیئت تایید صلاحیت علوم محاسباتی نامیده می شد – که از نمایندگان انجمن ماشین های محاسباتی (ACM) و انجمن کامپیوتر IEEE (IEEE CS) تشکیل شده است – چهار حوزه را شناسایی می کند که آن ها را برای رشته کامپیوتر حیاتی می داند. علم: نظریه محاسبات، الگوریتم‌ها و ساختارهای داده، روش‌شناسی برنامه‌نویسی و زبان‌ها، و عناصر کامپیوتری و معماری. علاوه بر این چهار حوزه، CSAB همچنین زمینه هایی مانند مهندسی نرم افزار، هوش مصنوعی، شبکه های کامپیوتری و ارتباطات، سیستم های پایگاه داده، محاسبات موازی، محاسبات توزیع شده، تعامل انسان و کامپیوتر، گرافیک کامپیوتری، سیستم عامل ها و محاسبات عددی و نمادین را شناسایی می کند.

1.3 علوم کامپیوتر نظری – Theoretical computer science

علم کامپیوتر نظری از نظر ذاتی ریاضی و انتزاعی است، اما انگیزه خود را از محاسبات عملی و روزمره می گیرد. هدف آن درک ماهیت محاسبات و در نتیجه این درک، ارائه روش‌های کارآمدتر است. مباحث این حوزه بیشتر تئوری هستند اما این تئوری ها در مباحث فنی و عملیاتی بکار گرفته می شوند.

1.1.3 تئوری محاسبات – Theory of Computation

به گفته پیتر دنینگ، سوال اساسی زیربنای علم کامپیوتر این است: «چه چیزی می‌تواند خودکار شود؟» نظریه محاسبات بر پاسخ دادن به سؤالات اساسی در مورد آنچه که می‌توان محاسبه کرد و چه مقدار منابع برای انجام آن محاسبات مورد نیاز است متمرکز است. در تلاشی برای پاسخ به سوال اول، نظریه محاسباتی بررسی می کند که کدام مسائل محاسباتی در مدل های نظری محاسبات مختلف قابل حل هستند. سوال دوم توسط نظریه پیچیدگی محاسباتی مطرح می شود که هزینه های زمانی و مکانی مرتبط با رویکردهای مختلف برای حل بسیاری از مسائل محاسباتی را مطالعه می کند. P = NP معروف مسئله، یکی از مسائل جایزه هزاره، یک مسئله باز در نظریه محاسبات است.

تئوری محاسبات (Theory of Computation): تئوری پیچیدگی محاسبات (Computational Complexity Theory) – تئوری محاسبه پذیری (Computability Theory) – زبان صوری (Formal Language) – تئوری ماشین رفتار (Automata Theory) – ماشین رفتار سلولار (Cellular Automata) – تئوری مدارات منطقی (Logic Circuit Theory) – تئوری محاسبات کوانتومی (Quantum Computing Theory) – مدل های محاسباتی (Models of Computation)

2.1.3 تئوری اطلاعات و کدگذاری – Information and coding Theory

نظریه اطلاعات، که ارتباط نزدیکی با احتمالات و آمار دارد، با کمی سازی اطلاعات مرتبط است. این مورد توسط کلود شانون برای یافتن محدودیت‌های اساسی در عملیات پردازش سیگنال مانند فشرده‌سازی داده‌ها و ذخیره‌سازی و انتقال قابل اعتماد داده‌ها ایجاد شد. تئوری کدگذاری مطالعه خصوصیات کدها (سیستم هایی برای تبدیل اطلاعات از یک شکل به شکل دیگر) و تناسب آنها برای یک کاربرد خاص است. از کدها برای فشرده سازی داده ها، رمزنگاری، تشخیص و تصحیح خطا و اخیراً برای کدگذاری شبکه استفاده می شود. کدها به منظور طراحی روش های انتقال داده کارآمد و قابل اعتماد مورد مطالعه قرار می گیرند.

تئوری اطلاعات و کدگذاری (Information and Coding Theory): تئوری کدگذاری (Coding Theory) – ظرفیت کانال (Channel Capacity) – تئوری اطلاعات الگوریتمی (Algorithmic Information Theory) – تئوری تشخیص سیگنال (Signal Detection Theory)

3.1.3 ساختمان داده و طراحی الگوریتم – Data structures and algorithms

ساختار داده ها و الگوریتم ها مطالعه روش های محاسباتی رایج و کارایی محاسباتی آنها هستند.

ساختمان داده و طراحی الگوریتم (Data Structures and Algorithm Design): آنالیز الگوریتم ها (Analysis of Algorithms) – طراحی الگوریتم (Algorithm Design) – ساختمان داده (Data Structure) – بهینه سازی ترکیبی (Combinatorial Optimization) – هندسه محاسباتی (Computational ) – الگوریتم های تصادفی (Randomized Algorithms)

4.1.3 نظریه زبان های برنامه نویسی و روش های صوری – Programming language theory and formal methods

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

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

نظریه زبان های برنامه نویسی و روش های صوری (Programming language theory and formal methods): اثبات فرض خودکار (Automated Theorem Proving) – اعتبارسنجی صوری (Formal Verification) – زبان های برنامه نویسی (Programming languages) – طراحی کامپایلر (Compiler Design) – نظریه تایپ (Type Theory) – نحو صوری (Formal Semantic)

2.3 سیستم های کامپیوتری و پردازه های محاسباتی (Computer Systems and Computational Processes)

1.2.3 هوش مصنوعی – Artificial Intelligence

هدف از هوش مصنوعی (AI) ترکیب فرآیندهای هدف گرا مانند حل مسئله، تصمیم گیری، سازگاری محیطی، یادگیری و ارتباطات موجود در انسان و حیوانات است یا مورد نیاز است. تحقیقات هوش مصنوعی از مبدأ خود در سایبرنتیک و در کنفرانس دارتموث (1956) لزوماً بین رشته‌ای بوده است و از حوزه‌های تخصصی مانند ریاضیات کاربردی، منطق نمادین، نشانه‌شناسی، مهندسی برق، فلسفه ذهن، فیزیولوژی عصبی و اجتماعی استفاده می‌کند. هوش هوش مصنوعی در ذهن مردم با توسعه رباتیک مرتبط است، اما زمینه اصلی کاربرد عملی به عنوان یک جزء تعبیه شده در زمینه های توسعه نرم افزار بوده است که نیاز به درک محاسباتی دارد. نقطه شروع در اواخر دهه 1940، سوال آلن تورینگ “آیا کامپیوترها می توانند فکر کنند؟” بود، و این سوال عملاً بی پاسخ مانده است، اگرچه آزمون تورینگ هنوز برای ارزیابی خروجی کامپیوتر در مقیاس هوش انسانی استفاده می شود. اما اتوماسیون وظایف ارزیابی و پیش بینی به طور فزاینده ای به عنوان جایگزینی برای نظارت و مداخله انسانی در حوزه های برنامه های کامپیوتری شامل داده های پیچیده دنیای واقعی موفق بوده است.

هوش مصنوعی (Artificial Intelligence): واحد محاسباتی (Processing Unit) – میکرومعماری (Microarchitecture) – مولتی پراسسینگ (Multi-Processing) – طراحی پردازنده (Processor Design) – محاسبات همه منظوره (Ubiquitous Computing) – معماری سیستم (Systems Architecture) – سیستم عامل (Operating System) – ورودی خروجی (Input/Output) – سیستم های تعبیه شده (Embedded Systems) – محاسبات در لحظه (Real-time Computing) – وابستگی پذیری (Dependability) – مفسرها (Interpreter)

2.2.3 امنیت کامپیوتری (سایبری) و رمزنگاری – Computer security and cryptography

امنیت رایانه شاخه‌ای از فناوری رایانه است که هدف آن محافظت از اطلاعات در برابر دسترسی غیرمجاز، اختلال یا اصلاح و حفظ قابلیت دسترسی و استفاده از سیستم برای کاربران مورد نظر است.

رمزنگاری تاریخی هنر نوشتن و رمزگشایی پیام های مخفی است. رمزنگاری مدرن مطالعه علمی مشکلات مربوط به محاسبات توزیع شده است که می تواند مورد حمله قرار گیرد. فن‌آوری‌های مورد مطالعه در رمزنگاری مدرن شامل رمزگذاری متقارن و نامتقارن، امضای دیجیتال، توابع هش رمزنگاری، پروتکل‌های توافق کلید، زنجیره بلوکی، اثبات‌های دانش صفر و مدارهای مخدوش است.

3.2.3 مهندسی نرم افزار

مهندسی نرم افزار مطالعه طراحی، پیاده سازی و اصلاح نرم افزار به منظور اطمینان از کیفیت بالا، مقرون به صرفه بودن، نگهداری و ساخت سریع است. این یک رویکرد سیستماتیک برای طراحی نرم افزار است که شامل کاربرد شیوه های مهندسی در نرم افزار است. مهندسی نرم افزار با سازماندهی و تجزیه و تحلیل نرم افزار سر و کار دارد – این فقط با ایجاد یا ساخت نرم افزار جدید سر و کار ندارد، بلکه به ترتیب داخلی و نگهداری آن می پردازد. به عنوان مثال تست نرم افزار، مهندسی سیستم، بدهی فنی و فرآیندهای توسعه نرم افزار.

4. آیا برای مهندس کامپیوتر شدن به دانشگاه رفتن نیاز است؟

معمولا نمیتوان پاسخ دقیقی به این سوال داد، اما جواب این سوال بیشتر از اینکه “خیر” باشد، “بله” است. چندین دلیل برای رفتن یا نرفتن به دانشگاه در ایران مطرح می شود که بسیاری از آن ها غلط و بسیاری درست هستند. برای رشته مهندسی کامپیوتر نیز شرایط به همین شکل است. در اینجا به چند سوال پاسخ می دهیم که می تواند تا حد زیادی ابهامات را برطرف کند. جواب هایی که در زیر نوشته ایم کلی است ولی کیفیت دانشگاه می تواند در آن اثر مهمی داشته باشد.

دانشگاه رفتن چه کمکی به من در مهندس کامپیوتر شدن می کند؟

  • شروع یک کار معمولا دشوار است. قرارگیری در محیط دانشگاه این شروع را بسیار راحت و آسوده می کند.
  • در دانشگاه هر کدام از دروس تخصصی مثل ساختمان داده، طراحی الگوریتم و … از طریق یک رفرنس معتبر تدریس می شود که میتواند شما را به واقعیت یک درس نزدیک کند.
  • در دانشگاه این فرصت را دارید تا از تجربه اساتید و دانشجویان سال بالاتر استفاده کنید.
  • در دانشگاه چون در حوزه های مختلف درس اخذ میکنید، اطلاعاتی خوبی از حوزه های مختلف کسب میکنید و بنابراین نسبت به دیگر حوزه ها ناآگاه نمیمانید.
  • دانشگاه به شما کمک میکند تا فضای فکری شما به سمت رشته تان سوق داده شود.

از رفتن به رشته مهندسی کامپیوتر در دانشگاه چه انتظاری نداشته باشم؟

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

5. مهندسی کامپیوتر در دانشگاه های ایران

همانطور که دیدیم مهندسی کامپیوتر گرایش های زیادی دارد. می توان گفت حدودا تمامی این زیرشاخه ها در دانشگاه های ایران نیز وجود دارد. بنابراین امکان تحصیل در رشته مهندسی کامپیوتر در بسیاری از دانشگاه های ایران وجود دارد.

1.5 دانشگاه صنعتی شریف

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

2.5 دانشگاه تهران

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

3.5 دانشگاه امیرکبیر

دانشگاه امیرکبیر همواره نوسانات زیادی در رشته مهندسی کامپیوتر داشته است. اما همچنان به عنوان یکی از برترین دانشگاه ها در مهندسی کامپیوتر شناخته می شود. سخت گیری اساتید این دانشگاه همواره یکی از دلایل موفقیت دانشجویان آن بوده است. در دانشکده مهندسی کامپیوتر دانشگاه امیرکبیر مباحث مهندسی نرم افزار و داده کاوی جز پرطرفدارترین مباحث هستند. دانشگاه امیرکبیر عموما میزبان همایش ها و مسابقات زیادی در ارتباط با صنعت است و این می تواند مشوق خوبی برای دانشجویان باشد. همچنین در این رویدادها دانشجویان امکان مذاکره با بسیاری از شرکت های خوب ایرانی را خواهند داشت.

4.5 دانشگاه علم و صنعت

دانشگاه علم و صنعت نیز یکی از بهترین دانشگاه ها برای تحصیل در رشته مهندسی کامپیوتر است. دانشکده مهندسی کامپیوتر دانشگاه علم و صنعت اساتید بسیار با تجربه ای در سطح کشور دارند که می توانند در رسیدن دانشجویان به مراتب بالای علمی و فنی موثر باشد. این دانشگاه اساتید مختلفی در حوزه نرم افزار و تست نرم افزار، داده کاوی و کلان داده ها دارد. دانشجویان به دلیل تنوع بالای اساتید، مباحث و آزمایشگاه ها فرصت خوبی برای پیشرفت در این دانشگاه خواهند داشت.

6. منابع و ابزارهای مهندسی کامپیوتر و علوم کامپیوتر

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

اگر به دنبال رویکردی ساختارمندتر و آکادمیک هستید، برنامه درسی CS50 هاروارد در YouTube در دسترس است. این یک مقدمه عالی در مورد چگونگی تفکر مانند یک برنامه نویس و درک نظریه های مهم علوم کامپیوتر است. رویکرد خودآموز برای بسیاری از علاقه مندان به علوم کامپیوتر کارآمد بوده است، اما آموزش سنتی به متخصصان نیز کمک کرده تا حرفه خود را به سطح بالاتری برسانند.

7. مهندسی کامپیوتر و علوم کامپیوتر فقط برنامه نویسی نیست!

علوم کامپیوتر فقط ساخت کامپیوتر یا نوشتن برنامه های کامپیوتری نیست. در واقع، علم کامپیوتر بیشتر از ساختن کامپیوتر و توسعه نرم افزار نیست، همانطور که علم نجوم در مورد ساخت تلسکوپ نیست، زیست شناسی در مورد ساخت میکروسکوپ نیست، و موسیقی در مورد ساخت سازهای موسیقی نیست. این ها تنها ابزارهایی هستند که در رشته مربوطبه مورد استفاده قرار می گیرند. برای حل بسیاری از مشکلات علوم کامپیوتر حتی ممکن است نیازی به استفاده از کامپیوتر نباشد. برای مثال در بسیاری از موارد مهندسین نرم افزار برای طراحی یک نرم افزار، تنها از قلم و کاغذ استفاده می کنند. در حقیقت، مشکلات در علوم کامپیوتر چندین دهه قبل از ساخت کامپیوترها حل شده است. علوم کامپیوتر شامل کدنویسی می‌شود، اما شامل موارد بیشتر دیگری نیز می‌شود.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *