برنامه درسی

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

عنوان تحلیل کلان داده ها
مقطع تحصیلی دكتری تخصصی PhD
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 2 نمره
  • پروژه مطالعاتی و ارائه: 8 نمره
منابع
  • M.C. Mariani, O.K. Tweneboah and M.P. Beccar-Varela, Data Science in Theory and Practice, (1st ed), John Wiley
  • Bernard Marr, Big Data in Practice, (1st ed), John Wiley
  • Pramod Sadalage, Martin Fowler. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, 1st Edition. Addison-Wesley Professional
  • by Holden Karau, Andy Konwinski, Patrick Wendell,  Matei Zaharia. Learning Spark: Lightning-Fast Big Data Analysis, 1st Edition. O'Reilly Media
طرح درس
  • معرفی کلان داده و اهمیت آن (3 جلسه)
    • تعریف کلان داده
    • ویژگی‌های 5V در کلان داده ها.
  • معماری سیستم‌های کلان داده (4 جلسه)
    • انواع داده و منابع تولید آنها
    • بررسی معماری توزیع‌شده
  • آشنایی با اصول ذخیره سازی کلان داده (2 جلسه)
    • نحوه ذخیره‌سازی و بازیابی داده‌ها
    • مفاهیم replication و fault tolerance
  • MapReduce (2 جلسه)
    • الگوریتم MapReduce
    • نحوه طراحی job‌ها
    • پیاده‌سازی مثال‌های کاربردی.
  • معرفی Apache Spark (1 جلسه)
    • معماری Spark،
    • RDD (Resilient Distributed Dataset).
  • پردازش داده‌های جریانی (1 جلسه)
    • مفاهیم و ابزارهایی مانند Apache Kafka و Spark Streaming.
  • پایگاه داده‌های NoSQL (1 جلسه)
    • بررسی پایگاه داده‌هایی مانند MongoDB، Cassandra، و HBase.
  • یادگیری ماشین در کلان داده (1 جلسه)
    • معرفی الگوریتم‌های یادگیری ماشین توزیع‌شده
  • کاربردهای کلان داده در صنایع مختلف (2 جلسه)
    • مطالعات موردی از کلان داده در تجارت، سلامت، حمل و نقل و محیط زیست.
  • ارائه (3 جلسه)
    • ارائه پروژه‌ها توسط گروه‌ها
توضیحات

این درس با هدف معرفی مفاهیم، ابزارها و تکنیک‌های تحلیل کلان داده طراحی شده است. دانشجویان با اصول کلیدی پردازش داده‌های بزرگ، معماری سیستم‌های کلان داده، الگوریتم‌های توزیع‌شده و ابزارهای محبوب مانند Apache Hadoop و Apache Spark آشنا می‌شوند. همچنین کاربردهای کلان داده در حوزه‌هایی مانند تجارت، سلامت، و محیط زیست بررسی می‌شود. هدف نهایی، توانمندسازی دانشجویان برای طراحی و اجرای پروژه‌های کلان داده است.

عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach, 8th Edition. McGraw Hill
  •  Eric Freeman, Elisabeth Robson. Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software, 2nd Edition. O'Reilly Media
  •  
طرح درس
  • مروری بر مهندسی نرم افزار (1 جلسه)
    • مرور مفاهیم پایه
    • مرور کلی بر مطالب درس مهندسی نرم‌افزار 1.
  • پیاده‌سازی نرم‌افزار (2 جلسه)
    • اصول کدنویسی حرفه‌ای، نوشتن کد خوانا و قابل نگهداری
  • مقدمه‌ای بر الگوهای طراحی (1 جلسه)
    • معرفی الگوهای طراحی (Design Patterns) و دسته‌بندی آن‌ها
  • الگوهای طراحی Creational (2 جلسه)
    • بررسی الگوهای Singleton و Factory Method.
  • الگوهای طراحی Structural  (2 جلسه)
    • معرفی الگوهای Adapter، Composite و Decorator
  • الگوهای طراحی Behavioral (2 جلسه)
    • بررسی الگوهای Observer، Strategy و State
  • آزمون نرم‌افزار (3 جلسه)
    • مفاهیم اولیه اهمیت آزمون
    • انواع آزمون (واحد، سیستمی، کاربرپذیری)
    • ابزارها و تکنیک‌ها تعریف آزمون
  • مدیریت پیکربندی نرم‌افزار (1 جلسه)
    • مفاهیم مدیریت نسخه
  • نگهداری نرم‌افزار (2 جلسه)
    • چالش‌ها و تکنیک‌های نگهداری و مدیریت تغییرات
  • توسعه چابک و DevOps (2 جلسه)
    • معرفی اصول Agile و DevOps و ابزارهای مرتبط
  • بهبود کیفیت نرم‌افزار (2 جلسه)
    • معرفی تکنیک‌های تضمین کیفیت
    • متریک‌های ارزیابی
توضیحات

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

عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نیز معرفی و بررسی می‌شود. پیش‌فرض این است که دانشجویان در دروس پیشین با یک زبان برنامه‌نویسی آشنایی داشته و با اصول اولیه و منطق برنامه نویسی آشنایی دارد. تمرکز اصلی این درس بر درک و کاربرد مفاهیم شی‌ءگرایی خواهد بود.

عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نمره
  • تکالیف : 4 نمره
  • پروژه مطالعاتی و ارائه: 6 نمره
منابع
  • LinuxFoundationX: Secure Software Development
  • OWASP Secure Coding Practices Guide
  • Gary McGraw: Software Security: Building Security In, Addison-Wesley, 2006
  • Mark Dowd, John McDonald, Justin Schuh: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities, Addison-Wesley, 2006
طرح درس
  • مقدمه‌ای بر توسعه امن نرم‌افزار (2 جلسه)
    • مفهوم امنیت نرم‌افزار و اهمیت آن.
    • تهدیدهای رایج در نرم‌افزارهای ناامن.
    • نقش امنیت در چرخه عمر توسعه نرم‌افزار (SDLC).
  • اصول توسعه امن (3 جلسه)
    • اصل حداقل مجوز (Principle of Least Privilege).
    • اعتبارسنجی ورودی‌ها (Input Validation).
    • مدیریت صحیح خطاها و استثناها.
    • امنیت داده‌ها (Data Confidentiality & Integrity).
  • شناخت و تحلیل تهدیدها (4 جلسه)
    • مدل‌سازی تهدیدها
    • معرفی OWASP Top 10 و تحلیل مثال‌ها.
  • معماری امن نرم‌افزار (3 جلسه)
    • طراحی با در نظر گرفتن امنیت (Secure by Design).
    • الگوهای طراحی امن.
    • مدیریت امنیت وابستگی‌ها (Dependency Management).
  • مدیریت اعتبارسنجی و احراز هویت (2 جلسه)
    • اصول مدیریت کاربران و رمزهای عبور.
    • استفاده از پروتکل‌های امن (مانند OAuth2)
    • حفاظت از توکن‌ها و اطلاعات حساس.
  • رمزنگاری و حفاظت از داده‌ها (2 جلسه)
    • معرفی اصول رمزنگاری (Symmetric & Asymmetric Encryption).
    • مدیریت کلیدها.
  • مدیریت آسیب‌پذیری‌ها و به‌روزرسانی‌ها (3 جلسه)
    • شناسایی آسیب‌پذیری‌ها با ابزارهای اسکن امنیتی.
    • مدیریت به‌روزرسانی‌ها و وصله‌های امنیتی.
    • فرآیند گزارش‌دهی و رفع آسیب‌پذیری‌ها.
  • تست امنیت نرم‌افزار (3 جلسه)
    • آشنایی با روش‌های تست نفوذ
    • ابزارهای تست امنیت
    • انجام تست‌های Static Analysis و Dynamic Analysis.
  • بررسی و تحلیل کد (2 جلسه)
    • بهترین روش‌ها برای تحلیل کد از نظر امنیتی.
    • آشنایی با Code Review و نقش آن در امنیت.
    • ابزارهای تحلیل کد
  • مدیریت چرخه عمر امن نرم‌افزار (SDLC) (2 جلسه)
    • ادغام امنیت در DevOps.
    • مدیریت پیوسته امنیت در فرایندهای CI/CD.
    • ابزارهای مدیریت امنیت در DevSecOps
توضیحات

هدف اصلی این درس، آموزش مفاهیم و اصول پایه‌ای امنیت نرم‌افزار به دانشجویان و توانمندسازی آن‌ها در شناسایی و مدیریت تهدیدات امنیتی در فرآیند توسعه نرم‌افزار است. در این درس دانشجویان با اهمیت امنیت در چرخه عمر توسعه نرم‌افزار (SDLC) و نقش آن در جلوگیری از آسیب‌پذیری‌ها و تهدیدات سایبری آشنا می‌شوند. همچنین، مفاهیم کلیدی مانند طراحی امن، مدیریت صحیح اعتبارسنجی ورودی‌ها، رمزنگاری داده‌ها و اصول مدیریت کاربران به تفصیل بررسی خواهد شد. علاوه بر این، دانشجویان یاد می‌گیرند چگونه با استفاده از ابزارهای تخصصی، تست‌های امنیتی انجام داده و آسیب‌پذیری‌های نرم‌افزار را شناسایی و رفع کنند. این درس همچنین به معرفی استانداردها و روش‌های بین‌المللی امنیت نرم‌افزار مانند OWASP Top 10 می‌پردازد و دانشجویان را با روش‌های تحلیل تهدیدات و مدیریت به‌روزرسانی‌ها آشنا می‌سازد. در نهایت، هدف این است که دانشجویان با پیاده‌سازی اصول امنیتی در پروژه‌های عملی، توانایی طراحی و توسعه سیستم‌های امن را کسب کنند و آماده رویارویی با چالش‌های امنیتی دنیای واقعی شوند.

