برنامه درسی

لیست برنامه های درسی

عنوان تحلیل کلان داده ها
مقطع تحصیلی دكتری تخصصی PhD
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تمرین‌های برنامه‌سازی : 8 نمره
  • پروژه پایانی: 2 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Michael T. Goodrich, Roberto Tamassia, David M. Mount. Data Structures and Algorithms in C++. 2nd Edition. Wiley, 2011
  • T. Cormen, C. Leiserson, R. Riverst, and C. Stein. Introduction to Algorithms. 3rd Edition, MIT Press, 2011.
هدف از طرح درس
  • مبانی و مقدمه (3 جلسه)
    • مقدمه‌ای بر ساختمان داده‌ها و الگوریتم‌ها
    • تحلیل الگوریتم‌ها (تحلیل زمانی و مکانی، O بزرگ)
    • مرتب‌سازی مقدماتی: مرتب‌سازی حبابی و انتخابی
  • آرایه‌ها و لیست‌های پیوندی (3 جلسه)
    • آرایه‌ها و عملیات روی آن‌ها
    • لیست‌های پیوندی (تک‌ پیوندی، دو پیوندی)
    • مقایسه آرایه‌ها و لیست‌ها
  • پشته‌ها و صف‌ها (2 جلسه)
    • پشته‌ها و کاربردهای آن
    • صف‌ها و صف‌های اولویت‌دار
    • پیاده‌سازی پشته و صف با لیست‌های پیوندی
  • Map و HashTable (3 جلسه)
    • انواع Map ها و کاربرد آنها
    • پیاده سازی Map
  • درخت‌ها (4 جلسه)
    • مفاهیم پایه درخت‌ها (درخت‌های دودویی، درخت‌های جستجوی دودویی)
    • عملیات روی درخت‌ها (درج، حذف، پیمایش)
    • درخت‌های AVL و درخت‌های قرمز-سیاه
    • درخت Heap و استفاده در صف با اولویت
  • گراف‌ها (3 جلسه)
    • معرفی گراف‌ها (مفاهیم پایه، نمایش گراف‌ها)
    • الگوریتم‌های پیمایش گراف: DFS و BFS
    • الگوریتم‌های کوتاه‌ترین مسیر (Dijkstra، Floyd-Warshall)
توضیحات

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

عنوان مبانی کامپیوتر و برنامه سازی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تمرین‌های برنامه‌سازی : 8 نمره
  • پروژه پایانی: 2 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Stephen Prata. C++ Primer Plus. 6th Edition, Addison-Wesley, 2011
  • P. Deitel and H. Deitel. C: How to Program. 8th Edition, Prentice-Hall, 2016.
  • B. W. Kernighan and D. M. Ritchie. The C Programming Language. 2nd Edition, Prentice Hall, 1988.
طرح درس
  • مفاهیم اولیه (۱ جلسه)
    • تاریخچه‌ی توسعه‌ی کامپیوتر (سیستم‌های عامل، زبان‌های برنامه‌سازی)
    • معرفی اجزای اصلی کامپیوتر
    • تاریخچه‌ی C/C++
    • برنامه‌سازی ساخت‌یافته و نوشتن کد مهندسی‌ساز
    • ساختار و مراحل ساخت و اجرای برنامه
  • محاسبات در کامپیوتر (۱ جلسه)
    • سیستم‌های عددی (دودویی، ده‌دهی، مبنای شانزده)
    • جمع و تفریق در مبناها
    • تبدیل مبناها
  • آشنایی با الگوریتم و فلوچارت (۲ جلسه)
    • تعریف الگوریتم و مراحل حل مسئله
    • اجزای الگوریتم (محاسبات، تصمیم‌گیری، تکرار)
    • نمایش تصویری الگوریتم به وسیله‌ی فلوچارت
    • نمونه‌هایی از چند الگوریتم اولیه
  • مقدمات برنامه‌سازی (۱ جلسه)
    • متغیرها، انواع داده
    • دستورهای ورودی/خروجی
    • آشنایی با کدنویسی خوب (توضیح‌گذاری، جدانویسی)
    • محاسبات ریاضی (جمع، تفریق، ضرب، تقسیم، باقی‌مانده)
    • اولویت محاسبات
    • مقایسه
  • فرمت‌بندی ورودی/خروجی (۱ جلسه)
    • قالب‌بندی خروجی با printf
    • کنترل دقت نمایش اعداد در خروجی
    • چاپ اعداد صحیح، اعداد ممیزدار، رشته‌ها، و کاراکترها
    • خواندن قالب‌بندی شده از ورودی با scanf
  • دستورها (۳ جلسه)
    • دستورهای انتخاب (if, if/else, switch)
    • دستورهای تکرار (while, for, do/while)
    • تبدیل داده‌ها
    • ثابت‌ها (const)
    • عملگرهای منطقی
    • عملگر انتخاب ? :
    • استفاده از typename
  • توابع (۴ جلسه)
    • توابع ریاضی
    • توابع تصادفی
    • توابع زمان
    • الگوی توابع (prototype)
    • رده‌های ذخیره‌سازی (static, register, extern)
    • حوزه‌های تعریف (file, function, block)
    • پشته در فراخوانی تابع
    • توابع بازگشتی
    • مقایسه توابع بازگشتی و غیربازگشتی
    • پرونده‌های header
  • آزمون و خطایابی برنامه (۱ جلسه)
    • استفاده از دستورهای خروجی برای پیدا کردن خطا
    • استفاده از امکانات IDE برای پیدا کردن خطا
  • آرایه‌ها (۵ جلسه)
    • تعریف و به‌کارگیری آرایه‌ها
    • ارسال آرایه به تابع
    • جستجوی دودویی در آرایه
    • مرتب سازی آرایه
    • آرایه‌های چندبعدی
    • تعریف ثابت‌ها با استفاده از define
  • اشاره‌گرها (۳ جلسه)
    • عملگرهای اشاره‌گری
    • فراخوانی با ارجاع توسط اشاره‌گرها
    • استفاده از const در اشاره‌گرها
    • عملگر sizeof
    • محاسبات آدرس بر روی اشاره‌گرها (جمع، تفریق)
    • ارتباط بین اشاره‌گرها و آرایه‌ها
    • آرایه‌ای از اشاره‌گرها
  • کاراکترها و رشته‌ها (۱ جلسه)
    • تبدیل کاراکترها
    • توابع رشته‌ای
    • دست‌کاری رشته‌ها
  • ساختارها (۲ جلسه)
    • تعریف ساختار (struct)
    • دست‌رسی به اعضای ساختار
    • ارسال ساختارها به توابع
    • ایجاد نام‌های مترادف با typedef
    • نوع داده‌ی union
    • ثابت‌های شمارشی (enum)
    • عملگرهای بیتی
  • آشنایی با زبان سی++ (۱ جلسه)
    • ورودی و خروجی با استفاده از استریم
    • فضای نام‌ها، استفاده از using
    • عملگر تغییر حوزه "::"
    • انواع فراخوانی توابع (با مقدار و با ارجاع)
    • توابع درون‌خط (inline)
    • تعریف مقدار پیش فرض در توابع
    • سربارگذاری توابع
  • فایلها (۱ جلسه)
    • خواندن و نوشتن در فایلها
