مبانی برنامه‌سازی (پایتون)

Fundamentals of Programming (Python)

شماره درس: ۴۰۱۵۳ تعداد واحد: ۳
مقطع: کارشناسی نوع درس: نظری
پیش‌نیاز: – هم‌نیاز: –

اهداف درس

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

ریز مواد

  1. مفاهیم اولیه (۱ جلسه)
    1. تعاریف اولیه: الگوریتم، ‌برنامه، حل مسئله
    2. معرفی اجزای اصلی کامپیوتر
    3. تاریخچه‌ی رشد زبان‌های برنامه‌سازی
    4. آشنایی با زبان پایتون
    5. مراحل ساخت و اجرای یک برنامه
  2. مقدمات برنامه‌سازی (۱ جلسه)
    1. مقادیر، متغیرها و انواع داده‌‌ها
    2. عملگرها و تقدم عملیات
    3. تبدیل داده‌ها
    4. دستورات ورودی و خروجی
    5. آشنایی با کدنویسی خوانا (توضیح‌گذاری، جدانویسی)
  3. ساختار انتخاب (۱ جلسه)
    1. عبارات بولی
    2. عملگرهای مقایسه‌ای و منطقی
    3. دستور if-else
    4. انتخاب‌های چندگانه و تودرتو
  4. ماژول‌ها (۱ جلسه)
    1. ماژول‌ها و نحوه‌ی استفاده از آن‌ها
    2. آشنایی با گرافیک لاک‌پشتی
    3. دستورات اولیه‌ برای رسم اشکال
    4. تکرار با حلقه‌ی for
    5. تعریف توابع
    6. نحوه‌ی ایجاد یک ماژول
  5. توابع (۲ جلسه)
    1. جریان اجرا
    2. پارامترها و آرگومان‌ها
    3. حوزه‌ی تعریف متغیرها
    4. توابع خروجی‌دار
    5. مستندسازی توابع
    6. نمونه‌هایی از توابع عددی
  6. ساختارهای تکرار (۱ جلسه)
    1. حلقه‌های شرطی و شمارشی
    2. حلقه‌ی while
    3. دستورات break و continue
    4. انواع حلقه‌های شرطی
    5. حلقه‌های تودرتو
  7. آزمون و خطایابی (۱ جلسه)
    1. دنبال کردن برنامه
    2. کشف خطا با دستورات خروجی
    3. استفاده از امکانات IDE برای خطایابی
    4. آزمون واحد
  8. محاسبات اعشاری (۱ جلسه)
    1. سیستم‌­های عددی (دودویی و ده‌دهی)
    2. اعداد اعشاری ممیز ثابت و ممیز شناور
    3. خطا در محاسبات اعشاری
    4. پیدا کردن ریشه به روش پالایش متوالی
    5. محاسبه‌ی سری‌ها
  9. رشته‌ها (۱ جلسه)
    1. عملگرهای رشته‌ای
    2. مقایسه‌ی رشته‌ها
    3. پیمایش رشته‌ها
    4. توابع و متدهای رشته‌ای
    5. فرمت‌بندی رشته‌ها
  10. لیست‌ها (۱ جلسه)
    1. آدرس‌دهی و برش لیست‌ها
    2. تغییر لیست‌ها
    3. توابع و متدهای لیستی
    4. چندتایی‌ها
    5. لیست‌های تودرتو
  11. الگوریتم‌های بازگشتی (۲ جلسه)
    1. توابع بازگشتی
    2. جریان اجرای توابع بازگشتی
    3. حل مسئله به روش بازگشتی
    4. فراکتال‌ها
    5. مقادیر پیش‌فرض پارامترها
  12. الگوریتم‌های جست‌وجو و مرتب‌سازی (۲ جلسه)
    1. جست‌وجوی خطی و دودویی
    2. الگوریتم‌های مرتب‌سازی (انتخابی، حبابی)
    3. روش تقسیم و حل: مرتب‌سازی ادغامی
    4. آشنایی با پیچیدگی الگوریتم‌ها
  13. توابع تصادفی و شبیه‌سازی (۲ جلسه)
    1. تولید اعداد تصادفی
    2. روش مونت کارلو: (تخمین عدد π، هشت وزیر)
    3. توزیع رخ‌دادها
    4. نمونه‌گیری تصادفی
    5. گشت تصادفی
  14. پرونده‌ها (۱ جلسه)
    1. باز کردن پرونده‌های متنی
    2. روش‌های خواندن از پرونده
    3. نوشتن در پرونده‌ها
    4. پرونده‌های دودویی
    5. خواندن صفحات وب
  15. فرهنگ‌های داده‌ای و مجموعه‌ها (۱ جلسه)
    1. کاربرد فرهنگ‌های‌ داده‌ای
    2. نمایش ماتریس‌های تنک
    3. برنامه‌ریزی پویا
    4. مجموعه‌ها و عملگرهای مجموعه‌ای
  16. برنامه‌سازی شیءگرا (۲ جلسه)
    1. آشنایی با رده‌ها و اشیاء
    2. نحوه‌ی تعریف یک رده
    3. متدها و ویژگی‌ها
    4. سازنده‌ها
    5. مثال‌هایی از رده‌ها
  17. برنامه‌سازی رویدادرانه (۱ جلسه)
    1. رویدادها و گرداننده‌ها
    2. رویدادهای صفحه‌کلید
    3. رویدادهای ماوس
    4. رویدادهای زمانی
  18. محاسبات عددی (۲ جلسه)
    1. آشنایی با کتابخانه‌های NumPy و SciPy
    2. آرایه‌ها و عملگرهای آرایه‌ای
    3. ثابت‌ها و توابع ویژه
    4. چندجمله‌ای‌ها
    5. انتگرال، انتگرال دوگانه
    6. یافتن ریشه‌ی معادلات
    7. درون‌یابی
    8. ماتریس‌ها و توابع جبر خطی
    9. حل معادلات خطی
  19. نمایش نمودار (۱ جلسه)
    1. آشنایی با کتابخانه‌ی matplotlib
    2. رسم نمودار
    3. رسم هیستوگرام
    4. نمودارهای چندگانه
  20. واسط کاربر گرافیکی (۱ جلسه)
    1. آشنایی با ماژول Tkinter
    2. ساخت واسط کاربر ساده
    3. افزودن عناصر
    4. افزودن گرداننده‌ها
  21. مدیریت استثناها (۱ جلسه)
    1. کارکرد استثناها
    2. مدیریت استثناها
    3. دستور try-except
    4. دستور finally
  22. پردازش متن (۱ جلسه - اختیاری)
    1. آشنایی با ماژول re
    2. عبارات منظم
    3. تطبیق الگو‌ها
    4. جست‌وجو و جای‌گزینی متون
  23. شیء‌گرایی پیش‌رفته (۱ جلسه - اختیاری)
    1. وراثت
    2. چندریختی
    3. بارگذاری عملگرها

ارزیابی

  1. تمرین‌های برنامه‌سازی و پروژه: ۶ نمره
  2. آزمونک‌ها: ۲ نمره
  3. آزمون‌‌ها (میان‌ترم و پایان‌ترم): ۱۲ نمره
  4. مسابقه‌ی برنامه‌نویسی: ۱ نمره اضافی

مراجع

  1. P. Wentworth, J. Elkner, A. B. Downey, C. Meyers. How to Think Like a Computer Scientist: Learning with Python. 3rd Edition, Open Book Project, 2011.
  2. J. Campbell, P. Gries, J. Montojo, G. Wilson. Practical Programming: An Introduction to Computer Science Using Python. The Pragmatic Bookshelf, 2009.
  3. J. M. Zelle. Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates, 2004.