عنوان کارگاه برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
نحوه ارزیابی
  • آزمون‌های عملی پایانی: 10 نمره
  • تمرین‌های کلاسی و هفتگی: 6 نمره
  • پروژه پایانی: 4 نمره
طرح درس
  • آشنایی با محیط توسعه جاوا و ابزارها (1 جلسه)
    • نصب و تنظیم محیط توسعه (IntelliJ IDEA یا Eclipse).
    • مرور ابزارهای اصلی جاوا: JDK، Maven، Gradle.
    • اجرای اولین برنامه جاوا در محیط IDE.
  • مفاهیم اولیه برنامه‌سازی عملی (2 جلسه)
    • پیاده‌سازی متغیرها، شرط‌ها، و حلقه‌ها در پروژه‌های کاربردی.
    • طراحی و پیاده‌سازی کار با آرایه‌ها و رشته‌ها.
  • برنامه‌سازی شیءگرا: مفاهیم پایه (3 جلسه)
    • تعریف کلاس‌ها و اشیاء در پروژه‌های ساده.
    • پیاده‌سازی کپسوله‌سازی با سطوح دسترسی مختلف.
    • تمرین عملی با سازنده‌ها، اعضای ایستا، و کلمه کلیدی this.
  • مدیریت حافظه و Garbage Collection (1 جلسه)
    • مشاهده و آزمایش رفتار مدیریت حافظه در برنامه‌های کاربردی.
    • استفاده از ابزارهای پروفایلینگ حافظه (Memory Profiler).
  • وراثت و چندریختی (3 جلسه)
    • تمرین عملی بر طراحی سلسله‌مراتب کلاس‌ها.
    • استفاده از abstract، protected، و final در پروژه‌ها.
    • مثال‌هایی از پیاده‌سازی چندریختی با کمک وراثت.
  • واسط‌ها (Interfaces) و اصول SOLID (3 جلسه)
    • طراحی و پیاده‌سازی کلاس‌های مبتنی بر واسط.
    • بررسی و اجرای اصول SOLID در قالب پروژه‌های تیمی کوچک.
  • مدیریت خطا و استثنا (2 جلسه)
    • طراحی برنامه‌هایی با مدیریت صحیح خطا.
    • تمرین بر استفاده از try-catch-finally و انواع استثناها.
  • برنامه‌سازی همروند (2 جلسه)
    • پیاده‌سازی Threads و مدیریت هم‌زمانی.
    • آزمایش مفاهیم Synchronization و critical sections.
  • داده‌های عام (Generics) (1 جلسه)
    • طراحی کلاس‌ها و متدهای عمومی.
    • بررسی تفاوت Generics با Templates در برنامه‌های عملی.
  • پروژه پایانی (3 جلسه)
    • طراحی و پیاده‌سازی یک سیستم کاربردی مبتنی بر مفاهیم شی گرایی
توضیحات

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

عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نیز معرفی و بررسی می‌شود. پیش‌فرض این است که دانشجویان در دروس پیشین با یک زبان برنامه‌نویسی آشنایی داشته و با اصول اولیه و منطق برنامه نویسی آشنایی دارد. تمرکز اصلی این درس بر درک و کاربرد مفاهیم شی‌ءگرایی خواهد بود.

عنوان مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تمرین‌های برنامه‌سازی : 8 نمره
  • پروژه پایانی: 2 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Robert Sedgewick, Kevin Wayne. Introduction to Programming in Java: An Interdisciplinary Approach.  ‎ Pearson Addison Wesley
طرح درس
  • مفاهیم اولیه (۱ جلسه)
    • تاریخچه‌ی توسعه‌ی کامپیوتر (سیستم‌های عامل، زبان‌های برنامه‌سازی)
    • معرفی اجزای اصلی کامپیوتر
    • تاریخچه‌ی زبان جاوا
    • برنامه‌سازی ساخت‌یافته و نوشتن کد مهندسی‌ساز
    • ساختار و مراحل ساخت و اجرای برنامه
  • محاسبات در کامپیوتر (۱ جلسه)
    • سیستم‌های عددی (دودویی، ده‌دهی، مبنای شانزده)
    • جمع و تفریق در مبناها
    • تبدیل مبناها
  • آشنایی با الگوریتم و فلوچارت (۲ جلسه)
    • تعریف الگوریتم و مراحل حل مسئله
    • اجزای الگوریتم (محاسبات، تصمیم‌گیری، تکرار)
    • نمایش تصویری الگوریتم به وسیله‌ی فلوچارت
    • نمونه‌هایی از چند الگوریتم اولیه
  • مقدمات برنامه‌سازی (۱ جلسه)
    • متغیرها، انواع داده
    • دستورهای ورودی/خروجی
    • آشنایی با کدنویسی خوب (توضیح‌گذاری، جدانویسی)
    • محاسبات ریاضی (جمع، تفریق، ضرب، تقسیم، باقی‌مانده)
    • اولویت محاسبات
    • مقایسه
  • فرمت‌بندی ورودی/خروجی (۱ جلسه)
    • چاپ داده در خروجی کنسول
    • کنترل دقت نمایش اعداد در خروجی
    • چاپ اعداد صحیح، اعداد ممیزدار، رشته‌ها، و کاراکترها
    • خواندن  از ورودی با Scanner
  • دستورها (۳ جلسه)
    • دستورهای انتخاب (if, if/else, switch)
    • دستورهای تکرار (while, for, do/while)
    • تبدیل داده‌ها
    • ثابت‌ها (final)
    • عملگرهای منطقی
    • عملگر انتخاب ? :
  • توابع (۴ جلسه)
    • توابع ریاضی
    • توابع تصادفی
    • توابع زمان
    • حوزه‌های تعریف (file, function, block)
    • پشته در فراخوانی تابع
    • توابع بازگشتی
    • مقایسه توابع بازگشتی و غیربازگشتی
  • آزمون و خطایابی برنامه (۱ جلسه)
    • استفاده از دستورهای خروجی برای پیدا کردن خطا
    • استفاده از امکانات IDE برای پیدا کردن خطا
  • آرایه‌ها (۵ جلسه)
    • تعریف و به‌کارگیری آرایه‌ها
    • ارسال آرایه به تابع
    • جستجوی دودویی در آرایه
    • مرتب سازی آرایه
    • آرایه‌های چندبعدی
  • کاراکترها و رشته‌ها (۱ جلسه)
    • تبدیل کاراکترها
    • توابع رشته‌ای
    • دست‌کاری رشته‌ها
  • فایلها (۱ جلسه)
    • خواندن و نوشتن در فایلها
توضیحات

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

عنوان تحلیل و سیستم های داده های حجیم
مقطع تحصیلی دكتری تخصصی PhD
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 2 نمره
  • پروژه مطالعاتی و ارائه: 8 نمره
منابع
  • M.C. Mariani, O.K. Tweneboah and M.P. Beccar-Varela, Data Science in Theory and Practice, (1st ed), John Wiley
  • Bernard Marr, Big Data in Practice, (1st ed), John Wiley
  • Pramod Sadalage, Martin Fowler. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, 1st Edition. Addison-Wesley Professional
  • by Holden Karau, Andy Konwinski, Patrick Wendell,  Matei Zaharia. Learning Spark: Lightning-Fast Big Data Analysis, 1st Edition. O'Reilly Media
طرح درس
  • معرفی کلان داده و اهمیت آن (3 جلسه)
    • تعریف کلان داده
    • ویژگی‌های 5V در کلان داده ها.
  • معماری سیستم‌های کلان داده (4 جلسه)
    • انواع داده و منابع تولید آنها
    • بررسی معماری توزیع‌شده
  • آشنایی با اصول ذخیره سازی کلان داده (2 جلسه)
    • نحوه ذخیره‌سازی و بازیابی داده‌ها
    • مفاهیم replication و fault tolerance
  • MapReduce (2 جلسه)
    • الگوریتم MapReduce
    • نحوه طراحی job‌ها
    • پیاده‌سازی مثال‌های کاربردی.
  • معرفی Apache Spark (1 جلسه)
    • معماری Spark،
    • RDD (Resilient Distributed Dataset).
  • پردازش داده‌های جریانی (1 جلسه)
    • مفاهیم و ابزارهایی مانند Apache Kafka و Spark Streaming.
  • پایگاه داده‌های NoSQL (1 جلسه)
    • بررسی پایگاه داده‌هایی مانند MongoDB، Cassandra، و HBase.
  • یادگیری ماشین در کلان داده (1 جلسه)
    • معرفی الگوریتم‌های یادگیری ماشین توزیع‌شده
  • کاربردهای کلان داده در صنایع مختلف (2 جلسه)
    • مطالعات موردی از کلان داده در تجارت، سلامت، حمل و نقل و محیط زیست.
  • ارائه (3 جلسه)
    • ارائه پروژه‌ها توسط گروه‌ها
توضیحات

این درس با هدف معرفی مفاهیم، ابزارها و تکنیک‌های تحلیل کلان داده طراحی شده است. دانشجویان با اصول کلیدی پردازش داده‌های بزرگ، معماری سیستم‌های کلان داده، الگوریتم‌های توزیع‌شده و ابزارهای محبوب مانند Apache Hadoop و Apache Spark آشنا می‌شوند. همچنین کاربردهای کلان داده در حوزه‌هایی مانند تجارت، سلامت، و محیط زیست بررسی می‌شود. هدف نهایی، توانمندسازی دانشجویان برای طراحی و اجرای پروژه‌های کلان داده است.

عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 6 نمره
  • پروژه مطالعاتی و ارائه: 4 نمره
منابع
  • Bishop, Christopher. Pattern Recognition and Machine Learning. Springer, 2006.
  • Hastie, Trevor, et al. The Elements of Statistical Learning. Springer, 2009.
  • Sutton, Richard. Reinforcement Learning: An Introduction. MIT Press, 2018.
  • Han, Jiawei, Kamber, Micheline, Pei, Jian. Data Mining: Concepts and Techniques. Morgan Kaufmann, 2011
طرح درس
  • مقدمه‌ای بر یادگیری ماشین و امنیت سایبری (1 جلسه)

    • تعریف یادگیری ماشین و انواع آن
    • ارتباط یادگیری ماشین با امنیت سایبری
    • مروری بر چالش‌های امنیت سایبری
    • معرفی ابزارهای کاربردی مانند Python و Scikit-learn
  • آشنایی با داده‌های امنیت سایبری (2 جلسه)

    • منابع داده در امنیت سایبری (مثل logها، شبکه، و فایل‌های سیستم)
    • آماده‌سازی و پیش‌پردازش داده‌ها
    • تکنیک‌های کاهش نویز و شناسایی داده‌های گمشده
  • روش‌های یادگیری تحت نظارت و کاربردهای آن در امنیت سایبری (2 جلسه)

    • رگرسیون و طبقه‌بندی
    • شناسایی بدافزارها و اسپم‌ها با الگوریتم‌های تحت نظارت
    • کاربرد مدل‌های خطی و SVM
  • روش‌های یادگیری بدون نظارت و خوشه‌بندی در امنیت سایبری (2 جلسه)

    • خوشه‌بندی داده‌های شبکه
    • شناسایی رفتارهای غیرعادی در ترافیک شبکه
    • کاربرد الگوریتم‌هایی مثل K-Means و DBSCAN
  • یادگیری نیمه‌نظارت‌شده و کاربردهای آن (2 جلسه)

    • ترکیب داده‌های برچسب‌دار و بدون برچسب
    • تشخیص بدافزار با یادگیری نیمه‌نظارت‌شده
    • معرفی الگوریتم‌های مرتبط
  • مدل‌های یادگیری عمیق و کاربردهای آن در امنیت سایبری (1 جلسه)

    • شبکه‌های عصبی عمیق (DNN)
    • کاربرد CNN در تحلیل ترافیک شبکه
    • کاربرد RNN در تشخیص رفتارهای مشکوک
  • تشخیص ناهنجاری‌ها (Anomaly Detection) (2 جلسه)

    • تعریف و انواع ناهنجاری‌ها
    • کاربرد در شناسایی حملات سایبری (مثل DDoS و APT)
    • الگوریتم‌های تشخیص ناهنجاری (Isolation Forest، PCA)
  • تحلیل حملات و بدافزارها با یادگیری ماشین (2 جلسه)

    • شناسایی و طبقه‌بندی بدافزارها
    • تحلیل رفتار بدافزار با استفاده از ویژگی‌های استخراج‌شده
    • معرفی تکنیک‌های تحلیل دینامیک و استاتیک
  • شناسایی حملات فیشینگ و اسپم (1 جلسه)

    • تحلیل داده‌های ایمیل
    • ویژگی‌های قابل‌استفاده در شناسایی فیشینگ
    • کاربرد الگوریتم‌های یادگیری ماشین در تشخیص اسپم
  • تحلیل لاگ‌ها و رفتار کاربران (1 جلسه)

    • استخراج ویژگی‌های رفتاری از لاگ‌ها
    • شناسایی رفتارهای غیرعادی کاربران داخلی
    • کاربرد الگوریتم‌های طبقه‌بندی و خوشه‌بندی
  • امنیت داده‌ها و رمزنگاری با یادگیری ماشین (2 جلسه)

    • شناسایی ضعف‌های رمزنگاری با یادگیری ماشین
    • تحلیل داده‌های رمزنگاری‌شده برای شناسایی نفوذ
    • مطالعه موردی: حملات مبتنی بر زمان (Timing Attacks)
  • کاربرد پردازش زبان طبیعی (NLP) در امنیت سایبری (1 جلسه)

    • تحلیل داده‌های متنی (ایمیل‌ها، گزارش‌ها)
    • کاربرد NLP در شناسایی فیشینگ و تهدیدات سایبری متنی
    • ابزارها و کتابخانه‌های NLP
  • مدیریت ویژگی‌ها و انتخاب بهترین مدل (1 جلسه)

    • تکنیک‌های انتخاب ویژگی‌ها
    • مقایسه مدل‌ها با استفاده از معیارهای عملکرد
    • بهینه‌سازی مدل‌ها با تکنیک‌هایی مثل Grid Search
  • مباحث اخلاقی و قانونی در استفاده از یادگیری ماشین در امنیت (1 جلسه)

    • چالش‌های حفظ حریم خصوصی
    • اصول اخلاقی در توسعه سیستم‌های مبتنی بر یادگیری ماشین
    • استانداردها و قوانین مرتبط
  • بررسی مطالعات موردی و پروژه‌های واقعی (3 جلسه)

    • مطالعه پروژه‌های موفق و چالش‌های امنیت سایبری
    • تحلیل نقاط ضعف و قوت سیستم‌های موجود
توضیحات

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

عنوان ساختمان داده ها و الگوریتم ها
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نمره
  • تمرین‌های کلاسی و هفتگی: 6 نمره
  • پروژه پایانی: 4 نمره
طرح درس
  • مفاهیم اولیه و آشنایی با محیط برنامه‌نویسی (1 جلسه)
    • آشنایی با محیط IDE (مانند IntelliJ IDEA یا Eclipse).
    • ایجاد اولین برنامه (چاپ پیام "Hello World").
    • تمرین اجرای کد، اصلاح خطاها، و نوشتن کد خوانا.
  • تمرین محاسبات در کامپیوتر (1 جلسه)
    • نوشتن برنامه‌ای برای تبدیل عدد از یک مبنا به مبنای دیگر.
    • پیاده‌سازی جمع و تفریق در سیستم دودویی.
  • الگوریتم و فلوچارت (1 جلسه)
    • طراحی فلوچارت برای مسائل ساده (مانند یافتن بزرگ‌ترین عدد بین سه عدد).
    • تبدیل فلوچارت به کد جاوا.
  • مقدمات برنامه‌نویسی (1 جلسه)
    • تعریف متغیرها و انواع داده‌ها در برنامه‌های کوچک.
    • نوشتن برنامه‌های محاسباتی ساده (مانند محاسبه مساحت و محیط).
    • تمرین اصول کدنویسی خوب (افزودن توضیحات و قالب‌بندی کد).
  • دستورها (3 جلسه)
    • نوشتن برنامه‌های شرطی با if-else و switch.
    • تمرین استفاده از حلقه‌ها (محاسبه فاکتوریل، پیدا کردن اعداد اول).
  • توابع (3 جلسه)
    • تعریف توابع ساده و ارسال ورودی به توابع.
    • پیاده‌سازی توابع بازگشتی (مانند دنباله فیبوناچی).
    • تمرین طراحی توابع برای تقسیم برنامه به بخش‌های کوچک‌تر.
  • آزمون و خطایابی برنامه (1 جلسه)
    • تمرین استفاده از دستورات چاپ برای تشخیص خطاها.
    • آشنایی با Debugger محیط IDE و استفاده از آن برای پیدا کردن خطاهای منطقی.
  • آرایه‌ها (4 جلسه)
    • تعریف و مقداردهی اولیه آرایه‌ها.
    • نوشتن الگوریتم جستجوی خطی و دودویی در آرایه‌ها.
    • تمرین مرتب‌سازی آرایه (مانند Bubble Sort و Selection Sort).
    • کار با آرایه‌های چندبعدی (مانند ماتریس‌ها).
  •  کاراکترها و رشته‌ها (1 جلسه)
    • تمرین کار با توابع رشته‌ای (مانند جستجوی یک کلمه در یک جمله).
    • دستکاری رشته‌ها (ترکیب رشته‌ها، معکوس‌کردن).
  • فایل‌ها (1 جلسه)
    • نوشتن برنامه‌ای برای خواندن داده از یک فایل متنی.
    • تمرین نوشتن اطلاعات خروجی در فایل‌ها.
توضیحات

این کارگاه با هدف تمرین عملی مفاهیم تدریس‌شده در درس مبانی برنامه‌نویسی برگزار می‌شود. دانشجویان در این کارگاه مهارت‌های زیر را کسب خواهند کرد:

  1. طراحی الگوریتم‌های کارا و پیاده‌سازی آنها به صورت فلوچارت
  2. آشنایی با محیط برنامه‌نویسی و خطایابی کد.
  3. تقویت مهارت در حل مسائل و تحلیل آن‌ها با استفاده از زبان جاوا.
عنوان توسعه امن نرم افزار
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 4 نمره
  • پروژه مطالعاتی و ارائه: 6 نمره
منابع
  • LinuxFoundationX: Secure Software Development
  • OWASP Secure Coding Practices Guide
  • Gary McGraw: Software Security: Building Security In, Addison-Wesley, 2006
  • Mark Dowd, John McDonald, Justin Schuh: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities, Addison-Wesley, 2006
