دانشجو پس از پایان دوره در کلیه مباحث زیر به تسلط کامل خواهد رسید.
- مبانی کامپیوتر
- الگوریتم و فلوچارت (درک و حل مسئله)
- معرفی سیستم عامل و کار با محیط ترمینال در لینوکس
- ورژن کنترل و گیت
- معرفی و آشنایی با 3 زبان برنامه نویسی شامل: Go و JavaScript و Python
اهداف دوره تخصصی مبانی برنامه نویسی
در این دوره آموزشی تمامی مفاهیمی که لازم است تا وارد دنیای برنامه نویسی شوید به شما آموزش داده خواهد شد. از جکله اهداف مهم این دوره آموزشی این است که مطالبی را به شما أموزش دهیم که به صورت عمقی برنامه نویسی را درک کنید و بتوانید به راحتی مسائل سخت و پیچیده را درک و آن ها را حل کنید.
همچنین نکات و مباحث مهمی که در رشته های مرتبط با کامپیوتر در دانشگاه ها تدریس می شود در این دوره گنجانده شده است تا افرادی که این دوره را شرکت می کنند دانش پایه لارم را برای ورود به دنیای برنامه نویسی کسب کنند.
فصل اول: مبانی کامپیوتر
مقدمه ای بر برنامه نویسی و محاسبات
- تعریف برنامه نویسی و نقش آن در علوم کامپیوتر
- تفاوت بین نرم افزار و سخت افزار
- آشنایی با مبناها و تبدیل مبنا
مبانی منطق ریاضی
- گزاره ها و عبارات منطقی
- عملگرهای منطقی (AND, OR, NOT)
- جداول درستی و کاربردهای آن
- قوانین استنتاج منطقی
ساختارهای کنترلی و الگوریتم ها
- الگوریتم چیست و چگونه نوشته می شود
- ساختارهای شرطی (if, else)
- حلقه های تکرار (for, while)
- مفاهیم شرط های منطقی در برنامه نویسی
متغیرها و انواع داده ها
- تعریف متغیر و انواع داده (عدد صحیح، عدد اعشاری، رشته)
- عملیات ریاضی و منطقی روی متغیرها
- تفاوت بین انواع داده ها و تبدیل آنها
توابع و ماژول ها
- تعریف تابع و کاربرد آن در برنامه نویسی
- تعریف ورودی و خروجی تابع
- نحوه تعریف و استفاده از ماژول ها و کتابخانه ها
آشنایی با خطاها و روش های دیباگ کردن
- انواع خطاها (نحوی، منطقی، اجرایی)
- روش های یافتن و رفع خطاها
- ابزارهای دیباگ و تکنیک های دیباگ کردن
آشنایی با محیط های توسعه برنامه نویسی (IDE)
- معرفی ابزارهای توسعه برنامه نویسی (مثل Visual Studio Code)
- نحوه استفاده از آنها برای نوشتن و اجرای کد
فصل دوم: الگوریتم و فلوچارت
مقدمه ای بر الگوریتم ها
- تعریف الگوریتم و اهمیت آن
- ویژگی های یک الگوریتم خوب
- تفاوت بین الگوریتم ها و برنامه ها
- انواع الگوریتم (با داده مشخص، با داده نامشخص، شرطی، تکراری، ترکیبی)
- حل 50 الگوریتم مقدماتی
تحلیل پیچیدگی زمانی و مکانی
- مفاهیم پیچیدگی زمانی و مکانی
- نماد O بزرگ و تحلیل کارایی الگوریتم
- بررسی بهترین، بدترین و حالت میانگین
الگوریتم های مرتب سازی (Sorting Algorithms)
- مرتب سازی حبابی (Bubble Sort)
- مرتب سازی درجی (Insertion Sort)
- مرتب سازی انتخابی (Selection Sort)
- مرتب سازی سریع (Quick Sort)
- مرتب سازی ادغامی (Merge Sort)
- مقایسه و تحلیل پیچیدگی الگوریتم های مرتب سازی
الگوریتم های جستجو (Search Algorithms)
- جستجوی خطی (Linear Search)
- جستجوی دودویی (Binary Search)
- پیچیدگی و تحلیل الگوریتم های جستجو
الگوریتم های بازگشتی (Recursive Algorithms)
- تعریف بازگشت و مثال ها
- نحوه حل مسائل با استفاده از الگوریتم های بازگشتی
- پیچیدگی زمانی الگوریتم های بازگشتی
الگوریتم های تقسیم و حل (Divide and Conquer)
- معرفی روش تقسیم و حل
- مثال هایی مثل Merge Sort و Quick Sort
- تحلیل پیچیدگی الگوریتم های تقسیم و حل
الگوریتم های حریصانه (Greedy Algorithms)
- معرفی رویکرد حریصانه
- مثال هایی از مسائل حریصانه (مانند مسئله ی کوله پشتی و مسئله ی زمان بندی فعالیت ها)
- تحلیل الگوریتم های حریصانه
الگوریتم های برنامه ریزی پویا (Dynamic Programming)
- معرفی مفهوم برنامه ریزی پویا
- تفاوت برنامه ریزی پویا با روش های دیگر
- مثال هایی از مسائل برنامه ریزی پویا (مثل مسئله ی فیبوناچی و کوله پشتی)
الگوریتم های گراف (Graph Algorithms)
- معرفی ساختار گراف و انواع آن (جهت دار و بدون جهت)
- پیمایش گراف ها: الگوریتم جستجوی عمقی (DFS) و سطحی (BFS)
- الگوریتم دایجسترا (Dijkstra) برای کوتاه ترین مسیر
- الگوریتم های پیدا کردن اجزای هم بند
الگوریتم های بهینه سازی (Optimization Algorithms)
- الگوریتم های بهینه سازی خطی و غیرخطی
- بررسی مثال هایی مثل مسئله ی تخصیص منابع
فصل سوم: سیستم عامل و لینوکس
مقدمه ای بر سیستم عامل لینوکس و ترمینال
- معرفی سیستم عامل لینوکس
- تفاوت های اساسی لینوکس با سایر سیستم عامل ها
- نقش و اهمیت ترمینال در لینوکس
دستورات پایه ای در ترمینال لینوکس
- ساختار دستورات در لینوکس
- کار با دستورات پایه ای مانند:
pwd
،ls
،cd
،mkdir
،rmdir
- مشاهده و پیمایش فایل ها و پوشه ها
- ایجاد و حذف فایل ها و دایرکتوری ها
مدیریت فایل ها و پوشه ها
- کپی، جابجایی و تغییر نام فایل ها و پوشه ها با دستورات
cp
،mv
وrm
- استفاده از wildcards و الگوهای جستجو برای مدیریت فایل ها
- مشاهده و ویرایش فایل ها با دستورات
cat
،more
،less
وnano
- معرفی و کار با vi و vim
فصل چهارم: ورژن کنترل و گیت
مقدمه ای بر ورژن کنترل و گیت (Git)
- ورژن کنترل و گیت چیست و چرا از آن استفاده می کنیم
- تفاوت گیت با سایر سیستم های کنترل نسخه
نصب و پیکربندی گیت
- نصب گیت روی سیستم عامل های مختلف (ویندوز، لینوکس، مک)
- پیکربندی اولیه گیت (تنظیم نام کاربری و ایمیل)
مفاهیم اولیه در گیت
- مخزن (Repository) چیست
- کار با دستورات پایه ای مثل
git init
،git clone
- بررسی وضعیت پروژه با
git status
مراحل کاری گیت
- افزودن فایل ها به مرحله آماده سازی (Staging) با
git add
- ذخیره تغییرات با
git commit
- مشاهده تاریخچه تغییرات با
git log
کار با شاخه ها (Branches)
- ایجاد و جابجایی بین شاخه ها با
git branch
وgit checkout
- ادغام شاخه ها با
git merge
کار با مخازن راه دور (Remote Repositories)
- اتصال به مخازن راه دور مثل GitHub یا GitLab
- ارسال تغییرات به مخزن راه دور با
git push
- دریافت آخرین تغییرات از مخزن راه دور با
git pull
حل تعارض ها (Merge Conflicts)
- آشنایی با تعارض ها و چگونگی مدیریت آنها
- حل Conflict ها به صورت دستی
بازگشت به نسخه های قبلی
- بازگردانی تغییرات با
git reset
وgit checkout
- مشاهده تفاوت بین نسخه ها با
git diff
کار با .gitignore
- نحوه ایجاد و تنظیم فایل
.gitignore
برای نادیده گرفتن فایل ها
فصل پنجم: معرفی و کار با Go و JavaScript و Python
در این دوره ۳ زبان برنامه نویسی Go و JavaScript و Python به صورت خلاصه و در حد آشنایی آمورش داده خواهد شد.
سایر بخش های این دوره آموزشی (شامل پیاده سازی الگوریتم ها و…) با استفاده از زبان JavaScript تدریس خواهند شد.