توضیحات

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

عنوان مهندسی نرم افزار ۲
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تمرین‌های برنامه‌سازی : 6 نمره
  • پروژه پایانی: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Kevin Wayne, Robert Sedgewick. Introduction to Programming in Java, 1st Edition. Pearson Addison Wesley, 2007.
  • P. Deitel, H. Deitel. Java: How to Program. 11th Edition, Pearson Education, 2017.
  • B. Eckel. Thinking in Java. 4th Edition, Prentice Hall, 2006.
طرح درس
  • آشنایی با زبان جاوا (۱ جلسه)
    • تاریخچه
    • ویژگی‌های زبان جاوا
    • اولین برنامه در جاوا
  • مفاهیم اولیه برنامه‌سازی در جاوا (۳ جلسه)
    • متغیر، متد، شرط، حلقه
    • داده‌های اولیه (Primitive Data Types)
    • رشته
    • آرایه
  • مقدمه‌ای بر طراحی و برنامه‌سازی شیءگرا (۲ جلسه)
    • تاریخچه تکامل رویکردها تا رویکرد شیءگرایی
    • مفاهیم اولیه شیءگرایی
    • طرز تفکر و طراحی شیءگرا
    • لفاف‌بندی، واسط، رده، بسته، دسترسی
  • برنامه‌سازی شیءگرا در جاوا (4 جلسه)
    • نحوه تعریف کلاس‌ها
    • اشیاء در حافظه و مدیریت حافظه
    • بارگذاری اولیه و مرگ اشیاء در حافظه
    • زباله‌روب (Garbage Collector)
    • روش‌های ارسال پارامتر در زبان‌های مختلف و جاوا
    • سازنده
    • this
    • اعضای ایستا
    • بسته (package)
  • Encapsulation (۲ جلسه)
    • مفهوم کپسوله سازی
    • معرفی سطوح دسترسی
    • معرفی مفهئم مخفی سازی داده
  • وراثت (۲ جلسه)
    • مفهوم وراثت
    • Protected, abstract, super
    • وراثت چندگانه در سایر زبانها
  • چندریختی (۱ جلسه)
    • چندریختی با کمک وراثت
    • مفهوم virtual در زبان C++
    • اعضای final
  • واسط (interface) (۱ جلسه)
    • کاربرد واسط
    • وراثت چندگانه با کمک واسط
    • کلاسهای Abstract
  • اصول SOLID (۲ جلسه)
    • آشنایی با 5 اصل SOLID
    • به کارگیری اصول SOLID در برنامه نویسی شی گرا
  • مدیریت خطا و استثنا (۲ جلسه)
    • مدل سنتی مدیریت خطا
    • چارچوب مدیریت خطا در جاوا
    • مزایای این مدل
    • Finally, Runtime Exception
  • داده‌های عام (Generics) (۱ جلسه)
    • متدها و کلاس‌های عام
    • کاربردها
    • تولید و استفاده از کلاس‌های عام
    • کلاس‌های عام و وراثت
    • ماهیت کلاس‌های عام و تفاوت آن‌ها با Template در زبان C++
  • برنامه‌سازی همروند (2 جلسه)
    • نیاز به همروندی
    • همروندی در جاوا
    • طول عمر یک thread
    • آشنایی اولیه با مفاهیم Synchronization و critical section
توضیحات

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

عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۴
عنوان توسعه امن نرم افزار
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان کارگاه برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان تحلیل و سیستم های داده های حجیم
مقطع تحصیلی دكتری تخصصی PhD
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان کارگاه مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
عنوان توسعه امن نرم افزار
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان کارگاه برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مهندسی نرم افزار ۲
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان الگوریتم های تقریبی
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان کارگاه مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
عنوان مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مهندسی نرم افزار ۱
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان توسعه امن نرم افزار
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان روش پژوهش و ارایه
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۲
عنوان مهندسی نرم افزار ۲
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مهندسی نرم افزار ۱
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
عنوان اصول علم ربات
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