طرح درس
  • مقدمه‌ای بر توسعه امن نرم‌افزار (2 جلسه)
    • مفهوم امنیت نرم‌افزار و اهمیت آن.
    • تهدیدهای رایج در نرم‌افزارهای ناامن.
    • نقش امنیت در چرخه عمر توسعه نرم‌افزار (SDLC).
  • اصول توسعه امن (3 جلسه)
    • اصل حداقل مجوز (Principle of Least Privilege).
    • اعتبارسنجی ورودی‌ها (Input Validation).
    • مدیریت صحیح خطاها و استثناها.
    • امنیت داده‌ها (Data Confidentiality & Integrity).
  • شناخت و تحلیل تهدیدها (4 جلسه)
    • مدل‌سازی تهدیدها
    • معرفی OWASP Top 10 و تحلیل مثال‌ها.
  • معماری امن نرم‌افزار (3 جلسه)
    • طراحی با در نظر گرفتن امنیت (Secure by Design).
    • الگوهای طراحی امن.
    • مدیریت امنیت وابستگی‌ها (Dependency Management).
  • مدیریت اعتبارسنجی و احراز هویت (2 جلسه)
    • اصول مدیریت کاربران و رمزهای عبور.
    • استفاده از پروتکل‌های امن (مانند OAuth2)
    • حفاظت از توکن‌ها و اطلاعات حساس.
  • رمزنگاری و حفاظت از داده‌ها (2 جلسه)
    • معرفی اصول رمزنگاری (Symmetric & Asymmetric Encryption).
    • مدیریت کلیدها.
  • مدیریت آسیب‌پذیری‌ها و به‌روزرسانی‌ها (3 جلسه)
    • شناسایی آسیب‌پذیری‌ها با ابزارهای اسکن امنیتی.
    • مدیریت به‌روزرسانی‌ها و وصله‌های امنیتی.
    • فرآیند گزارش‌دهی و رفع آسیب‌پذیری‌ها.
  • تست امنیت نرم‌افزار (3 جلسه)
    • آشنایی با روش‌های تست نفوذ
    • ابزارهای تست امنیت
    • انجام تست‌های Static Analysis و Dynamic Analysis.
  • بررسی و تحلیل کد (2 جلسه)
    • بهترین روش‌ها برای تحلیل کد از نظر امنیتی.
    • آشنایی با Code Review و نقش آن در امنیت.
    • ابزارهای تحلیل کد
  • مدیریت چرخه عمر امن نرم‌افزار (SDLC) (2 جلسه)
    • ادغام امنیت در DevOps.
    • مدیریت پیوسته امنیت در فرایندهای CI/CD.
    • ابزارهای مدیریت امنیت در DevSecOps
توضیحات

هدف اصلی این درس، آموزش مفاهیم و اصول پایه‌ای امنیت نرم‌افزار به دانشجویان و توانمندسازی آن‌ها در شناسایی و مدیریت تهدیدات امنیتی در فرآیند توسعه نرم‌افزار است. در این درس دانشجویان با اهمیت امنیت در چرخه عمر توسعه نرم‌افزار (SDLC) و نقش آن در جلوگیری از آسیب‌پذیری‌ها و تهدیدات سایبری آشنا می‌شوند. همچنین، مفاهیم کلیدی مانند طراحی امن، مدیریت صحیح اعتبارسنجی ورودی‌ها، رمزنگاری داده‌ها و اصول مدیریت کاربران به تفصیل بررسی خواهد شد. علاوه بر این، دانشجویان یاد می‌گیرند چگونه با استفاده از ابزارهای تخصصی، تست‌های امنیتی انجام داده و آسیب‌پذیری‌های نرم‌افزار را شناسایی و رفع کنند. این درس همچنین به معرفی استانداردها و روش‌های بین‌المللی امنیت نرم‌افزار مانند OWASP Top 10 می‌پردازد و دانشجویان را با روش‌های تحلیل تهدیدات و مدیریت به‌روزرسانی‌ها آشنا می‌سازد. در نهایت، هدف این است که دانشجویان با پیاده‌سازی اصول امنیتی در پروژه‌های عملی، توانایی طراحی و توسعه سیستم‌های امن را کسب کنند و آماده رویارویی با چالش‌های امنیتی دنیای واقعی شوند.

عنوان کارگاه برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
نحوه ارزیابی
  • آزمون‌های عملی پایانی: 10 نمره
  • تمرین‌های کلاسی و هفتگی: 6 نمره
  • پروژه پایانی: 4 نمره
طرح درس
  • آشنایی با محیط توسعه جاوا و ابزارها (1 جلسه)
    • نصب و تنظیم محیط توسعه (IntelliJ IDEA یا Eclipse).
    • مرور ابزارهای اصلی جاوا: JDK، Maven، Gradle.
    • اجرای اولین برنامه جاوا در محیط IDE.
  • مفاهیم اولیه برنامه‌سازی عملی (2 جلسه)
    • پیاده‌سازی متغیرها، شرط‌ها، و حلقه‌ها در پروژه‌های کاربردی.
    • طراحی و پیاده‌سازی کار با آرایه‌ها و رشته‌ها.
  • برنامه‌سازی شیءگرا: مفاهیم پایه (3 جلسه)
    • تعریف کلاس‌ها و اشیاء در پروژه‌های ساده.
    • پیاده‌سازی کپسوله‌سازی با سطوح دسترسی مختلف.
    • تمرین عملی با سازنده‌ها، اعضای ایستا، و کلمه کلیدی this.
  • مدیریت حافظه و Garbage Collection (1 جلسه)
    • مشاهده و آزمایش رفتار مدیریت حافظه در برنامه‌های کاربردی.
    • استفاده از ابزارهای پروفایلینگ حافظه (Memory Profiler).
  • وراثت و چندریختی (3 جلسه)
    • تمرین عملی بر طراحی سلسله‌مراتب کلاس‌ها.
    • استفاده از abstract، protected، و final در پروژه‌ها.
    • مثال‌هایی از پیاده‌سازی چندریختی با کمک وراثت.
  • واسط‌ها (Interfaces) و اصول SOLID (3 جلسه)
    • طراحی و پیاده‌سازی کلاس‌های مبتنی بر واسط.
    • بررسی و اجرای اصول SOLID در قالب پروژه‌های تیمی کوچک.
  • مدیریت خطا و استثنا (2 جلسه)
    • طراحی برنامه‌هایی با مدیریت صحیح خطا.
    • تمرین بر استفاده از try-catch-finally و انواع استثناها.
  • برنامه‌سازی همروند (2 جلسه)
    • پیاده‌سازی Threads و مدیریت هم‌زمانی.
    • آزمایش مفاهیم Synchronization و critical sections.
  • داده‌های عام (Generics) (1 جلسه)
    • طراحی کلاس‌ها و متدهای عمومی.
    • بررسی تفاوت Generics با Templates در برنامه‌های عملی.
  • پروژه پایانی (3 جلسه)
    • طراحی و پیاده‌سازی یک سیستم کاربردی مبتنی بر مفاهیم شی گرایی
توضیحات

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

عنوان برنامه نویسی پیشرفته
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 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 نیز معرفی و بررسی می‌شود. پیش‌فرض این است که دانشجویان در دروس پیشین با یک زبان برنامه‌نویسی آشنایی داشته و با اصول اولیه و منطق برنامه نویسی آشنایی دارد. تمرکز اصلی این درس بر درک و کاربرد مفاهیم شی‌ءگرایی خواهد بود.

عنوان مهندسی نرم افزار ۲
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • پروژه پایانی: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach, 8th Edition. McGraw Hill
  •  Eric Freeman, Elisabeth Robson. Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software, 2nd Edition. O'Reilly Media
طرح درس
  • مروری بر مهندسی نرم افزار (1 جلسه)
    • مرور مفاهیم پایه
    • مرور کلی بر مطالب درس مهندسی نرم‌افزار 1.
  • پیاده‌سازی نرم‌افزار (2 جلسه)
    • اصول کدنویسی حرفه‌ای، نوشتن کد خوانا و قابل نگهداری
  • مقدمه‌ای بر الگوهای طراحی (1 جلسه)
    • معرفی الگوهای طراحی (Design Patterns) و دسته‌بندی آن‌ها
  • الگوهای طراحی Creational (2 جلسه)
    • بررسی الگوهای Singleton و Factory Method.
  • الگوهای طراحی Structural  (2 جلسه)
    • معرفی الگوهای Adapter، Composite و Decorator
  • الگوهای طراحی Behavioral (2 جلسه)
    • بررسی الگوهای Observer، Strategy و State
  • آزمون نرم‌افزار (3 جلسه)
    • مفاهیم اولیه اهمیت آزمون
    • انواع آزمون (واحد، سیستمی، کاربرپذیری)
    • ابزارها و تکنیک‌ها تعریف آزمون
  • مدیریت پیکربندی نرم‌افزار (1 جلسه)
    • مفاهیم مدیریت نسخه
  • نگهداری نرم‌افزار (2 جلسه)
    • چالش‌ها و تکنیک‌های نگهداری و مدیریت تغییرات
  • توسعه چابک و DevOps (2 جلسه)
    • معرفی اصول Agile و DevOps و ابزارهای مرتبط
  • بهبود کیفیت نرم‌افزار (2 جلسه)
    • معرفی تکنیک‌های تضمین کیفیت
    • متریک‌های ارزیابی
توضیحات

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

