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

مدرس: گواهی: رسمی دوزبانه
ترم: پیش‌نیاز: برنامه‌سازی پایتون
زمان ارائه: محل برگزاری: کلاس مجازی

هدف کلی

هدف از این درس، آشنایی دانش‌جویان با مهارت‌های برنامه‌‌سازی است که در مسابقات برنامه‌‌سازی مانند مسابقات بین‌المللی 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.