آشنایی با مسابقات برنامهسازی
مدرس: کمیته علمی مسابقات برنامهسازی | گواهی: رسمی دوزبانه |
ترم: مهر و آبان ۱۴۰۳ | پیشنیاز: برنامهسازی پایتون |
زمان ارائه: یکشنبه و سهشنبه ۱۶:۳۰ تا ۱۸:۰۰ | محل برگزاری: کلاس مجازی |
هدف کلی
هدف از این درس، آشنایی دانشجویان با مهارتهای برنامهسازی است که در مسابقات برنامهسازی مانند مسابقات بینالمللی رایان و ICPC مورد استفاده قرار میگیرد. فرض بر این است که دانشجویان با یکی از زبانهای برنامهسازی مانند پایتون یا سی آشنا هستند.
سرفصلها
- معرفی مسابقات برنامهسازی (۱ جلسه)
- برنامه نویسی رقابتی چیست؟
- تاریخچه و مسابقات مهم برنامه سازی
- فواید برنامه نویسی رقابتی
- آشنایی با سبک سوال های مسابقات برنامه سازی
- از کجا شروع کنیم و چطور تمرین کنیم؟
- مقدمات دادهساختارها (۱ جلسه)
- آشنایی با داده ساختارها
- لیست پیوندی
- پشته
- چند استفاده عملی از داده ساختارها برای حل مسئله
- پردازش رشتهها (۲ جلسه)
- تکنیکهای خواندن ورودی
- ساختاریابی در متن
- جستجوی سریع (۲ جلسه)
- جستجوی دودویی
- درخت بازه
- الگوریتمهای پایه گراف (۲ جلسه)
- پیادهسازی گراف
- DFS و کاربردهای آن
- BFS و کاربردهای آن
- مرتبسازی توپولوژیکی
- کار با بیتها (۱ جلسه)
- استفاده کار با بیتها
- استفاده از بیتها برای کار با زیرمجموعهها
- مسائل نمونه و اشتباهات رایج
- شبیهسازی (۱ جلسه)
- شبیهسازی رویداد گسسته خطی
- شبیهسازی رویداد گسسته دورهای
- عملیاتی کردن کد (۲ جلسه)
- تکنیکهای دیباگ کردن
- بهینهسازی کد
ارزیابی
- تمرینهای برنامهسازی هفتگی
منابع
- A. Laaksonen. Guide to Competitive Programming: Learning and Improving Algorithms Through Contests. Springer, 2020.
- S. Halim, F. Halim, and S. Effendy. Competitive Programming 4. The new lower bound of programming contests in the 2020s. Lulu, 2020.