عنوان الگوریتم های تقریبی
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 4 نمره
  • پروژه مطالعاتی و ارائه: 6 نمره
منابع
  • Vazirani VV. Approximation Algorithms. Springer; 2001.

  • Williamson DP, Shmoys DB. The Design of Approximation Algorithms. Cambridge University Press; 2011.

  • Kleinberg J, Tardos É. Algorithm Design. Pearson; 2006.

  • Garey MR, Johnson DS. Computers and Intractability: A Guide to the Theory of NP-Completeness. Freeman; 1979.

  • Cormen TH, Leiserson CE, Rivest RL, Stein C. Introduction to Algorithms. 3rd ed. MIT Press; 2009.

طرح درس
  • مقدمات و مبانی (3 جلسه)
    • تعریف الگوریتم‌های تقریبی
    • مسائل NP-hard و اهمیت الگوریتم‌های تقریبی
    • معیارهای ارزیابی: نسبت تقریبی و تحلیل عملکرد
    • پیچیدگی محاسباتی و کلاس‌های پیچیدگی (P، NP، NP-hard)
    • نقش کاهش‌پذیری در مسائل بهینه‌سازی
    • کاربردهای الگوریتم‌های تقریبی در دنیای واقعی (شبکه‌ها، زمان‌بندی، بهینه‌سازی ترکیبی)
  • روش حریصانه (1 جلسه)

    • طراحی و تحلیل الگوریتم حریصانه برای مسائل پوشش مجموعه‌ای (Set Cover)

  • روش تقسیم و غلبه (1 جلسه)

    • کاربرد در مسائل زمان‌بندی و دیگر مسائل بهینه‌سازی

  • روش برنامه‌ریزی پویا (2 جلسه)

    • الگوریتم FPTAS (Fully Polynomial Time Approximation Scheme) برای مسائل مانند Knapsack

  • روش گِرد کردن و مرتبه دوم (1 جلسه)

    • استفاده از برنامه‌ریزی خطی (LP Relaxation) در مسائل مانند Vertex Cover

  • روش جستجوی محلی (1 جلسه)

    • تحلیل و بهینه‌سازی الگوریتم‌های جستجوی محلی برای مسائل ترکیبی

  • روش متاهیورستیک‌ها (2 جلسه)

    • الگوریتم‌های ژنتیک و شبیه‌سازی تبرید (Simulated Annealing)

  • مسائل برش و جریان (1 جلسه)

    • الگوریتم‌های تقریبی برای مسائل Max-Cut و Multiway Cut

  • تکنیک پوشش و محدودسازی (1 جلسه)

    • تحلیل الگوریتم Approximation برای مسائل Packing

  • روش گراف‌ها (2 جلسه)

    • طراحی الگوریتم برای مسائل کوتاه‌ترین مسیر و مسائل تطابق (Matching)

  • روش‌های ترکیبی (1 جلسه)

    • ترکیب تکنیک‌ها برای مسائل پیچیده

توضیحات

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

عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 6 نمره
  • پروژه مطالعاتی و ارائه: 4 نمره
منابع
  • Bishop, Christopher. Pattern Recognition and Machine Learning. Springer, 2006.
  • Hastie, Trevor, et al. The Elements of Statistical Learning. Springer, 2009.
  • Sutton, Richard. Reinforcement Learning: An Introduction. MIT Press, 2018.
  • Han, Jiawei, Kamber, Micheline, Pei, Jian. Data Mining: Concepts and Techniques. Morgan Kaufmann, 2011
طرح درس
  • مقدمه‌ای بر یادگیری ماشین و امنیت سایبری (1 جلسه)

    • تعریف یادگیری ماشین و انواع آن
    • ارتباط یادگیری ماشین با امنیت سایبری
    • مروری بر چالش‌های امنیت سایبری
    • معرفی ابزارهای کاربردی مانند Python و Scikit-learn
  • آشنایی با داده‌های امنیت سایبری (2 جلسه)

    • منابع داده در امنیت سایبری (مثل logها، شبکه، و فایل‌های سیستم)
    • آماده‌سازی و پیش‌پردازش داده‌ها
    • تکنیک‌های کاهش نویز و شناسایی داده‌های گمشده
  • روش‌های یادگیری تحت نظارت و کاربردهای آن در امنیت سایبری (2 جلسه)

    • رگرسیون و طبقه‌بندی
    • شناسایی بدافزارها و اسپم‌ها با الگوریتم‌های تحت نظارت
    • کاربرد مدل‌های خطی و SVM
  • روش‌های یادگیری بدون نظارت و خوشه‌بندی در امنیت سایبری (2 جلسه)

    • خوشه‌بندی داده‌های شبکه
    • شناسایی رفتارهای غیرعادی در ترافیک شبکه
    • کاربرد الگوریتم‌هایی مثل K-Means و DBSCAN
  • یادگیری نیمه‌نظارت‌شده و کاربردهای آن (2 جلسه)

    • ترکیب داده‌های برچسب‌دار و بدون برچسب
    • تشخیص بدافزار با یادگیری نیمه‌نظارت‌شده
    • معرفی الگوریتم‌های مرتبط
  • مدل‌های یادگیری عمیق و کاربردهای آن در امنیت سایبری (1 جلسه)

    • شبکه‌های عصبی عمیق (DNN)
    • کاربرد CNN در تحلیل ترافیک شبکه
    • کاربرد RNN در تشخیص رفتارهای مشکوک
  • تشخیص ناهنجاری‌ها (Anomaly Detection) (2 جلسه)

    • تعریف و انواع ناهنجاری‌ها
    • کاربرد در شناسایی حملات سایبری (مثل DDoS و APT)
    • الگوریتم‌های تشخیص ناهنجاری (Isolation Forest، PCA)
  • تحلیل حملات و بدافزارها با یادگیری ماشین (2 جلسه)

    • شناسایی و طبقه‌بندی بدافزارها
    • تحلیل رفتار بدافزار با استفاده از ویژگی‌های استخراج‌شده
    • معرفی تکنیک‌های تحلیل دینامیک و استاتیک
  • شناسایی حملات فیشینگ و اسپم (1 جلسه)

    • تحلیل داده‌های ایمیل
    • ویژگی‌های قابل‌استفاده در شناسایی فیشینگ
    • کاربرد الگوریتم‌های یادگیری ماشین در تشخیص اسپم
  • تحلیل لاگ‌ها و رفتار کاربران (1 جلسه)

    • استخراج ویژگی‌های رفتاری از لاگ‌ها
    • شناسایی رفتارهای غیرعادی کاربران داخلی
    • کاربرد الگوریتم‌های طبقه‌بندی و خوشه‌بندی
  • امنیت داده‌ها و رمزنگاری با یادگیری ماشین (2 جلسه)

    • شناسایی ضعف‌های رمزنگاری با یادگیری ماشین
    • تحلیل داده‌های رمزنگاری‌شده برای شناسایی نفوذ
    • مطالعه موردی: حملات مبتنی بر زمان (Timing Attacks)
  • کاربرد پردازش زبان طبیعی (NLP) در امنیت سایبری (1 جلسه)

    • تحلیل داده‌های متنی (ایمیل‌ها، گزارش‌ها)
    • کاربرد NLP در شناسایی فیشینگ و تهدیدات سایبری متنی
    • ابزارها و کتابخانه‌های NLP
  • مدیریت ویژگی‌ها و انتخاب بهترین مدل (1 جلسه)

    • تکنیک‌های انتخاب ویژگی‌ها
    • مقایسه مدل‌ها با استفاده از معیارهای عملکرد
    • بهینه‌سازی مدل‌ها با تکنیک‌هایی مثل Grid Search
  • مباحث اخلاقی و قانونی در استفاده از یادگیری ماشین در امنیت (1 جلسه)

    • چالش‌های حفظ حریم خصوصی
    • اصول اخلاقی در توسعه سیستم‌های مبتنی بر یادگیری ماشین
    • استانداردها و قوانین مرتبط
  • بررسی مطالعات موردی و پروژه‌های واقعی (3 جلسه)

    • مطالعه پروژه‌های موفق و چالش‌های امنیت سایبری
    • تحلیل نقاط ضعف و قوت سیستم‌های موجود
توضیحات

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

عنوان کارگاه مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۱
نحوه ارزیابی
  • آزمون‌های عملی پایانی: 10 نمره
  • تمرین‌های کلاسی و هفتگی: 6 نمره
  • پروژه پایانی: 4 نمره
