طرح درس دورهٔ برنامه‌نویسی مقدماتی تا پیشرفته با پایتون ۳ (Python 3 Programming)
روزسرفصلزمان (ساعت)
جلسهٔ اول: معرفی، راه‌اندازی، نصب و نوشتن اولین برنامهٔ پایتون و آشنایی با عملگرها و ساختمان‌های دادهٔ ابتداییچیستی و چرایی پایتون، فلسفهٔ پایتون، تفاوت‌های نسخه‌های ۲ و ۳ زبان پایتون۱
نصب ابزارهای مورد نیاز و نصب و فعال‌سازی پایچارم و کار با محیط یکپارچهٔ برنامه‌نویسی پایچارم، کار با shell پایتون و تفاوت‌های آن‌ها، بررسی محل شروع اجرای برنامه‌ها در پایتون۰.۵
نحو سادهٔ زبان پایتون و تفاوت‌های آن با سایر زبان‌ها، معرفی برخی از پروپوزال‌های پایتون۰.۵
انواع ارورها در زبان‌های برنامه‌نویسی، مفاهیم زبان‌های برنامه‌نویسی سطح بالا و سطح پایین، تفاوت فرایند ترجمه و تفسیر، تفاوت تایپ‌سیستم‌های پویا و ایستا۰.۵
متغیرها و انواع ابتدایی داده، انواع عملگرها، نکات مرتبط با تعریف رشته‌های متنی۱.۵
جلسهٔ دوم: ساختارهای کنترلی و ساختمان‌های دادهٔ کامپازیت و تابع در پایتونکار با سیکوئنس‌ها شامل استرینگ و لیست و تاپل، فرمتینگ رشته‌های متنی، ارزش‌گذاری‌های بولین، ساخت لیست از روی یک لیست دیگر، روش‌های اسلایسینگ لیست‌ها۱
ساختارهای کنترلی شامل if و for و while و متعلقات آن‌ها، تابع range()، استفاده از break و continue و else در حلقه‌ها، عبارت pass۱
ساختارهای دادهٔ ست و دیکشنری و تکنیک‌های استفاده از حلقه روی آن‌ها، مقایسهٔ بین ساختمان‌های داده و دیدن نمونه‌هایی از هر کدام در عمل۱
مفاهیم تابع و انواع حالت‌های آرگومان‌ها، کار با docstring، مثال‌هایی از توابع بازگشتی۱
جلسهٔ سوم: ماژول، پکیج و مدیریت و نصب آن‌هاحل تمرین‌ها و آشنایی مقدماتی با مفاهیم طراحی الگوریتم۱
مفاهیم ماژول و نحوهٔ ایجاد یا استفاده از آن‌ها، تابع dir()۱
معرفی ماژول‌های time و random و math از کتابخانهٔ استاندارد پایتون۱
پکیج‌ها در پایتون، کار با مدیر پکیج‌های pip در پایتون و VirtualEnv۱
جلسهٔ چهارم: مرور مطالب گفته شده و استفاده از یکی از کتابخانه‌های سطح بالاتر پایتون برای نوشتن یک برنامهٔ کاربردی، آشنایی با برخی توابع built-in، آشنایی با stackoverflow و نحوهٔ هوشمندانه سوال پرسیدنحل تمرین‌ها۱
مرور مطالب بیان شده در این دوره و آشنایی با توابع built-in بیشتر در پایتون۰.۷۵
بررسی و کار با یکی از کتابخانه‌های سطح بالاتر زبان پایتون برای نوشتن یک برنامهٔ کاربردی۱.۵
توضیح موضوع پروژه، نحوهٔ هوشمندانه سوال پرسیدن در اینترنت و آشنایی با stackoverflow۰.۷۵
جلسهٔ پنجم: شی‌گرایی در پایتونحل تمرین‌ها۰.۵
مفاهیم شی‌گرایی۰.۵
کلاس و آبجکت در پایتون، کار با Instance Objects و Method Objects در پایتون، کار با متغیرها در سطح کلاس یا Instance، ارث‌بری و وراثت چندگانه، توابع خاص۲.۵
دسته‌بندی و معرفی کاربردهای underscore در پایتون و کانونشن‌های مرتبط با آن۰.۵
جلسهٔ ششم: عبارات منظم و نحوهٔ کار با آن‌ها در پایتون، مدیریت حالات استثنا، قابلیت‌های پیشرفته‌تر پایتون در حوزهٔ شی‌گراحل تمرین‌ها۰.۷۵
عبارات منظم و کار با آن‌ها در پایتون۰.۷۵
انواع، روش‌های هندل کردن، تولید و تعریف اکسپشن‌ها، تعریف clean-up و clean-upهای از پیش تعریف شده۱.۲۵
نگاه دقیق‌تر به scopeها در پایتون، متغیرهای پرایوت، iteratorها و generatorها، متغیرها و توابع static، دکوراتورها۱.۲۵
جلسهٔ هفتم: ورژن کنترلمفاهیم سیستم‌های ورژن کنترل۰.۵
آموزش کار با ورژن کنترل در محیط متنی و وب۲
طریقهٔ ایجاد پول ریکوئست۰.۲۵
ابزارهای گرافیکی کار با ورژن کنترل۰.۷۵
ویژگی‌های Commit Message خوب۰.۵
جلسهٔ هشتم: مفاهیم پیشرفته در ورژن کنترل و آشنایی با مفاهیم مهندسی نرم‌افزار و سطوح کوهیشن و کاپلینگکار با ابزارها و امکانات پیشرفته‌تر ابزارهای ورژن کنترل مانند حرکت در تاریخچهٔ پروژه و fork و hook و tag و … در عمل۱
آشنایی با کانونشن SemVer برای ورژن محصولات نرم‌افزاری۰.۷۵
آشنایی با کانونشن GitFlow برای نامگذاری برنچ‌ها و ورک‌فلو ایجاد نرم‌افزار۰.۷۵
مفاهیم و واژگان پرکاربرد در مهندسی نرم‌افزار۱
مشخص کردن کیفیت ماژول‌های نرم‌افزاری به کمک سطوح کوهیشن و کاپلینگ۰.۵
جلسهٔ نهم: آشنایی با مفاهیم شی‌گراآشنایی اجمالی با قواعد ترسیم نمودارهای UML۱.۵
آشنایی با الگوهای شی‌گرای GRASP۱/۲۵
آشنایی با اصول شی‌گرای SOLID۱.۲۵
جلسهٔ دهم: الگوهای Refactoring و Big Refactoring و آنتی‌پترن‌ها در پایتونحل تمرین۰.۷۵
آموزش الگوهای Refactoring و الگوهای Big Refactoring فاولر۲.۷۵
آنتی پترن‌ها در زبان پایتون۰.۵
جلسهٔ یازدهم: تست نرم‌افزار در پایتونحل تمرین۰.۷۵
مفاهیم و انواع روش‌های تست نرم‌افزار۰.۷۵
کنترل کیفیت و تست نرم‌افزار در پایتون و یونیت تستینگ۱.۵
مفاهیم و ابزارهای تست خودکار نرم‌افزار۱
جلسهٔ دوازدهم: برنامه‌نویسی پیشرفته در پایتون و آشنایی با برخی از کتابخانه‌های استاندارد آنتوابع Lambda در پایتون۰.۵
آشنایی با کتابخانهٔ استاندارد پایتون شامل ماژول‌های os و glob و sys و statistics و ماژول‌های دسترسی به شبکه و فشرده‌سازی و اندازه‌گیری پرفرمنس نرم‌افزار۱.۵
آشنایی با کتابخانه‌های استاندارد پایتون در زمینهٔ کار با فایل و فرمتینگ خروجی و کار با ورودی و خروجی و کار با فایل‌های زیپ و باینری۱
آشنایی با کتابخانه‌های استاندارد پایتون در زمینهٔ تولید لاگ و کار با داده ساختارهای دیگر پیشرفته‌تر از لیست مانند آرایه و کالکشن و صف و استک و نسخه‌های پیشرفته‌تر داده ساختار اعداد Decimal۱
جلسهٔ سیزدهم: مفاهیم شبکه و وب، مفاهیم مولتی‌تردینگ و پارالل‌پراسسینگ، برنامه‌نویسی مولتی‌ترد و برنامه‌نویسی سوکت (شبکه) و کار با وب در پایتونبرنامه‌نویسی مولتی‌ترد در پایتون۱.۵
آشنایی با مفاهیم شبکه و برنامه‌نویسی سوکت (شبکه) در پایتون۱.۵
آشنایی با سازوکار وب و فرمت Request و Response و پروتوکل HTTP و معماری کلاینت سرور و کتابخانهٔ Requests پایتون۱
جلسهٔ چهاردهم: تولید و مدیریت لاگ‌ها در پایتون و برنامه‌نویسی گرافیک با استفاده از کتابخانهٔ TkInterتولید و مدیریت لاگ‌ها در پایتون۱
برنامه‌نویسی رابط کاربری گرافیکی با استفاده از کتابخانهٔ TkInter۳
جلسهٔ پانزدهم: تحلیل سیستم و پادالگوها در مهندسی نرم‌افزارتحلیل سیستم و نرم‌افزار و جزئیات قواعد نوشتاری آن۲
پادالگوها در حوزهٔ معماری و ایجاد نرم‌افزار و مدیریت پروژه‌های نرم‌افزاری۲
طرح درس کارگاه نصب و آشنایی با گنو/لینوکس (GNU/Linux) - پیشنیاز: همراه داشتن لپتاپ
روزسرفصلزمان (ساعت)
جلسهٔ اول: آشنایی با تاریخچه، مفاهیم کلیدی، ساختار، دستورات و نصب گنو/لینوکستاریخچه و فلسفهٔ گنو/لینوکس، آشنایی با واژگان مهم در این حوزه شامل سیستم‌عامل گنو، لینوکس، نرم‌افزار آزاد، متن‌باز، مجوزهای آزاد، کپی‌لفت، توزیع‌های گنو/لینوکس، اشخاص حقیقی و حقوقی مرتبط با نرم‌افزار آزاد در داخل یا خارج از ایران۱.۲۵
آشنایی با محیط خط فرمان، ساختار فایل‌ها، دستورات پایه‌ای کار با فایل‌ها و دایرکتوری‌ها شامل pwd و ls و mkdir و cd و rm و cp و mv۱
نصب و پارتیشن‌بندی گنو/لینوکس۱
دستورات help، کار با ویرایشگرهای متنی vim و nano، دستورات نمایش محتوای فایل‌ها شامل cat، tail و head، دستور جستجو و کار با تاریخچه محیط متنی۰.۵
مدیریت مالکیت و سطوح دسترسی فایل‌ها و دایرکتوری‌ها در محیط متنی، دستورات مرتبط با مدیریت کاربران شامل whoami و who و passwd و su و sudo۰.۷۵
جلسهٔ دوم: نصب و آشنایی با نرم‌افزارها و برنامه‌نویسی شل اسکریپتروش‌های نصب نرم‌افزار در گنو/لینوکس، مفاهیم مرتبط با مخازن، سیستم‌های مدیریت پکیج YUM و RPM و DPKG در توزیع‌های گوناگون۱
آشنایی با محیط کاربری گنوم و برخی از نرم‌افزارهای کاربردی آزاد در گنو/لینوکس۰.۷۵
آشنایی با راهنماها و دستور man۰.۲۵
آشنایی با پردازه‌ها و نحوهٔ مدیریت آن‌ها به کمک دستورهای ps و top و سایر انواع آن۰.۷۵
برنامه‌نویسی مقدماتی در محیط شل اسکریپت گنو/لینوکس و آشنایی با برخی مفاهیم پایهٔ آن۱.۲۵
نتیجه‌گیری و بررسی دلایل استفاده از نرم‌افزارهای آزاد و گنو/لینوکس و پرسش و پاسخ۰.۵
طرح درس دورهٔ برنامه‌نویسی پیشرفته با پایتون ۳ (Python 3 Programming) - پیشنیاز: گذراندن دورهٔ برنامه‌نویسی مقدماتی با پایتون
روزسرفصلزمان (ساعت)
جلسهٔ اول: مرور مفاهیم برنامه‌نویسی مقدماتی با پایتونمرور مفاهیم مقدماتی برنامه‌نویسی مانند انواع ارورها در زبان‌های برنامه‌نویسی، مفاهیم زبان‌های برنامه‌نویسی سطح بالا و سطح پایین، تفاوت فرایند ترجمه و تفسیر، تفاوت تایپ‌سیستم‌های پویا و ایستا، مرور مطالب مربوط به فلسفهٔ پایتون، چیستی و تفاوت‌های زبان پایتون با سایر زبان‌ها، تفاوت‌های نسخه‌های ۲ و ۳ زبان پایتون، تنظیم محیط برنامه‌نویسی، کنسول پایتون و محیط‌های یکپارچهٔ برنامه‌نویسی و نحو سادهٔ زبان پایتون، معرفی برخی از پروپوزال‌های پایتون، بررسی محل شروع اجرای برنامه‌ها در پایتون۱
مرور مبحث متغیرها و انواع ابتدایی داده، معرفی سیکوئنس‌ها شامل استرینگ و لیست و تاپل و ساختمان‌های دادهٔ دیکشنری و ست و تکنیک‌های استفاده از حلقه روی آن‌ها، انواع عملگرها، نکات مرتبط با تعریف رشته‌های متنی، فرمتینگ رشته‌های متنی، ارزش‌گذاری‌های بولین، ساخت لیست از روی یک لیست دیگر، روش‌های اسلایسینگ لیست‌ها۱
مرور ساختارهای کنترلی شامل if و for و while و متعلقات آن‌ها، تابع range()، استفاده از break و continue و else در حلقه‌ها، عبارت pass، مفاهیم تابع و انواع حالت‌های آرگومان‌ها، کار با docstring، مثال‌هایی از توابع بازگشتی۱
مرور مفاهیم ماژول و نحوهٔ ایجاد یا استفاده از آن‌ها، تابع dir()، پکیج‌ها در پایتون، کار با مدیر پکیج‌های pip در پایتون و VirtualEnv، آشنایی با توابع پرکاربرد و رایج built-in در پایتون۱
جلسهٔ دوم: لامبدا فانکشن و مرور برخی مهارت‌های عملی و الگوریتمی مورد نیاز برنامه‌نویسان و آنتی‌پترن‌ها در پایتونحل چند سری تمرین با هدف مرور مفاهیم مقدماتی طراحی الگوریتم و مطالب مقدماتی زبان پایتون۲
نحوهٔ هوشمندانه سوال پرسیدن در اینترنت و آشنایی با stackoverflow۰.۵
لامبدا فانکشن۰.۵
بررسی و کار با یکی از کتابخانه‌های سطح بالاتر زبان پایتون برای نوشتن یک برنامهٔ کاربردی و بررسی برخی آنتی‌پترن‌ها در پایتون ضمن آن۱
جلسهٔ سوم: شی‌گرایی در پایتونمفاهیم شی‌گرایی۰.۷۵
کلاس و آبجکت در پایتون، کار با Instance Objects و Method Objects در پایتون، کار با متغیرها در سطح کلاس یا Instance، ارث‌بری و وراثت چندگانه، توابع خاص۱.۲۵
مفاهیم scope و namespace در پایتون، متغیرهای private و iteretorها و generatorها در پایتون، متغیرها و توابع static و class methodها، دکوراتورها۱.۵
دسته‌بندی و معرفی کاربردهای underscore در پایتون و کانونشن‌های مرتبط با آن۰.۵
جلسهٔ چهارم: عبارات منظم و نحوهٔ کار با آن‌ها در پایتون، مدیریت حالات استثنا و آشنایی با کتابخانهٔ استاندارد پایتونانجام تمرین‌های بیشتر از شی‌گرایی در پایتون۰.۵
عبارات منظم و کار با آن‌ها در پایتون۰.۷۵
انواع، روش‌های هندل کردن، تولید و تعریف اکسپشن‌ها، تعریف clean-up و clean-upهای از پیش تعریف شده۱.۵
معرفی ماژول‌های time و random و math از کتابخانهٔ استاندارد پایتون۱.۲۵
جلسهٔ پنجم: ادامهٔ آشنایی با کتابخانهٔ استاندارد پایتون شامل دسترسی به سیستم‌عامل، مدیریت لاگ‌ها، کار با ورودی و خروجی و داده‌ساختارهای پیشرفته‌تر در پایتونآشنایی با ماژول‌های os و glob و sys و statistics۱
ماژول‌های دسترسی به شبکه و فشرده‌سازی و اندازه‌گیری پرفرمنس نرم‌افزار و پروفایلینگ۱
کتابخانه‌های استاندارد پایتون در زمینهٔ کار با فایل و فرمتینگ خروجی و کار با ورودی و خروجی و کار با فایل‌های زیپ و باینری۱
کتابخانه‌های استاندارد پایتون در زمینهٔ تولید و مدیریت لاگ‌ها و کار با داده ساختارهای دیگر پیشرفته‌تر از لیست مانند آرایه و کالکشن و صف و استک و نسخه‌های پیشرفته‌تر داده ساختار اعداد Decimal۱
جلسهٔ ششم: تست نرم‌افزار در پایتون، مفاهیم برنامه‌نویسی شبکه و سوکت در پایتون، مفاهیم مولتی‌تردینگ و پارالل‌پراسسینگ، برنامه‌نویسی مولتی‌ترد، و کار با وب در پایتونبرنامه‌نویسی مولتی‌ترد در پایتون۱
آشنایی با مفاهیم شبکه و برنامه‌نویسی سوکت (شبکه) در پایتون۱
آشنایی با سازوکار وب و فرمت Request و Response و پروتوکل HTTP و معماری کلاینت سرور و کتابخانهٔ Requests پایتون۱
یونیت تستینگ در پایتون۱
جلسهٔ هفتم: مفاهیم ورژن کنترلچیستی ورژن کنترل، مقایسهٔ سیستم‌های ورژن‌کنترل Distributed و Centralized، معرفی سیستم‌های ورژن‌کنترل پراستفاده، سایت‌های میزبان ورژن کنترل، چیستی گیت، ویژگی‌هایی که گیت را متفاوت می‌کند (مفهوم snapshot و local بودن در گیت)۱
شخصی‌سازی تنظیمات محیطی گیت، سطوح تنظیمات گیت، متغیرهای قابل تنظیم در گیت، دیدن تنظیمات محیطی گیت، تفاوت وضعیت Tracked و Untracked در گیت، انواع وضعیت‌های Tracked در گیت، چرخهٔ عمر وضعیت‌ها در گیت، دیدن وضعیت‌ها در گیت، SHA-1 Checksum در گیت، انواع تغییر در گیت، تغییر دادن روی یک کامیت مشخص، پوینتر HEAD، گراف تاریخچهٔ گیت، آناتومی کامیت‌ها در گیت، کامیت مسیج‌های چند خطی، ایگنور کردن فایل‌ها در گیت و پترن‌های نوشتاری آن، دیدن تغییرات انجام شده در وضعیت‌های مختلف، پاک کردن و تغییر نام فایل‌ها در گیت، کار با لاگ گیت به انواع اشکال مختلف۲
برنچینگ در گیت، انواع روش‌های مرج کردن در گیت، مقایسهٔ مرج‌های اتوماتیک و دستی، رفع conflict در محیط متنی۱
جلسهٔ هشتم: ادامهٔ مفاهیم ورژن کنترلکار با ریموت‌ها در گیت، URLهای HTTP و SSH، ساخت برنچ‌های ریموت روی local۰.۵
استفاده از گیت در IDE، برطرف کردن Conflictها در IDE، مرج Squash، دستور Rebase، مشکلات Rebase کردن برنچ‌های پابلیک۰.۷۵
اصلاح کامیت قبل، برگرداندن تغییرات در گیت، انواع تگ‌ها در گیت و روش‌های استفاده از آن‌ها۰.۷۵
آشنایی با کانونشن SemVer برای ورژن محصولات نرم‌افزاری۰.۷۵
آشنایی با کانونشن GitFlow برای نامگذاری برنچ‌ها و ورک‌فلو ایجاد نرم‌افزار۰.۷۵
ویژگی‌های Commit Message خوب۰.۵
وب اسکرپینگ در پایتون (Web Scraping in Python) - پیشنیاز: گذراندن دورهٔ برنامه‌نویسی مقدماتی با پایتون
روزسرفصلزمان (ساعت)
جلسهٔ اول: مفاهیم وب و برنامه‌نویسی HTML و CSSآشنایی با تاریخچهٔ وب و اتفاقات مهم آن از ابتدای پیدایش اینترنت تاکنون۰٫۵
آشنایی با مراحل باز شدن و طرز کار صفحات وب، ساختار URLهای وب، معماری کلاینت سرور و نقش CSS و HTML و برنامهٔ سمت سرور در آن۰٫۷۵
برنامه‌نویسی مقدماتی HTML۰٫۷۵
برنامه‌نویسی مقدماتی CSS۱
نوشتن مرحله به مرحلهٔ تعدادی صفحهٔ وب ساده و معرفی موضوعات مورد بحث در جلسات بعدی۰٫۵
جلسهٔ دوم: آشنایی با متدهای ارسال درخواست و Status Code های Response در پروتوکل HTTP، آشنایی و کار با کتابخانهٔ Requests و آشنایی مقدماتی با ابزار BeautifulSoupآشنایی با Methodهای ارسال درخواست در پروتوکل HTTP۰٫۵
آشنایی با Status Codeهای Response در پروتوکل HTTP۰٫۲۵
معرفی، نصب و استفادهٔ مقدماتی از کتابخانهٔ requests در پایتون۰٫۵
ایجاد انواع Requestها در پایتون، رد کردن پارامتر به Requestها، خواندن محتوا و باینری و Status Code و Header پاسخ دریافت شده از سمت سرور در پایتون۰٫۷۵
دسترسی به اطلاعات ریدایرکت‌ها و مدیریت وضعیت Timeout در پایتون۰٫۵
معرفی و نصب پکیج BeautifulSoup در پایتون۱
جلسهٔ سوم: انواع شی و پیمایش درخت در BeautifulSoupساخت شی در BeautifulSoup و انواع اشیا در آن۱
پیمایش درخت با BeautifulSoup۲.۵
جلسهٔ چهارم: کار با عبارات منظم و فیلترها و جستجو و دستکاری درخت و تولید خروجی در BeautifulSoupکار با regular expression۰.۷۵
فیلترها در BeautifulSoup۰.۷۵
جستجو در درخت با BeautifulSoup۰.۵
دستکاری درخت با BeautifulSoup۰٫۷۵
تولید خروجی در BeautifulSoup۰٫۷۵
جلسهٔ پنجم: آشنایی با انواع دادهٔ XML و JSON و CSV و پردازش آن‌ها در پایتون و مقایسهٔ پارسرهای BeautifulSoup، ذخیره‌سازی و نگه‌داری داده در پایگاه دادهآشنایی با XML و پردازش آن با lxml در پایتون۰٫۷۵
آشنایی با JSON و پردازش آن در پایتون۰٫۷۵
آشنایی با CSV و پردازش آن در پایتون۰.۷۵
انواع و تفاوت‌های میان parserها و استفاده از آن‌ها در BeautifulSoup۰/۵
آشنایی با پایگاه داده MongoDB و ذخیره‌سازی دادهٔ به دست آمده در این پایگاه داده و مدیریت خط لوله۰.۷۵
جلسهٔ ششم: مشخصه‌های وب و داده‌های موجود در آن، تئوری‌های crawling و index وب و آموزش کار با ابزار Scrapy و انجام پروژهٔ استخراج اطلاعات از ویکی‌پدیا، آشنایی با برخی معماری‌های پیچیده‌تر در وبمشخصه‌های وب و داده‌های موجود در آن۰٫۵
آشنایی با طرز کار و تئوری‌های crawlerهای وب۰٫۵
نصب و آشنایی با Scrapy و آشنایی با ساختار فایل‌ها در پروژهٔ Scrapy۰٫۵
تنظیمات مهم‌تر Scrapy و آشنایی با رابط کاربری متنی آن۰٫۵
انجام یک پروژه با استفاده از Scrapy و BeautilfulSoup برای Crawl و استخراج داده از ویکی‌پدیا۱
آشنایی بسیار کلی و مقدماتی با معماری‌های پیچیده‌تر در وب مانند AJAX و SPA و WebSocket۰.۵
جلسهٔ هفتم: آموزش کار با APIهای وب با مثال‌های کاربردی از گوگل و توییترمرور مفاهیم مطرح شده در جلسات قبل۰٫۵
آشنایی با APIهای وب توییتر و گوگل برای نمونه و آشنایی بیشتر با JSON۱
پیاده‌سازی مثالی کاربردی با مطالب آموزش داده شده در دوره۲
جلسهٔ هشتم: جستجو و بازیابی اطلاعات به کمک Elasticsearchمفاهیم بازیابی اطلاعات۱
آموزش کار با برنامهٔ Elasticsearch۲.۵
طرح درس دورهٔ برنامه‌نویسی مقدماتی با پایتون ۳ (Python 3 Programming)
روزسرفصلزمان (ساعت)
جلسهٔ اول: معرفی، راه‌اندازی، نصب و نوشتن اولین برنامهٔ پایتون و آشنایی با عملگرها و ساختمان‌های دادهٔ ابتداییچیستی و چرایی پایتون، فلسفهٔ پایتون، تفاوت‌های نسخه‌های ۲ و ۳ زبان پایتون۱
نصب ابزارهای مورد نیاز و نصب و فعال‌سازی پایچارم و کار با محیط یکپارچهٔ برنامه‌نویسی پایچارم، کار با shell پایتون و تفاوت‌های آن‌ها، بررسی محل شروع اجرای برنامه‌ها در پایتون۰.۵
نحو سادهٔ زبان پایتون و تفاوت‌های آن با سایر زبان‌ها، معرفی برخی از پروپوزال‌های پایتون۰.۵
انواع ارورها در زبان‌های برنامه‌نویسی، مفاهیم زبان‌های برنامه‌نویسی سطح بالا و سطح پایین، تفاوت فرایند ترجمه و تفسیر، تفاوت تایپ‌سیستم‌های پویا و ایستا۰.۵
متغیرها و انواع ابتدایی داده، انواع عملگرها، نکات مرتبط با تعریف رشته‌های متنی۱.۵
جلسهٔ دوم: ساختارهای کنترلی و ساختمان‌های دادهٔ کامپازیت در پایتونکار با سیکوئنس‌ها شامل استرینگ و لیست و تاپل، فرمتینگ رشته‌های متنی، ارزش‌گذاری‌های بولین، ساخت لیست از روی یک لیست دیگر، روش‌های اسلایسینگ لیست‌ها۱
ساختارهای کنترلی شامل if و for و while و متعلقات آن‌ها، تابع range()، استفاده از break و continue و else در حلقه‌ها، عبارت pass۱
ساختارهای دادهٔ ست و دیکشنری و تکنیک‌های استفاده از حلقه روی آن‌ها، مقایسهٔ بین ساختمان‌های داده و دیدن نمونه‌هایی از هر کدام در عمل۱
مفاهیم تابع و انواع حالت‌های آرگومان‌ها، کار با docstring، مثال‌هایی از توابع بازگشتی۱
جلسهٔ سوم: ماژول، پکیج و مدیریت و نصب آن‌هاحل تمرین‌ها و آشنایی مقدماتی با مفاهیم طراحی الگوریتم۱
مفاهیم ماژول و نحوهٔ ایجاد یا استفاده از آن‌ها، تابع dir() و scopeها در پایتون و متغیر __name__۱
معرفی ماژول‌های time و random و math از کتابخانهٔ استاندارد پایتون۱
پکیج‌ها در پایتون، کار با مدیر پکیج‌های pip در پایتون و VirtualEnv۱
جلسهٔ چهارم: مرور مطالب گفته شده، آشنایی با برخی مفاهیم سطح پایین و مفاهیم طراحی زبان پایتون، استفاده از یکی از کتابخانه‌های سطح بالاتر پایتون برای نوشتن یک برنامهٔ کاربردی، آنتی‌پترن‌ها در پایتونحل تمرین‌ها۱
مرور مطالب بیان شده و آشنایی با سایر توابع built-in در پایتون۱
آشنایی با برخی مفاهیم سطح پایین و مفاهیم طراحی زبان پایتون به کمک بررسی pywatها۱.۵
آنتی‌پترن‌ها در پایتون۰.۵
جلسهٔ پنجم: شی‌گرایی در پایتونحل تمرین‌ها۰.۵
مفاهیم شی‌گرایی۰.۵
کلاس و آبجکت در پایتون، کار با Instance Objects و Method Objects در پایتون، کار با متغیرها در سطح کلاس یا Instance، تابع constructor و متغیر self، متغیر __dict__، دکوراتورهای classmethod و staticmethod، ارث‌بری و وراثت چندگانه، تابع help، توابع خاص، متغیرهای پرایوت، معرفی iteratorها و generatorها۲.۵
دسته‌بندی و معرفی کاربردهای underscore در پایتون و کانونشن‌های مرتبط با آن۰.۵
جلسهٔ ششم: مدیریت حالات استثنا و نوشتن یک برنامهٔ کاربردی با استفاده از کتابخانه‌های سطح بالاحل تمرین‌ها۱
انواع، روش‌های هندل کردن، تولید و تعریف اکسپشن‌ها، تعریف clean-up و clean-upهای از پیش تعریف شده۱.۷۵
بررسی و کار با یکی از کتابخانه‌های سطح بالاتر زبان پایتون برای نوشتن یک برنامهٔ کاربردی۱.۲۵
جلسهٔ هفتم: عبارات منظم و نحوهٔ کار با آن‌ها در پایتون، آشنایی با SDLC و برخی مفاهیم اولیه در مهندسی نرم‌افزار و معرفی سطوح کوهیشن و کاپلینگعبارات منظم و کار با آن‌ها در پایتون۱
معرفی چرخهٔ عمر ایجاد نرم‌افزار (SDLC) و برخی مفاهیم و واژگان پرکاربرد در مهندسی نرم‌افزار۲.۲۵
مشخص کردن کیفیت ماژول‌های نرم‌افزاری به کمک سطوح کوهیشن و کاپلینگ۰.۷۵
جلسهٔ هشتم: ورژن کنترل و گیتمعرفی ورژن کنترل، مقایسهٔ سیستم‌های ورژن کنترل متمرکز و توزیع‌شده، معرفی و مقایسهٔ سیستم‌های مورد استفادهٔ رایج برای ورژن کنترل، معرفی و مقایسهٔ سرویس‌های میزبانی ورژن کنترل در اینترنت، معرفی گیت و تفاوت‌های آن با سایر سیستم‌های موجود (مفهوم Snapshot و Local بودن در گیت)۱
معرفی وضعیت‌ها در گیت (Modified, Staged, Committed)، نحوهٔ استفادهٔ گیت از SHA-1 Checksum، انواع تغییرات در گیت، دستورات سادهٔ گیت، ایجاد تغییر در یک کامیت مشخص، پوینتر HEAD، رسم گراف تاریخچهٔ گیت، آناتومی یک کامیت در گیت، برنچینگ در گیت، روش‌های Merge در گیت (Fast-forward, Recursive)، روش Merge خودکار، رفع کردن تداخل هنگام Merge کردن در محیط متنی، معرفی Squash Merge، معرفی Git Rebase، کار با Remoteها در گیت، پروتوکل‌های SSH and HTTPS در گیت، ایجاد برنچ‌های ریموت روی لوکال، نوشتن Commit Message های چند خطی۱.۲۵
ابزارهای گرافیکی کار با ورژن کنترل در PyCharm و رفع Conflict در آن‌ها۰.۵
ویژگی‌های Commit Message خوب۰.۵
معرفی انواع workflowها در پروژه‌های نرم‌افزاری۰.۷۵
طرح درس دورهٔ برنامه‌نویسی سمت سرور با جنگو (Backend Web Development with Django) - پیشنیاز: آشنایی با برنامه‌نویسی پایتون و برنامه‌نویسی سمت کاربر (زبان‌های CSS و JS و HTML)
روزسرفصلزمان (ساعت)
جلسهٔ اول: مرور مطالب اصلی دورهٔ برنامه‌نویسی مقدماتی با پایتونمرور مطالب مربوط به فلسفهٔ پایتون، تنظیم محیط برنامه‌نویسی، کنسول پایتون و محیط‌های یکپارچهٔ برنامه‌نویسی و نحو سادهٔ زبان پایتون، مفاهیم شرط، حلقه، انواع داده‌ها، سیکوعنس‌ها شامل استرینگ و لیست و تاپل و ساختمان‌های دادهٔ دیکشنری و ست۲
مرور مفاهیم تابع و ماژول و پکیج و pip و VirtualEnv و شی‌گرایی در پایتون و مفاهیم عبارات منظم و مدیریت اکسپشن‌ها در پایتون۲
جلسهٔ دوم: مرور مطالب اصلی دورهٔ برنامه‌نویس فرانت‌اندآشنایی با تاریخچهٔ وب و اتفاقات مهم آن از ابتدای پیدایش اینترنت تاکنون۰٫۵
آشنایی با مراحل باز شدن و طرز کار صفحات وب، ساختار URLهای وب، معماری کلاینت سرور و نقش CSS و HTML و برنامهٔ سمت سرور در آن۱
مرور برنامه‌نویسی مقدماتی HTML و CSS۱.۷۵
مرور برنامه‌نویسی JS۰.۷۵
جلسهٔ سوم: مفاهیم پایهٔ برنامه‌نویسی سمت سرورمفاهیم برنامه‌نویسی سمت سرور۱
مفاهیم Common Gateway Interface۱
مفاهیم معماری اپلیکیشن‌های وب (Web Application Architucture)۲
جلسهٔ چهارم: معرفی فریمورک جنگو و نصب آن و مفاهیم دیتابیسمعرفی فریمورک جنگو و نصب آن ۲
سیستم‌های مدیریت دیتابیس (Database Management Systems) و مفاهیم ORM۱
مدل در جنگو۱
جلسهٔ پنجم: تمپلیت و view و فرم و ادمین جنگوتمپلیت و view در جنگو۲
فرم‌ها در جنگو۱
ادمین جنگو۱
جلسهٔ ششم: اعتبارسنجی و نشست کاری، فایل‌های استاتیک و Middleware و AJAX در جنگواعتبارسنجی و نشست کاری (Sessions & Authentication) در جنگو۱.۵
مفاهیم Static Files و MiddleWare در جنگو۱.۵
پیاده‌سازی کد ایجکس (AJAX) در جنگو۱
جلسهٔ هفتم: جنگو پیشرفته (الگوها، تجارب موفق و ابزارهای جنگو)معرفی django-hijack و django-compressor۱
استفاده از class-based view در جنگو۱
کتابخانهٔ django-rest-framework۱
دیپلویمنت و استقرار پروژه‌های جنگو در محیط پروداکشن۱
طرح درس دورهٔ سامانهٔ کنترل ورژن گیت (GIT Version Control System) - پیشنیاز:برنامه‌نویسی مقدماتی در یکی از زبان‌های برنامه‌نویسی
روزسرفصلزمان (ساعت)
جلسهٔ اول: مفاهیم ورژن کنترل و مقدمات گیتامکانات و دلایل استفاده از ورژن کنترل۱
انواع سیستم‌های ورژن کنترل و مقایسهٔ آن‌ها
نحوهٔ کار کردن سیستم‌های کنترل ورژن
معرفی سایت‌های معروف ارائه‌دهندهٔ خدمات کنترل ورژن
نصب گیت و اولین قدم‌ها در استفاده از گیت، تنظیمات محیطی گیت۱.۵
ایجاد و دریافت مخازن گیت
ثبت تغییرات در مخزن گیت و سطوح Stage در گیت
دیدن تاریخچهٔ تغییرات
برگرداندن تغییرات
کار با remote در گیت
ایجاد tag در گیت
کار با aliasها در گیت
مفاهیم branch در گیت۱.۲۵
دستورات اولیهٔ کار با branchها و انواع روش‌های merge کردن آن‌ها
مدیریت branchها
انواع workflow ها در گیت
برنچ‌های remote
کار با rebase
سناریوهای ایجاد و رفع conflict
تنظیمات gitignore۰.۲۵
جلسهٔ دوم: امکانات محیط‌های گرافیکی کار با گیت، گیت روی سرور و نحوهٔ مشارکت در پروژه‌هاپروتوکل‌های ارتباطی گیت با سرور۰.۵
ایجاد کلیدهای SSH۰.۵
مشارکت در پروژه‌های روی گیت۱
نصب و راه‌اندازی GitLab و آموزش امکانات آن۱
نمایش امکانات گرافیکی محیط‌های ایجاد نرم‌افزار JetBrains برای کار با گیت۱
ادامهٔ جلسهٔ اول: گیت حرفه‌ای و اکوسیستم آننمایش با جزئیات بیشتر امکانات سایت‌های ارائه‌دهنده خدمات کنترل ورژن و مفاهیم merge و workflowها و ابزارهای محیط‌های توسعه۲.۵
معرفی روش‌ها و انواع بازگشت به نسخه‌های پیشین (Undoing) در گیت و مفاهیم Stashing
مفهوم و دلایل استفاده از fork در گیت
روش‌های Semantic Versioning و
مراحل Pull Request
کار با برخی از سیستم‌های Continous Integration و تست خودکار کد
ساخت کلید و رمزنگاری ارتباط با مخازن گیت
تنظیم Deploy On Push و Git Hook در گیت
تمرین مطالب گفته شده در قالب کارگاه
طرح درس دورهٔ سیستم مدیریت محتوای جوملا (Joomla Content Management System) - پیشنیاز: آشنایی با مبانی کامپیوتر و اینترنت
روزسرفصلزمان (ساعت)
جلسهٔ اول: مقدمات نصب و کار با جوملامعرفی و تعریف سیستم‌های مدیریت محتوا و دلایل استفاده از آن‌ها۰.۵
نیازمندی‌های سیستمی و مراحل نصب، بک‌آپ‌گیری و جابجایی جوملا۰.۵
بخش content در جوملا۰.۵
منوها۰.۵
مدیریت کاربران و تنظیمات سیستمی۰.۵
ماژول، پلاگین، زبان و تمپلیت۱
افزونهٔ نقشه سایت و فرم‌ساز۰.۵
طرح درس دورهٔ سیستم‌عامل گنو/لینوکس (GNU/Linux Operating System) - پیشنیاز: آشنایی با مبانی کامپیوتر و اینترنت
روزسرفصلزمان (ساعت)
جلسهٔ اول: مفاهیم، نصب و استفاده از نسخه‌های رومیزی گنو/لینوکس۱.۵
جلسهٔ دوم: شل اسکریپتینگ پیشرفته و مدیریت سخت‌افزار، پردازه‌ها و فایل‌سیستمشناسایی سخت‌افزار در گنو/لینوکس، بوت کردن سیستم، تغییر ران لول‌ها و شات داون و ریبوت سیستم۱
طراحی لی‌اوت هارد‌دیسک، کار با بوت لودر و گراب، مدیریت کتابخانه‌ها۱
پردازش متون با فیلترها، استفاده از استریم‌ها، پایپ‌ها و ریدایرکت‌ها، ساخت و دیده‌بانی و کشتن پروسه‌ها، تغییر اولویت اجرای پروسه‌ها، جستجوی فایل‌های متنی با استفاده از رگولار اکسپرشن‌ها، دستورات کنترلی if و while، کار با اسکرین۲
ساخت پارتیشن‌ها و فایل سیستم‌ها، حفظ سلامت فایل سیستم‌ها، کنترل ماونت کردن و آن‌ماونت کردن فایل‌سیستم‌ها، مدیریت سهمیه دیسک‌، ایجاد و تغییر لینک‌های سخت و سمبلیک، پیدا کردن فایل‌های سیستمی و محل قرارگیری صحیح فایل‌ها۱.۵
محیط‌های متنی و تنظیمات آن‌ها، متغیرهای محلی۰.۵
جلسهٔ سوم: شبکه و سرویس‌های سیستمی در گنو/لینوکسمرور مباحث گفته شده در جلسات قبل در قالب سرفصل‌های LPIC 1، بحث راجع به تجربیات فردی افراد شرکت‌کننده و بررسی یک مثال کاربردی از شل اسکریپتینگ در گنو/لینوکس۱
کار با سرویس زمان و تاریخ در گنو/لینوکس۰.۵
کار با لاگ‌های سیستمی در گنو/لینوکس۰.۵
مفاهیم مقدماتی شبکه۰.۵
تنظیم پایه‌ای شبکه در توزیع‌های گوناگون و سرور۱
رفع اشکالات شبکه و ابزارهای آن۱.۵
امنیت داده از طریق رمزنگاری در گنو/لینوکس۱
طرح درس دورهٔ آشنایی با مفاهیم ضروری در خدمات زیرساخت ابری آمازون (AWS) - پیشنیاز: آشنایی با فعالیت‌ها و مسیر ایجاد محصول نرم‌افزاری تا تحویل آن به کاربر
روزسرفصلزمان (ساعت)
جلسهٔ اول: آشنایی با رایانش ابری، اصطلاحات فنی و تجاری در AWS و گام‌های اولیه برای کار با خدمات ابری آمازونمفهوم رایانش ابری، دلایل استفاده از آن و اصطلاحات XaaS و خلاصه و معرفی سرویس‌های مشهورتر آمازون۰.۲۵
مفاهیم Instance و انواع آن، AMIها و مفاهیم Region و Availability Zoneها در آمازون، قیمت‌ها و تعدادی از راهکارهای کاهش هزینه‌ها و موارد Free Tier آمازون۰.۵
معرفی امکانات Elastic آمازون و مفاهیم VPC و CloudWatch و Auto Scaling و HPC و VM Import و Export و APIهای آمازون، مدل‌های مدیریت امنیت شبکه در آمازون و روش‌های مدیریت کلید در آمازون۰.۵
نمایش دمو از مراحل لانچ کردن، ترمینیت کردن و Query زدن روی اطلاعات نمونه‌های ec2 آمازون و کلیهٔ مفاهیم معرفی شده به صورت عملی در Console وب مدیریت آمازون۰.۷۵
نصب و آماده‌سازی AWS Command Line Interface۰.۷۵
نمایش دمو از فعالیت‌های مدیریتی روی نمونه‌های ec2 آمازون به صورت عملی در ابزارهای متنی و از طریق نوشتن اسکریپت۰.۵
معرفی و آموزش مراحل ایجاد، به‌روزرسانی، اسکیل کردن و حذف نمونه‌ها از طریق پشتهٔ CloudFormation۱.۲۵
جمع‌بندی متدهای معرفی شده برای کار با نمونه‌ها و نتیجه‌گیری۰.۲۵
آموزش ایجاد و نامعتبرسازی AMI۱.۲۵
جلسهٔ دوم: آشنایی با مفاهیم دوآپس و مدیریت سطوح دسترسی، گروه‌های امنیتی، مدیریت تنظیمات و استقرار خودکار برنامهمفهوم DevOps و دلایل آن۰.۵
مدیریت دسترسی و هویت، اسامی منابع، پالیسی‌ها، کاربران و گروه‌های IAM۱
مدیریت نقش‌ها و استفاده از IAM در پشته‌های CloudFormation۱.۵
گروه‌های امنیتی و حفاظت از نمونه‌ها از طریق فهرست‌های SSH۰.۲۵
شبکه‌های خصوصی مجازی و گروه‌های امنیتی و جمع‌بندی بحث مدیریت دسترسی و امنیت در آمازون۱
چرایی و مقدمات راهکارهای مدیریت تنظیمات در آمازون۰.۷۵
معرفی puppet و استفاده از آن در آمازون برای نصب خودکار و مدیریت تنظیمات۱
طرح درس دورهٔ تخصصی طراحی و معماری خدمات زیرساخت ابری آمازون (AWS) - پیشنیاز: شرکت در دورهٔ «آشنایی با مفاهیم ضروری در خدمات زیرساخت ابری آمازون»
روزسرفصلزمان (ساعت)
جلسهٔ اول: ساخت و تنظیم دیتابیس با سرویس RDS و مقیاس‌پذیری سیستم‌های نرم‌افزاریخلاصه و مقدمات مولفه‌های نرم‌افزاری۰.۲۵
نصب اپلیکیشن‌های وب۰.۵
آماده‌سازی Puppet و CloudFormation و ساخت دیتابیس RDS۱
ساخت و استفاده از ElastiCache۰.۷۵
نصب Celery و سرویس صف ساده، ساخت AMI و ساخت پشته با CloudFormation۰.۷۵
مفهوم Auto Scaling۰.۲۵
ایجاد و تنظیم گروه‌های Auto Scaling و اطلاع‌رسانی در زمان فعالیت‌های Scaling۰.۷۵
پالیسی‌های Scaling۰.۵
Elastic Load Balancing و Auto Scaling Groups۰.۵
جلسهٔ دوم: مدیریت لاگ‌ها، مانیتورینگ و بک‌آپ‌گیریتولید لاگ مرکزی۰.۷۵
لاگ‌های سرویس AWS و مدیریت لاگ‌های دیتابیس۰.۵
دلایل مانیتورینگ، ابزارهای آن و سرویس CloudWatch۰.۷۵
بک‌آپ‌گیری فایل‌های استاتیک روی S3 و برگرداندن بک‌آپ‌ها۰.۵
بک‌آپ‌گیری دیتابیس۰.۵
جمع‌بندی مطالب مطرح شده در این دوره و بررسی تعدادی از practice های رایج و الگوهای عملیاتی در طراحی معماری خدمات آمازون۳
طرح درس دورهٔ نرم‌افزار حروفچینی Tex و XePersian - پیشنیاز: ندارد
روزسرفصلزمان (ساعت)
جلسهٔ اول: حروفچینی در نرم‌افزار لتکسمعرفی مفاهیم و نصب لتکس و زی‌پرشین و موتورهای رندر متن۰.۷۵
نگارش در محیط‌های شمارشی و موردی۰.۵
ریاضیات و فرمول‌نویسی۰.۵
محیط‌های شناور (کار با تصویر و جدول و …)۰.۵
تنظیمات صفحه و متن۰.۷۵
نگارش متون فارسی و مسائل آن۰.۵
انواع روش‌های تولید نمایه۰.۵
تولید مراجع به صورت استاندارد۰.۵
کتابخانه‌ها و ساخت قالب و نکات تکمیلی در تکس۱