آشنایی با مسابقات برنامه‌سازی

Introduction to Programming Contests

شماره درس: ۹۰۲۰ تعداد واحد: ۳
نوع درس: نظری پیش‌نیاز: برنامه‌سازی پایتون

اهداف درس

هدف از اين درس، آشنایی دانش‌جویان با مهارت‌های برنامه‌‌سازی است که در مسابقات برنامه‌‌سازی مانند مسابقات بین‌المللی icpc مورد استفاده قرار می‌گیرد. فرض بر این است که دانشجویان با یکی از زبان‌های برنامه‌سازی مانند پایتون یا سی آشنا هستند.

ریز مواد

  1. معرفی مسابقات برنامه‌سازی (۱ جلسه)
    • برنامه نویسی رقابتی چیست؟
    • تاریخچه و مسابقات مهم برنامه سازی
    • فواید برنامه نویسی رقابتی
    • آشنایی با سبک سوال های مسابقات برنامه سازی
    • از کجا شروع کنیم و چطور تمرین کنیم؟
  2. مقدمات داده‌ساختارها (۱ جلسه)
    • آشنایی با داده ساختارها
    • لیست پیوندی
    • پشته
    • چند استفاده عملی از داده ساختارها برای حل مسئله
  3. پردازش رشته‌ها (۲ جلسه)
    • تکنیک‌های خواندن ورودی
    • ساختاریابی در متن
  4. جستجوی سریع (۲ جلسه)
    • جستجوی دودویی
    • درخت بازه
  5. الگوریتم‌های پایه گراف (۲ جلسه)
    • پیاده‌سازی گراف
    • DFS و کاربردهای آن
    • BFS و کاربردهای آن
    • مرتب‌سازی توپولوژیکی
  6. کار با بیت‌ها (۱ جلسه)
    • استفاده کار با بیت‌ها
    • استفاده از بیت‌ها برای کار با زیرمجموعه‌ها
    • مسائل نمونه و اشتباهات رایج
  7. شبیه‌سازی (۱ جلسه)
    • شبیه‌سازی رویداد گسسته خطی
    • شبیه‌سازی رویداد گسسته دوره‌ای
  8. عملیاتی کردن کد (۲ جلسه)
    • تکنیک‌‌های دی‌باگ کردن
    • بهینه‌سازی کد

ارزیابی

  • تمرین‌های برنامه‌سازی هفتگی

مراجع

  1. A. Laaksonen. Guide to Competitive Programming: Learning and Improving Algorithms Through Contests. Springer, 2020.
  2. S. Halim, F. Halim, and S. Effendy. Competitive Programming 4. The new lower bound of programming contests in the 2020s. Lulu, 2020.