طرح درس
  • مفاهیم اولیه و آشنایی با محیط برنامه‌نویسی (1 جلسه)
    • آشنایی با محیط IDE (مانند IntelliJ IDEA یا Eclipse).
    • ایجاد اولین برنامه (چاپ پیام "Hello World").
    • تمرین اجرای کد، اصلاح خطاها، و نوشتن کد خوانا.
  • تمرین محاسبات در کامپیوتر (1 جلسه)
    • نوشتن برنامه‌ای برای تبدیل عدد از یک مبنا به مبنای دیگر.
    • پیاده‌سازی جمع و تفریق در سیستم دودویی.
  • الگوریتم و فلوچارت (1 جلسه)
    • طراحی فلوچارت برای مسائل ساده (مانند یافتن بزرگ‌ترین عدد بین سه عدد).
    • تبدیل فلوچارت به کد جاوا.
  • مقدمات برنامه‌نویسی (1 جلسه)
    • تعریف متغیرها و انواع داده‌ها در برنامه‌های کوچک.
    • نوشتن برنامه‌های محاسباتی ساده (مانند محاسبه مساحت و محیط).
    • تمرین اصول کدنویسی خوب (افزودن توضیحات و قالب‌بندی کد).
  • دستورها (3 جلسه)
    • نوشتن برنامه‌های شرطی با if-else و switch.
    • تمرین استفاده از حلقه‌ها (محاسبه فاکتوریل، پیدا کردن اعداد اول).
  • توابع (3 جلسه)
    • تعریف توابع ساده و ارسال ورودی به توابع.
    • پیاده‌سازی توابع بازگشتی (مانند دنباله فیبوناچی).
    • تمرین طراحی توابع برای تقسیم برنامه به بخش‌های کوچک‌تر.
  • آزمون و خطایابی برنامه (1 جلسه)
    • تمرین استفاده از دستورات چاپ برای تشخیص خطاها.
    • آشنایی با Debugger محیط IDE و استفاده از آن برای پیدا کردن خطاهای منطقی.
  • آرایه‌ها (4 جلسه)
    • تعریف و مقداردهی اولیه آرایه‌ها.
    • نوشتن الگوریتم جستجوی خطی و دودویی در آرایه‌ها.
    • تمرین مرتب‌سازی آرایه (مانند Bubble Sort و Selection Sort).
    • کار با آرایه‌های چندبعدی (مانند ماتریس‌ها).
  •  کاراکترها و رشته‌ها (1 جلسه)
    • تمرین کار با توابع رشته‌ای (مانند جستجوی یک کلمه در یک جمله).
    • دستکاری رشته‌ها (ترکیب رشته‌ها، معکوس‌کردن).
  • فایل‌ها (1 جلسه)
    • نوشتن برنامه‌ای برای خواندن داده از یک فایل متنی.
    • تمرین نوشتن اطلاعات خروجی در فایل‌ها.
توضیحات

این کارگاه با هدف تمرین عملی مفاهیم تدریس‌شده در درس مبانی برنامه‌نویسی برگزار می‌شود. دانشجویان در این کارگاه مهارت‌های زیر را کسب خواهند کرد:

  1. طراحی الگوریتم‌های کارا و پیاده‌سازی آنها به صورت فلوچارت
  2. آشنایی با محیط برنامه‌نویسی و خطایابی کد.
  3. تقویت مهارت در حل مسائل و تحلیل آن‌ها با استفاده از زبان جاوا.
عنوان مبانی کامپیوتر و برنامه نویسی
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تمرین‌های برنامه‌سازی : 8 نمره
  • پروژه پایانی: 2 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Robert Sedgewick, Kevin Wayne. Introduction to Programming in Java: An Interdisciplinary Approach.  ‎ Pearson Addison Wesley
طرح درس
  • مفاهیم اولیه (۱ جلسه)
    • تاریخچه‌ی توسعه‌ی کامپیوتر (سیستم‌های عامل، زبان‌های برنامه‌سازی)
    • معرفی اجزای اصلی کامپیوتر
    • تاریخچه‌ی زبان جاوا
    • برنامه‌سازی ساخت‌یافته و نوشتن کد مهندسی‌ساز
    • ساختار و مراحل ساخت و اجرای برنامه
  • محاسبات در کامپیوتر (۱ جلسه)
    • سیستم‌های عددی (دودویی، ده‌دهی، مبنای شانزده)
    • جمع و تفریق در مبناها
    • تبدیل مبناها
  • آشنایی با الگوریتم و فلوچارت (۲ جلسه)
    • تعریف الگوریتم و مراحل حل مسئله
    • اجزای الگوریتم (محاسبات، تصمیم‌گیری، تکرار)
    • نمایش تصویری الگوریتم به وسیله‌ی فلوچارت
    • نمونه‌هایی از چند الگوریتم اولیه
  • مقدمات برنامه‌سازی (۱ جلسه)
    • متغیرها، انواع داده
    • دستورهای ورودی/خروجی
    • آشنایی با کدنویسی خوب (توضیح‌گذاری، جدانویسی)
    • محاسبات ریاضی (جمع، تفریق، ضرب، تقسیم، باقی‌مانده)
    • اولویت محاسبات
    • مقایسه
  • فرمت‌بندی ورودی/خروجی (۱ جلسه)
    • چاپ داده در خروجی کنسول
    • کنترل دقت نمایش اعداد در خروجی
    • چاپ اعداد صحیح، اعداد ممیزدار، رشته‌ها، و کاراکترها
    • خواندن  از ورودی با Scanner
  • دستورها (۳ جلسه)
    • دستورهای انتخاب (if, if/else, switch)
    • دستورهای تکرار (while, for, do/while)
    • تبدیل داده‌ها
    • ثابت‌ها (final)
    • عملگرهای منطقی
    • عملگر انتخاب ? :
  • توابع (۴ جلسه)
    • توابع ریاضی
    • توابع تصادفی
    • توابع زمان
    • حوزه‌های تعریف (file, function, block)
    • پشته در فراخوانی تابع
    • توابع بازگشتی
    • مقایسه توابع بازگشتی و غیربازگشتی
  • آزمون و خطایابی برنامه (۱ جلسه)
    • استفاده از دستورهای خروجی برای پیدا کردن خطا
    • استفاده از امکانات IDE برای پیدا کردن خطا
  • آرایه‌ها (۵ جلسه)
    • تعریف و به‌کارگیری آرایه‌ها
    • ارسال آرایه به تابع
    • جستجوی دودویی در آرایه
    • مرتب سازی آرایه
    • آرایه‌های چندبعدی
  • کاراکترها و رشته‌ها (۱ جلسه)
    • تبدیل کاراکترها
    • توابع رشته‌ای
    • دست‌کاری رشته‌ها
  • فایلها (۱ جلسه)
    • خواندن و نوشتن در فایلها
توضیحات

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

عنوان مهندسی نرم افزار ۱
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • پروژه پایانی: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach, 8th Edition. McGraw Hill
  • Russ Miles, Kim Hamilton. Learning UML 2.0. O’Reilly
طرح درس
  • مقدمه‌ای بر مهندسی نرم‌افزار (2 جلسه)
    • تعریف مهندسی نرم‌افزار، اهمیت آن، و مقایسه با سایر شاخه‌های مهندسی.
  • فرآیندهای مهندسی نرم‌افزار (4 جلسه)
    • مدل‌های فرآیند توسعه (مدل آبشاری، چابک، مدل اسپیرال) و مقایسه آن‌ها
  • برنامه‌ریزی پروژه نرم‌افزاری (2 جلسه)
    • مدیریت زمان، هزینه و منابع در پروژه‌های نرم‌افزاری
  • مدیریت ریسک در مهندسی نرم‌افزار (2 جلسه)
    • شناسایی، تحلیل، و کاهش ریسک‌ها در پروژه‌های نرم‌افزاری
  • جمع‌آوری و تحلیل نیازمندی‌ها (1 جلسه)
    • تکنیک‌های جمع‌آوری نیازمندی‌ها و ابزارهایی مانند Use Case
  • مستندسازی نیازمندی‌ها (1 جلسه)
    • نحوه تهیه سند نیازمندی‌ها (SRS) و ویژگی‌های یک سند جامع
  • مدل‌سازی نرم‌افزار با UML (4 جلسه)
    • استفاده از نمودارهای Use Case، Class، و Sequence برای مدل‌سازی
  • طراحی نرم‌افزار (1 جلسه)
    • اصول طراحی نرم‌افزار و طراحی سطح بالا
  • معماری نرم‌افزار  (1 جلسه)
    • الگوهای معماری (مانند MVC، Client-Server) و کاربرد آن‌ها
  • ابزارهای مدیریت پروژه (1 جلسه)
    • آشنایی با ابزارهایی مانند Jira و Trello برای مدیریت پروژه
  • مطالعه موردی (1 جلسه)
    • تحلیل و طراحی سیستم پروژه های دنیای واقعی
توضیحات

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

عنوان توسعه امن نرم افزار
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 4 نمره
  • پروژه مطالعاتی و ارائه: 6 نمره
منابع
  • LinuxFoundationX: Secure Software Development
  • OWASP Secure Coding Practices Guide
  • Gary McGraw: Software Security: Building Security In, Addison-Wesley, 2006
  • Mark Dowd, John McDonald, Justin Schuh: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities, Addison-Wesley, 2006
