This course introduces fundamental concepts in algorithm design, focusing on efficiency, optimization, and problem-solving techniques. Students will learn how to analyze algorithms using Big-O notation, explore different algorithm design paradigms (Divide & Conquer, Greedy, Dynamic Programming), and apply them to real-world software engineering challenges. By the end of the course, students will be able to design, analyze, and implement algorithms efficiently.

این درس به بررسی مفاهیم اساسی و روشهای طراحی و پیادهسازی زبانهای برنامهنویسی میپردازد. دانشجویان با نحوهی تعریف نحوی (Syntax) و معنایی (Semantics) زبانها، روشهای تجزیه (Parsing)، ترجمه و تفسیر (Interpretation & Compilation)، مدیریت حافظه، و ویژگیهای زبانهای سطح بالا آشنا میشوند.
اهداف درس:
درک اصول طراحی زبانهای برنامهنویسی
آشنایی با انواع زبانها و پارادایمهای برنامهنویسی
یادگیری نحوهی تعریف گرامر زبان با استفاده از BNF و EBNF
آشنایی با فرآیند تجزیه و ایجاد درخت نحوی
درک روشهای پیادهسازی و اجرای زبانها، از جمله تفسیر و ترجمه
بررسی مدیریت حافظه و مفاهیم مرتبط با تخصیص و بازیابی حافظه
مطالعهی ویژگیهای پیشرفته مانند برنامهنویسی شیگرا، تابعی، و منطقی
پیشنیازها:
مفاهیم پایهای برنامهنویسی
نظریه زبانها و ماشینها
اصول طراحی کامپایلر
شیوهی ارزیابی:
تمرینات عملی و پروژههای کدنویسی
آزمونهای میانترم و پایانترم
ارائه و تحلیل زبانهای برنامهنویسی موجود
منابع پیشنهادی:
"Programming Language Pragmatics" - Michael L. Scott
"Concepts of Programming Languages" - Robert W. Sebesta
"Engineering a Compiler" - Keith D. Cooper & Linda Torczon
- استاد: Mohammad Hajarian

در این درس دانشجویان با چرخه عمر توسعه سیستم (SDLC) آشنا خواهند شد، از جمله گردآوری نیازمندیها، مدلسازی، طراحی، پیادهسازی و ارزیابی.
از طریق مطالعات موردی عملی و تمرینهای کاربردی، دانشجویان مهارتهایی در مدلسازی فرآیندها، نمودارهای جریان داده (DFD)، نمودارهای موجودیت-رابطه (ERD) و نمونهسازی اولیه (Prototyping) کسب خواهند کرد. همچنین، این دوره به روشهای چابک (Agile)، زبان مدلسازی UML و روندهای نوظهور در توسعه سیستمها میپردازد.
در پایان این دوره، دانشجویان قادر خواهند بود نیازهای کسبوکار را تحلیل کرده، راهکارهای سیستمی کارآمد طراحی کنند و بهترین شیوهها را در مدیریت پروژههای نرمافزاری به کار گیرند.
- استاد: Mohammad Hajarian

This course provides an in-depth exploration of how Artificial Intelligence (AI), gamification, and social networking principles can be integrated to create engaging and personalized user experiences in web applications. Participants will gain insights into the fundamentals of each area and learn how to apply AI techniques, particularly recommendation systems, to enhance the functionality and user engagement of social web applications.
- استاد: Mohammad Hajarian