طرح درس
  • مقدمه‌ای بر توسعه امن نرم‌افزار (2 جلسه)
    • مفهوم امنیت نرم‌افزار و اهمیت آن.
    • تهدیدهای رایج در نرم‌افزارهای ناامن.
    • نقش امنیت در چرخه عمر توسعه نرم‌افزار (SDLC).
  • اصول توسعه امن (3 جلسه)
    • اصل حداقل مجوز (Principle of Least Privilege).
    • اعتبارسنجی ورودی‌ها (Input Validation).
    • مدیریت صحیح خطاها و استثناها.
    • امنیت داده‌ها (Data Confidentiality & Integrity).
  • شناخت و تحلیل تهدیدها (4 جلسه)
    • مدل‌سازی تهدیدها
    • معرفی OWASP Top 10 و تحلیل مثال‌ها.
  • معماری امن نرم‌افزار (3 جلسه)
    • طراحی با در نظر گرفتن امنیت (Secure by Design).
    • الگوهای طراحی امن.
    • مدیریت امنیت وابستگی‌ها (Dependency Management).
  • مدیریت اعتبارسنجی و احراز هویت (2 جلسه)
    • اصول مدیریت کاربران و رمزهای عبور.
    • استفاده از پروتکل‌های امن (مانند OAuth2)
    • حفاظت از توکن‌ها و اطلاعات حساس.
  • رمزنگاری و حفاظت از داده‌ها (2 جلسه)
    • معرفی اصول رمزنگاری (Symmetric & Asymmetric Encryption).
    • مدیریت کلیدها.
  • مدیریت آسیب‌پذیری‌ها و به‌روزرسانی‌ها (3 جلسه)
    • شناسایی آسیب‌پذیری‌ها با ابزارهای اسکن امنیتی.
    • مدیریت به‌روزرسانی‌ها و وصله‌های امنیتی.
    • فرآیند گزارش‌دهی و رفع آسیب‌پذیری‌ها.
  • تست امنیت نرم‌افزار (3 جلسه)
    • آشنایی با روش‌های تست نفوذ
    • ابزارهای تست امنیت
    • انجام تست‌های Static Analysis و Dynamic Analysis.
  • بررسی و تحلیل کد (2 جلسه)
    • بهترین روش‌ها برای تحلیل کد از نظر امنیتی.
    • آشنایی با Code Review و نقش آن در امنیت.
    • ابزارهای تحلیل کد
  • مدیریت چرخه عمر امن نرم‌افزار (SDLC) (2 جلسه)
    • ادغام امنیت در DevOps.
    • مدیریت پیوسته امنیت در فرایندهای CI/CD.
    • ابزارهای مدیریت امنیت در DevSecOps
توضیحات

هدف اصلی این درس، آموزش مفاهیم و اصول پایه‌ای امنیت نرم‌افزار به دانشجویان و توانمندسازی آن‌ها در شناسایی و مدیریت تهدیدات امنیتی در فرآیند توسعه نرم‌افزار است. در این درس دانشجویان با اهمیت امنیت در چرخه عمر توسعه نرم‌افزار (SDLC) و نقش آن در جلوگیری از آسیب‌پذیری‌ها و تهدیدات سایبری آشنا می‌شوند. همچنین، مفاهیم کلیدی مانند طراحی امن، مدیریت صحیح اعتبارسنجی ورودی‌ها، رمزنگاری داده‌ها و اصول مدیریت کاربران به تفصیل بررسی خواهد شد. علاوه بر این، دانشجویان یاد می‌گیرند چگونه با استفاده از ابزارهای تخصصی، تست‌های امنیتی انجام داده و آسیب‌پذیری‌های نرم‌افزار را شناسایی و رفع کنند. این درس همچنین به معرفی استانداردها و روش‌های بین‌المللی امنیت نرم‌افزار مانند OWASP Top 10 می‌پردازد و دانشجویان را با روش‌های تحلیل تهدیدات و مدیریت به‌روزرسانی‌ها آشنا می‌سازد. در نهایت، هدف این است که دانشجویان با پیاده‌سازی اصول امنیتی در پروژه‌های عملی، توانایی طراحی و توسعه سیستم‌های امن را کسب کنند و آماده رویارویی با چالش‌های امنیتی دنیای واقعی شوند.

عنوان روش پژوهش و ارایه
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۲
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • ارائه: 4 نمره
  • فعالیت اضافی (فعالیتهای جانبی ): ۱ نمره‌ی اضافی
منابع
  • Booth WC, Colomb GG, Williams JM. The Craft of Research. 4th ed. Chicago: University of Chicago Press; 2016.
  • Creswell JW. Research Design: Qualitative, Quantitative, and Mixed Methods Approaches. 4th ed. Thousand Oaks, CA: Sage Publications; 2013.
  • Alley M. The Craft of Scientific Presentations: Critical Steps to Succeed and Critical Errors to Avoid. 2nd ed. New York: Springer; 2013.
  • Day RA, Gastel B. How to Write and Publish a Scientific Paper. 8th ed. Santa Barbara, CA: ABC-CLIO; 2016.
  • Silvia PJ. How to Write a Lot: A Practical Guide to Productive Academic Writing. 2nd ed. Washington, DC: American Psychological Association; 2019.
طرح درس
  • مقدمه‌ای بر پژوهش علمی (2 جلسه)

    • تعریف پژوهش
    • انواع پژوهش (بنیادی، کاربردی، و توسعه‌ای)
    • نقش پژوهش در پیشرفت علمی
  • انتخاب موضوع و بیان مسئله (2 جلسه)

    • شناسایی موضوعات پژوهشی
    • محدود کردن دامنه پژوهش
    • تدوین پرسش‌ها و اهداف پژوهش
  • روش‌های جستجوی منابع علمی (2 جلسه)

    • استفاده از پایگاه‌های داده علمی
    • ارزیابی منابع علمی معتبر
    • مدیریت منابع با استفاده از ابزارهایی مانند EndNote و Mendeley
  • روش‌های جمع‌آوری داده‌ها (2 جلسه)

    • روش‌های کمی و کیفی
    • طراحی پرسشنامه و مصاحبه
    • استفاده از ابزارهای تحلیل داده
  • ساختار مقاله علمی (1 جلسه)

    • اجزای مقاله (چکیده، مقدمه، روش‌ها، نتایج، بحث و نتیجه‌گیری)
    • اصول نگارش علمی
  • اصول اخلاقی در پژوهش (1 جلسه)

    • سرقت علمی و اهمیت ارجاع‌دهی
    • اصول کد اخلاق در پژوهش
  • روش‌های ارائه نتایج (2 جلسه)

    • اصول تهیه اسلاید
    • تکنیک‌های ارائه شفاهی
    • استفاده از ابزارهایی مانند PowerPoint و LaTeX
توضیحات

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

عنوان مهندسی نرم افزار ۲
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • پروژه پایانی: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach, 8th Edition. McGraw Hill
  •  Eric Freeman, Elisabeth Robson. Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software, 2nd Edition. O'Reilly Media
طرح درس
  • مروری بر مهندسی نرم افزار (1 جلسه)
    • مرور مفاهیم پایه
    • مرور کلی بر مطالب درس مهندسی نرم‌افزار 1.
  • پیاده‌سازی نرم‌افزار (2 جلسه)
    • اصول کدنویسی حرفه‌ای، نوشتن کد خوانا و قابل نگهداری
  • مقدمه‌ای بر الگوهای طراحی (1 جلسه)
    • معرفی الگوهای طراحی (Design Patterns) و دسته‌بندی آن‌ها
  • الگوهای طراحی Creational (2 جلسه)
    • بررسی الگوهای Singleton و Factory Method.
  • الگوهای طراحی Structural  (2 جلسه)
    • معرفی الگوهای Adapter، Composite و Decorator
  • الگوهای طراحی Behavioral (2 جلسه)
    • بررسی الگوهای Observer، Strategy و State
  • آزمون نرم‌افزار (3 جلسه)
    • مفاهیم اولیه اهمیت آزمون
    • انواع آزمون (واحد، سیستمی، کاربرپذیری)
    • ابزارها و تکنیک‌ها تعریف آزمون
  • مدیریت پیکربندی نرم‌افزار (1 جلسه)
    • مفاهیم مدیریت نسخه
  • نگهداری نرم‌افزار (2 جلسه)
    • چالش‌ها و تکنیک‌های نگهداری و مدیریت تغییرات
  • توسعه چابک و DevOps (2 جلسه)
    • معرفی اصول Agile و DevOps و ابزارهای مرتبط
  • بهبود کیفیت نرم‌افزار (2 جلسه)
    • معرفی تکنیک‌های تضمین کیفیت
    • متریک‌های ارزیابی
توضیحات

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

عنوان مهندسی نرم افزار ۱
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • پروژه پایانی: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Roger S. Pressman, Bruce Maxim. Software Engineering: A Practitioner's Approach, 8th Edition. McGraw Hill
  • Russ Miles, Kim Hamilton. Learning UML 2.0. O’Reilly
طرح درس
  • مقدمه‌ای بر مهندسی نرم‌افزار (2 جلسه)
    • تعریف مهندسی نرم‌افزار، اهمیت آن، و مقایسه با سایر شاخه‌های مهندسی.
  • فرآیندهای مهندسی نرم‌افزار (4 جلسه)
    • مدل‌های فرآیند توسعه (مدل آبشاری، چابک، مدل اسپیرال) و مقایسه آن‌ها
  • برنامه‌ریزی پروژه نرم‌افزاری (2 جلسه)
    • مدیریت زمان، هزینه و منابع در پروژه‌های نرم‌افزاری
  • مدیریت ریسک در مهندسی نرم‌افزار (2 جلسه)
    • شناسایی، تحلیل، و کاهش ریسک‌ها در پروژه‌های نرم‌افزاری
  • جمع‌آوری و تحلیل نیازمندی‌ها (1 جلسه)
    • تکنیک‌های جمع‌آوری نیازمندی‌ها و ابزارهایی مانند Use Case
  • مستندسازی نیازمندی‌ها (1 جلسه)
    • نحوه تهیه سند نیازمندی‌ها (SRS) و ویژگی‌های یک سند جامع
  • مدل‌سازی نرم‌افزار با UML (4 جلسه)
    • استفاده از نمودارهای Use Case، Class، و Sequence برای مدل‌سازی
  • طراحی نرم‌افزار (1 جلسه)
    • اصول طراحی نرم‌افزار و طراحی سطح بالا
  • معماری نرم‌افزار  (1 جلسه)
    • الگوهای معماری (مانند MVC، Client-Server) و کاربرد آن‌ها
  • ابزارهای مدیریت پروژه (1 جلسه)
    • آشنایی با ابزارهایی مانند Jira و Trello برای مدیریت پروژه
  • مطالعه موردی (1 جلسه)
    • تحلیل و طراحی سیستم پروژه های دنیای واقعی
توضیحات

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

عنوان مفاهیم پیشرفته در رایانش امن
مقطع تحصیلی کارشناسی ارشد
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف : 6 نمره
  • پروژه مطالعاتی و ارائه: 4 نمره
منابع
  • Bishop, Christopher. Pattern Recognition and Machine Learning. Springer, 2006.
  • Hastie, Trevor, et al. The Elements of Statistical Learning. Springer, 2009.
  • Sutton, Richard. Reinforcement Learning: An Introduction. MIT Press, 2018.
  • Han, Jiawei, Kamber, Micheline, Pei, Jian. Data Mining: Concepts and Techniques. Morgan Kaufmann, 2011
طرح درس
  • مقدمه‌ای بر یادگیری ماشین و امنیت سایبری (1 جلسه)

    • تعریف یادگیری ماشین و انواع آن
    • ارتباط یادگیری ماشین با امنیت سایبری
    • مروری بر چالش‌های امنیت سایبری
    • معرفی ابزارهای کاربردی مانند Python و Scikit-learn
  • آشنایی با داده‌های امنیت سایبری (2 جلسه)

    • منابع داده در امنیت سایبری (مثل logها، شبکه، و فایل‌های سیستم)
    • آماده‌سازی و پیش‌پردازش داده‌ها
    • تکنیک‌های کاهش نویز و شناسایی داده‌های گمشده
  • روش‌های یادگیری تحت نظارت و کاربردهای آن در امنیت سایبری (2 جلسه)

    • رگرسیون و طبقه‌بندی
    • شناسایی بدافزارها و اسپم‌ها با الگوریتم‌های تحت نظارت
    • کاربرد مدل‌های خطی و SVM
  • روش‌های یادگیری بدون نظارت و خوشه‌بندی در امنیت سایبری (2 جلسه)

    • خوشه‌بندی داده‌های شبکه
    • شناسایی رفتارهای غیرعادی در ترافیک شبکه
    • کاربرد الگوریتم‌هایی مثل K-Means و DBSCAN
  • یادگیری نیمه‌نظارت‌شده و کاربردهای آن (2 جلسه)

    • ترکیب داده‌های برچسب‌دار و بدون برچسب
    • تشخیص بدافزار با یادگیری نیمه‌نظارت‌شده
    • معرفی الگوریتم‌های مرتبط
  • مدل‌های یادگیری عمیق و کاربردهای آن در امنیت سایبری (1 جلسه)

    • شبکه‌های عصبی عمیق (DNN)
    • کاربرد CNN در تحلیل ترافیک شبکه
    • کاربرد RNN در تشخیص رفتارهای مشکوک
  • تشخیص ناهنجاری‌ها (Anomaly Detection) (2 جلسه)

    • تعریف و انواع ناهنجاری‌ها
    • کاربرد در شناسایی حملات سایبری (مثل DDoS و APT)
    • الگوریتم‌های تشخیص ناهنجاری (Isolation Forest، PCA)
  • تحلیل حملات و بدافزارها با یادگیری ماشین (2 جلسه)

    • شناسایی و طبقه‌بندی بدافزارها
    • تحلیل رفتار بدافزار با استفاده از ویژگی‌های استخراج‌شده
    • معرفی تکنیک‌های تحلیل دینامیک و استاتیک
  • شناسایی حملات فیشینگ و اسپم (1 جلسه)

    • تحلیل داده‌های ایمیل
    • ویژگی‌های قابل‌استفاده در شناسایی فیشینگ
    • کاربرد الگوریتم‌های یادگیری ماشین در تشخیص اسپم
  • تحلیل لاگ‌ها و رفتار کاربران (1 جلسه)

    • استخراج ویژگی‌های رفتاری از لاگ‌ها
    • شناسایی رفتارهای غیرعادی کاربران داخلی
    • کاربرد الگوریتم‌های طبقه‌بندی و خوشه‌بندی
  • امنیت داده‌ها و رمزنگاری با یادگیری ماشین (2 جلسه)

    • شناسایی ضعف‌های رمزنگاری با یادگیری ماشین
    • تحلیل داده‌های رمزنگاری‌شده برای شناسایی نفوذ
    • مطالعه موردی: حملات مبتنی بر زمان (Timing Attacks)
  • کاربرد پردازش زبان طبیعی (NLP) در امنیت سایبری (1 جلسه)

    • تحلیل داده‌های متنی (ایمیل‌ها، گزارش‌ها)
    • کاربرد NLP در شناسایی فیشینگ و تهدیدات سایبری متنی
    • ابزارها و کتابخانه‌های NLP
  • مدیریت ویژگی‌ها و انتخاب بهترین مدل (1 جلسه)

    • تکنیک‌های انتخاب ویژگی‌ها
    • مقایسه مدل‌ها با استفاده از معیارهای عملکرد
    • بهینه‌سازی مدل‌ها با تکنیک‌هایی مثل Grid Search
  • مباحث اخلاقی و قانونی در استفاده از یادگیری ماشین در امنیت (1 جلسه)

    • چالش‌های حفظ حریم خصوصی
    • اصول اخلاقی در توسعه سیستم‌های مبتنی بر یادگیری ماشین
    • استانداردها و قوانین مرتبط
  • بررسی مطالعات موردی و پروژه‌های واقعی (3 جلسه)

    • مطالعه پروژه‌های موفق و چالش‌های امنیت سایبری
    • تحلیل نقاط ضعف و قوت سیستم‌های موجود
توضیحات

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

عنوان اصول علم ربات
مقطع تحصیلی کارشناسی
مکان برگزاری دانشکده مهندسی برق و کامپیوتر
تعداد واحد ۳
نحوه ارزیابی
  • آزمون پایانی: 10 نمره
  • تکالیف کلاسی : 6 نمره
  • پروژه پایانی و ارائه: 4 نمره
  • فعالیت اضافی (پروژه های جانبی ): ۱ نمره‌ی اضافی
منابع
  • Spong MW, Hutchinson S, Vidyasagar M. Robot Modeling and Control 2nd edition. Hoboken, NJ: Wiley; 2020.
  • Craig JJ. Introduction to Robotics: Mechanics and Control. 3rd ed. Upper Saddle River, NJ: Pearson; 2004.
  • Siciliano B, Khatib O, editors. Springer Handbook of Robotics. 2nd ed. Berlin: Springer; 2016
طرح درس
  • مقدمه‌ای بر مدل‌سازی ربات‌ها (2 جلسه)

    • آشنایی با مفهوم ربات و کاربردهای آن.
    • مفاهیم فضای پیکربندی، فضای حالت و فضای کاری.
    • معرفی دسته‌بندی ربات‌ها و سیستم‌های رباتیک.
  •  بررسی آرایش‌های سینماتیکی رایج ربات‌ها (1 جلسه)

    • معرفی ساختارهای مختلف: RRR، RRP، SCARA و غیره.
    • مقایسه مزایا و معایب ساختارهای مختلف.
  • مرور حرکت‌های صلب و نمایش موقعیت‌ها (1 جلسه)

    • مفهوم حرکت صلب و نمایش موقعیت‌ها.
    • چرخش‌ها در صفحه و سه‌بعدی.
  • ترکیب چرخش‌ها و پارامتریزاسیون آنها (1 جلسه)

    • ترکیب چرخش‌ها و نمایش با زوایای اویلر.
    • معرفی نمایش Roll, Pitch, Yaw و سایر روش‌ها.
  • جلسه 5: حرکات صلب و ماتریس‌های تبدیل همگن (1 جلسه)

    • حرکات صلب و نمایش آن‌ها با ماتریس‌های همگن.
    • استفاده از ماتریس‌های تبدیل برای تحلیل.
  • سینماتیک مستقیم و معرفی زنجیره‌های سینماتیکی (2 جلسه)

    • تعریف زنجیره‌های سینماتیکی و مثال‌های عملی.
    • مرور سینماتیک مستقیم.
  • قواعد دنویت-هارتنبرگ و کاربرد آن‌ها (32 جلسه)

    • معرفی روش DH برای تعیین فریم‌ها.
    • مثال‌های کاربردی از ربات‌های رایج.
  • تحلیل سرعت‌ها در ربات‌ها (3 جلسه)

    • سرعت زاویه‌ای و ماتریس‌های اسکew.
    • استخراج معادلات جاکوبی برای ربات‌ها.
    • تحلیل نقاط تکین و تأثیر آن‌ها بر عملکرد.
  • سینماتیک معکوس (3 جلسه)

    • معرفی مفهوم کینماتیک معکوس و کاربردهای آن.
    • روش‌های هندسی و عددی حل مسائل کینماتیک معکوس.
  • مقدمه‌ای بر دینامیک ربات‌ها (2 جلسه)

    • قوانین اویلر-لاگرانژ و انگیزه استفاده از آنها.
    • مفاهیم انرژی جنبشی و پتانسیل.
  • معادلات دینامیکی ربات‌ها (3 جلسه)

    • استخراج معادلات حرکت برای ربات‌های چندلینکی.
    • تحلیل مفاهیم مرتبط با نیروی اینرسی و گشتاور.
  • طراحی کنترل‌کننده‌ها برای ربات‌ها (2 جلسه)

    • معرفی کنترل بازخوردی و کاربرد آن در رباتیک.
    • کنترل موقعیت و سرعت.
  •  
توضیحات

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

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