diff --git a/lectures/Getting_started.md b/lectures/Getting_started.md
new file mode 100644
index 0000000..03b0b38
--- /dev/null
+++ b/lectures/Getting_started.md
@@ -0,0 +1,448 @@
+# بیاین شروع کنیم
+
+## مقدمه
+در این بخش شما خواهید آموخت که چگونه:
+
+
+ - از پایتون در فضای ابری استفاده کنید
+
+ - یک محیط محلی پایتون راه اندازی و اجرا کنید
+
+ - دستورات ساده ی پایتون را اجرا کنید
+
+ - یک نمونه از برنامه را اجرا کنید
+
+ - کتابخانه های برنامه نویسی موردنیاز برای این دوره را نصب کنید
+
+
+
+## پایتون در فضای ابری
+ساده ترین راه برای شروع کدنویسی در پایتون، اجرای آن در فضای ابری است. ( یعنی با استفاده از یک سرور از راه دور که از قبل روی آن پایتون نصب شده است.)
+یکی دیگر از گزینه های رایگان و قابل اعتماد نیز [Google Colab](https://colab.research.google.com/) است. علاوه براین Colab دارای مزیت GPU نیز هست که ما از آن در دوره های پیشرفته تر استفاده خواهیم کرد. آموزش نحوه ی استفاده از Google Colab را می توانید در اینترنت جستجو کنید و ویدیوهای مربوط به آن را پیدا کنید.
+
+بیشتر دوره های ما شامل یک دکمه «راه اندازی نوت بوک» (با یک آیکون پخش) در بالای سمت راست هستند که شما را به یک نسخه قابل اجرا در Colab متصل می کند.
+
+## نصب محلی
+اگر به سیستم مناسب دسترسی دارید و قصد دارید حجم قابل توجهی برنامه نویسی با پایتون انجام دهید، نصب محلی انتخاب بهتری است. این روش به شما امکان کنترل و انعطاف پذیری بیشتری در استفاده از ابزارها را می دهد.
+
+با این حال، نصب محلی در مقایسه با گزینه های ابری مانند Colab نیاز به کار بیشتری دارند. در ادامه ی این بخش، جزئیات مرتبط با نصب محلی توضیح داده می شود.
+
+### توزیع آناکوندا
+[بسته ی اصلی پایتون](https://www.python.org/downloads/) به راحتی قابل نصب است، اما برای این دوره ی آموزشی گزینه مناسبی نیست.
+
+در این مجموعه به اکوسیستم کامل برنامه نویسی علمی نیاز داریم که در بسته ی اصلی پایتون ارائه نمی شود و همچنین نصب هر بخش به صورت جداگانه بسیار زمان بر و دشوار است.
+
+بنابراین، بهترین رویکرد برای اهداف ما نصب توزیعی از پایتون است که شامل زبان اصلی پایتون و نسخه های سازگار از محبوب ترین کتابخانه های علمی باشد که بهترین توزیع برای این منظور [Anaconda Python](https://www.anaconda.com/) است.
+
+آناکوندا بسیار محبوب، کامل، جامع و دارای قابلیت اجرا بر روی چندین پلتفرم می باشد و البته هیچ ارتباطی با [آهنگی به همین نام از نیکی میناج](https://www.youtube.com/watch?v=LDZX4ooRsWs) ندارد!
+
+آناکوندا همچنین دارای سیستم مدیریت بسته نیز هست که کتابخانه های برنامه نویسی شما را سازماندهی می کند.
+
+**تمام مطالبی که در ادامه خواهید آموخت بر این فرض استوار است که شما این توصیه ها را پذیرفته اید!**
+
+### نصب آناکوندا
+برای نصب آناکوندا فایل باینری را از سایت اصلی آناکوندا [دانلود](https://www.anaconda.com/download/) کرده و دستورالعمل ها را دنبال کنید.
+
+نکات:
+
+
+ - اطمینان حاصل کنید که نسخه ی مناسب سیستم عامل خود را نصب می کنید.
+ - اگر در طول فرایند نصب از شما پرسیده شد که آیا آناکوندا را به عنوان نصب پیش فرض پایتون انتخاب می کنید، گزینه "بله" را انتخاب کنید.
+
+
+### به روزرسانی آناکوندا
+آناکوندا ابزاری به اسم `conda` برای مدیریت و ارتقاء بسته های آناکوندای شما فراهم می کند. یکی از دستورات `کوندا` که باید به طور منظم اجرا کنید، دستوری است که کل توزیع آناکوندا را به روز می کند.
+به عنوان یک تمرین، لطفا مراحل زیر را اجرا کنید:
+
+1. یک ترمینال باز کنید
+
+2.عبارت ` conda update anaconda ` را تایپ کنید
+
+
+برای اطلاعات بیشتر درباره کوندا، در ترمینال عبارت " conda help " را تایپ کنید.
+
+## ژوپیتر نوت بوک
+[ژوپیتر](http://jupyter.org/) نوت بوک ها یکی از چندین راه های قابل دسترس برای ارتباط برقرار کردن با پایتون هستند.
+ژوپیتر نوت بوک ها از یک رابط مبتنی بر مرورگر برای دسترسی به پایتون استفاده می کنند که دارای ویژگی های زیر است:
+
+ - قابلیت نوشتن و اجرای دستورات پایتون
+ - خروجی قالب بندی شده در مرورگر، شامل جداول، نمودارها، انیمیشن ها و غیره
+ - امکان ترکیب متن قالب بندی شده و نمایش عبارات ریاضی
+
+
+به دلیل این قابلیت ها، امروزه ژوپیتر یکی از ابزارهای مهم در اکوسیستم محاسبات علمی محسوب می شود.
+در [اینجا](http://matplotlib.org/examples/pylab_examples/hexbin_demo.html) تصویری از اجرای کد در یک ژوپیتر نوت بوک آورده شده است.
+
+
+
+درحالیکه ژوپیتر تنها روش برنامه نویسی در پایتون نیست، اما بهترین گزینه برای موقعیت هایی است که:
+
+ - می خواهید برنامه نویسی با پایتون را شروع کنید
+ - ایده های جدید را آزمایش کنید یا فقط بخش های کوچکی از کد را بررسی کنید
+ - قصد دارید از محیط های تعاملی قدرتمند آنلاین مانند Google Colab استفاده کنید
+ - می خواهید ایده های علمی خود را با دانشجویان یا همکاران خود به اشتراک بگذارید و با آنها همکاری کنید
+
+این مجموعه دروس نیز برای اجرا در ژوپیتر نوت بوک ها طراحی شده اند.
+
+### راه اندازی ژوپیتر نوت بوک
+
+بعد از نصب آناکوندا، شما می توانید ژوپیتر نوت بوک را اجرا کنید.
+
+برای اینکار می توانید:
+
+ - در منوی برنامه های خود به دنبال Jupyter بگردید
+ - یک ترمینال باز کنید و دستور
jupyter notebook
را اجرا کنید
+
+**کاربران ویندوز باید به جای "ترمینال" از "Anaconda Command Prompt" استفاده کنند.**
+
+اگر روش دوم را انتخاب کنید، با چیزی مشابه تصویر زیر رو به رو خواهید شد.
+
+
+
+خروجی نشان می دهد که نوت بوک در `/http://localhost:8888` در حال اجرا است.
+
+ localhost
اسم رایانه ی محلی شماست
+ - 8888 شماره پورتی است که رایانه ی شما از آن استفاده می کند
+
+
+بنابراین، هسته ی ژوپیتر در حال دریافت دستورات پایتون از طریق پورت 8888 در رایانه ی محلی شماست.
+
+اگر همه چیز به درستی پیش رفته باشد، مرورگر پیش فرض شما باید به طور خودکار یک صفحه ی وب مشابه تصویر زیر را باز کرده باشد.
+
+
+
+
+آنچه در اینجا می بینید *داشبورد* ژوپیتر نام دارد.
+
+اگر به آدرس اینترنتی (URL) بالای صفحه نگاه کنید، باید چیزی مشابه `localhost:8888` وجود داشته باشد که با پیام قبلی مطابقت دارد.
+
+در صورتیکه همه چیز به درستی کار کرده باشد، اکنون می توانید روی "New" در گوشه ی بالا سمت راست کلیک کنید و `Python 3` یا چیزی مشابه آن را انتخاب کنید.
+
+در زیر تصویری که در سیستم ما نشان می دهد را میتوانید ببینید:
+
+
+نوت بوک یک سلول کد فعال را نشان می دهد که می توانید دستورات پایتون را در آن وارد کنید.
+
+### اصول اولیه نوت بوک
+بیاید با نحوه ی ویرایش کد و اجرای برنامه های ساده شروع کنیم.
+
+#### اجرای سلول ها
+در تصویر قبل، سلول درون یک کادر سبز رنگ قرار دارد که نشان می دهد، سلول درحالت ویرایش قرار دارد.
+
+در این حالت، هر چیزی که تایپ کنید، درون سلول نمایش داده می شود و مکان نما چشمک می زند.
+
+وقتی آماده ی اجرای کدی که در سلول نوشتید هستید، به جای آنکه به طور معمول از "Enter" استفاده کنید، کلیدهای "Shift + Enter" را بزنید.
+
+
+
+```{note}
+همچنین با کمی جستجو می توانید گزینه های منو و دکمه هایی را برای اجرای کد درون سلول پیدا کنید.
+```
+
+#### ویرایش در حالت های مختلف
+نکته بعدی که باید درباره ی نوت بوک ژوپیتر بدانید این است که از سیستمی برای ویرایش استفاده می کند که شامل *حالت های مختلف* است.
+
+**یعنی عملکرد صفحه کلید بسته به حالتی که در آن قرار دارید، متفاوت خواهد بود.**
+
+دوحالت اصلی وجود دارد:
+
+1.حالت ویرایش (Edit mode)
+
+ - با یک کادر سبز دور سلول و یک مکان نمای چشمک زن مشخص می شود.
+ - هر چیزی که تایپ کنید، به همان شکل در سلول نوشته می شود.
+
+
+2.حالت فرمان (Command mode)
+
+ - کادر سبز با یک کادر آبی جایگزین می شود.
+ - کلیدهای صفحه کلید به عنوان فرمان تفسیر می شوند. (مثلا با زدن کلید
b
، یک سلول جدید در زیر سلول فعلی ایجاد می شود).
+
+
+برای جا به جایی بین حالت ها:
+
+ - برای رفتن از حالت ویرایش به حالت فرمان: کلید
Esc
یا Ctrl + M
را بزنید.
+ - برای رفتن از حالت فرمان به حالت ویرایش: کلید
Enter
را فشار دهید یا درون یک سلول کلیک کنید.
+
+وقتی به این رفتار حالت محور عادت کنید، کار با ژوپیتر نوت بوک بسیار سریع و کارآمد خواهد بود.
+
+#### وارد کردن یونیکد (مثلا حروف یونانی)
+پایتون از [یونیکد](https://docs.python.org/3/howto/unicode.html) پشتیبانی می کند، بنابراین می توانید از کاراکترهایی مانند $\alpha$ و $\beta$ در نام گذاری کدهای خود استفاده کنید.
+
+در یک سلول، عبارت `alpha/` را تایپ کنید و سپس کلید Tab را از صفحه کیبورد خود فشار دهید.
+
+#### یک برنامه ی آزمایشی
+
+بیایید یک برنامه آزمایشی اجرا کنیم.
+
+می توانیم از این برنامه نمونه استفاده کنیم:[http://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/polar_bar.html](http://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/polar_bar.html).
+
+در آن صفحه، شما کد زیر را مشاهده خواهید کرد:
+
+```{code-cell} ipython
+import numpy as np
+import matplotlib.pyplot as plt
+
+# Fixing random state for reproducibility
+np.random.seed(19680801)
+
+# Compute pie slices
+N = 20
+θ = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
+radii = 10 * np.random.rand(N)
+width = np.pi / 4 * np.random.rand(N)
+colors = plt.cm.viridis(radii / 10.)
+
+ax = plt.subplot(111, projection='polar')
+ax.bar(θ, radii, width=width, bottom=0.0, color=colors, alpha=0.5)
+
+plt.show()
+```
+
+فعلا نگران جزئیات نباشید، بیاید فقط اجرا کنیم و ببینیم چه اتفاقی می افتد.
+
+ساده ترین راه برای اجرای این کد این است که که آن را در یک سلول از نوت بوک کپی و جایگذاری کنید.
+
+امیدواریم که نموداری مشابه دریافت کنید!
+
+### کارکردن با نوت بوک
+
+در ادامه چند نکته درباره ی کار با ژوپیتر نوت بوک آورده شده است.
+
+
+#### تکمیل خودکار با کلید Tab
+
+در جلسه ی قبل این خط از کد را اجرا کردیم: `import numpy as np`
+
+
+ - Numpy یک کتابخانه ی عددی است که به طور گسترده با آن کار خواهیم کرد.
+
+
+بعد از این دستور، می توانیم به توابع کتابخانه Numpy با استفاده از نحو `np.function_name`دسترسی داشته باشیم.
+
+ - برای مثال بیاید دستور
np.random.randn(3)
را امتحان کنید.
+
+
+می توانیم ویژگی های مختلف `np` را با استفاده از کلید Tab بررسی کنیم.
+
+برای نمونه، کافی است تایپ کنیم `np.random.r` و سپس کلید Tab را فشار دهیم.
+
+
+
+ژوپیتر نوت بوک چندین گزینه ی تکمیل کننده ی خودکار را برای انتخاب در اختیارتان قرار می دهد.
+
+به همین ترتیب، کلید Tab هم یادآوری می کند که چه قابلیت هایی در دسترس شما قرار دارد و هم باعث صرفه جویی در تایپ می شود.
+
+#### راهنمای آنلاین
+
+برای مشاهده ی راهنمای نحو `np.random.randn` کافی است دستور `?np.random.randn` را اجرا کنید.
+
+مستندات مربوط به این نحو در پنجره ای به طور جداگانه همانند تصویر زیر نمایش داده می شود.
+
+
+
+با کلیک بر روی ضربدر در قسمت بالایی سمت راست در نیم پنجره ی ایجاد شده برای راهنمای دستور، راهنمای آنلاین بسته می شود.
+
+در ادامه، بیشتر درباره ی نحوه ی ایجاد مستندات مشابه بیشتر یادخواهیم گرفت!
+
+#### سایر محتواها
+
+ژوپیتر نوت بوک علاوه بر اجرای کد، به شما امکان می دهد تا متن، معادلات، نمودارها و حتی ویدیوها را در صفحه جایگذاری کنید.
+
+برای مثال، می توانیم به جای کد ، ترکیبی از متن ساده و لاتکس را وارد کنیم.
+
+سپس، با فشردن `Esc` وارد حالت فرمان (Command mode) می شویم و با تایپ `m` مشخص می کنیم که در حال نوشتن یک فایل [Markdown](http://daringfireball.net/projects/markdown/) هستیم، Markdown یک زبان نشانه گذاری متن شبیه به لاتکس اما ساده تر از آن است.
+
+(همچنین می توانید با استفاده از ماوس، گزینه " Markdown " را از منوی کشویی "Code" که درست زیر نوار منو قرار دارد، انتخاب کنید.)
+
+
+
+حال ما کلیدهای `Shift + Enter` را میزنیم تا نتیجه ای مطابق تصویر زیر ایجاد کنیم:
+
+
+
+### اشکال زدایی کد
+
+به فرآیند شناسایی و حذف خطاها از یک برنامه، اشکال زدایی یا Debugging می گویند.
+
+ازآنجایی که شما زمان زیادی را صرف اشکال زدایی کد خواهید کرد، بنابراین [یادگرفتن نحوه ی انجام درست](https://www.freecodecamp.org/news/what-is-debugging-how-to-debug-code/) آن ضروری است.
+
+اگر از نسخه ی جدیدتری از ژوپیتر نوت بوک استفاده می کنید، باید نماد یک حشره (bug) را در انتهای سمت راست نوار ابزار خود داشته باشید.
+
+
+
+با کلیک بر روی این آیکون، اشکال زدایی ژوپیتر فعال می شود.
+
+```{note}
+ممکن است لازم باشد پنل اشکال زدایی را نیز باز کنید برای اینکار می توانید از این مسیر پیش بروید.(View -> Debugger Panel)
+```
+می توانید با کلیک روی شماره خط سلولی که قصد اشکال زدایی آن را دارید، نقاط توقف (breakpoints) را تنظیم کنید.
+
+وقتی سلول را اجرا می کنید، اشکال زدایی در نقطه ی توقفی که تنظیم کرده بودید، متوقف می شود.
+
+سپس می توانید خط به خط کد را با استفاده از دکمه های "Next" که در نوار ابزار CALLSTACK در پنجره ی سمت راست قرار دارد، بررسی کنید.
+
+
+
+می توانید قابلیت های بیشتری از اشکال زدایی در ژوپیتر را در [اینجا](https://jupyterlab.readthedocs.io/en/latest/user/debugger.html) پیدا کنید.
+
+### اشتراک گذاری نوت بوک ها
+
+فایل های نوت بوک صرفا فایل های متنی با ساختار [JSON](https://en.wikipedia.org/wiki/JSON) هستند که معمولا پسوند `.ipynb` دارند.
+
+ شما می توانید آن ها را به همان شیوه که سایر فایل ها را به اشتراک می گذارید، ارسال کنید یا اینکه از سرویس های وب مانند [nbviewer](http://nbviewer.jupyter.org/) استفاده کنید.
+
+نوت بوک هایی که شما در آن سایت مشاهده می کنید، نسخه های **ایستا (static)** با فرمت HTML هستند.
+برای اجرای نوت بوک ها، کافی است روی آیکون دانلود در بالا سمت راست کلیک کنید و آن را با فرمت `ipynb` ذخیره کنید.
+
+سپس فایل را در جایی روی رایانه ی خودتان ذخیره کنید و از طریق داشبورد ژوپیتر آن را انتخاب کنید و طبق توضیحاتی که پیشتر گفته شد اجرا کنید.
+
+```{note}
+
+اگر به اشتراک گذاری نوت بوک هایی با محتوای تعاملی علاقه مند هستید، پیشنهاد میکنیم [Binder](https://mybinder.org/) را بررسی کنید.
+
+همچنین برای همکاری با دیگران در نوت بوک ها، می توانید از پلتفرم های زیر استفاده کنید:
+
+- [Google Colab](https://colab.research.google.com/)
+- [Kaggle](https://www.kaggle.com/kernels)
+
+و اگر میخواهید کدها را به طور اختصاصی برای خود نگه دارید و همچنان از رابط کاربری آشنا مثل JupyterLab و Notenook استفاده کنید، پس نگاهی به [JupyterLab Real-Time Collaboration extension](https://jupyterlab-realtime-collaboration.readthedocs.io/en/latest/) نیز بیندازید.
+
+```
+### سایت QuantEcon Note
+همچنین QuantEcon دارای یک سایت اختصاصی برای به اشتراک گذاری ژوپیتر نوت بوک های مرتبط با اقتصاد به نام [QuantEcon Notes](http://notes.quantecon.org/) می باشد.
+
+نوت بوک هایی که در QuantEcon Note ارسال می شوند، از طریق لینک قابل اشتراگ گذاری هستند و جامعه ی کاربران می توانند به آنها رأی دهند یا نظرشان را به اشتراک بگذارند.
+
+## نصب کتابخانه ها
+
+بیشتر کتابخانه های موردنیاز ما در این دوره در آناکوندا وجود دارند. اما سایر کتابخانه ها را می توان با `conda` یا `pip` نصب کرد.
+
+یکی از کتابخانه هایی که از آن استفاده خواهیم کرد، [QuantEcon.py](http://quantecon.org/quantecon-py) است.
+
+شما می توانید با اجرای ژوپیتر و تایپ دستور زیر درون یک سلول [QuantEcon.py](http://quantecon.org/quantecon-py) را نصب کنید.
+
+```{code-block} ipython3
+:class: no-execute
+
+!conda install quantecon
+```
+
+همچنین می توانید دستور زیر را درون ترمینال تایپ کنید:
+
+```{code-block} bash
+:class: no-execute
+
+conda install quantecon
+```
+
+اگر به راهنمایی های بیشتری نیاز داشتید می توانید از [صفحه کتابخانه](http://quantecon.org/quantecon-py) اطلاعات موردنیاز خود را کسب کنید.
+
+همچنین برای به روزرسانی به آخرین نسخه که توصیه می شود به طور منظم انجام دهید، می توانید از دستور زیر استفاده کنید:
+
+```{code-block} bash
+:class: no-execute
+
+conda upgrade quantecon
+```
+
+کتابخانه دیگری که از آن استفاده خواهیم کرد [interpolation.py](https://github.com/EconForge/interpolation.py) است.
+
+این کتابخانه را نیز می توانید با استفاده از دستور زیر در ژوپیتر نصب کرد.
+
+```{code-block} ipython3
+:class: no-execute
+
+!conda install -c conda-forge interpolation
+```
+## کار با فایل های پایتون
+
+تا اینجا بیشتر روی اجرای کدهای پایتون در سلول های ژوپیتر نوت بوک تمرکز کردیم. اما به صورت سنتی، بیشتر کدهای پایتون به شکل دیگری اجرا می شوند. به این شکل که ابتدا کدها در یک فایل متنی روی سیستم ذخیره می شوند که به طور قراردادی دارای پسوند `.py` هستند.
+
+برای نمونه می توانیم یک نوع از این فایل ایجاد کنیم:
+
+```{code-cell} ipython
+%%writefile foo.py
+
+print("foobar")
+```
+
+دستور بالا خط `print("foobar")` را در فایلی به نام `foo.py` در مسیر فعلی ذخیره می کند.
+
+در این کد دستور `%%writefile` نمونه ای از یک جادوی سلولی ([cell magic](http://ipython.readthedocs.org/en/stable/interactive/magics.html#cell-magics)) است!
+
+### ویرایش و اجرا
+
+اگر با کدی مواجه شدید که در یک فایل با پسوند `*.py` ذخیره شده است، لازم است به این دو سوال توجه کنید:
+
+1.چگونه باید آن را اجرا کرد؟
+
+2.چگونه می توان آن را ویرایش یا تغییری در آن اعمال کرد؟
+
+برای این کارها شما دو گزینه پیش روی خود دارید!
+
+#### گزینه اول: JupyterLab
+
+محیط [JupyterLab](https://github.com/jupyterlab/jupyterlab) یک محیط توسعه ی یکپارچه (IDE) است که بر پایه ی نوت بوک ها ژوپیتر ساخته شده است. با استفاده از JupyterLab می توانید فایل هایی با پسوند `*.py` را همانند ژوپیتر نوت بوک ها را ویرایش و اجرا کنید.
+
+برای اجرای JupyterLab می توانید آن را در فهرست برنامه ها جستجو کنید یا در ترمینال دستور `jupyter-lab` را وارد نمایید.
+
+اکنون باید بتوانید فایل `foo.py` را که در مرحله ی قبل ساخته بودید در JupyterLab بازکرده، ویرایش و اجرا کنید.
+
+برای اطلاعات بیشتر، می توانید مستندات رسمی را مطالعه کنید یا یک ویدیوی آموزشی جدید در این باره در یوتیوب تماشا کنید.
+
+#### گزینه دوم: استفاده از یک ویرایشگر متن
+
+همچنین می توانید فایل ها را با یک ویرایشگر متن ویرایش کرده و سپس آن را از طریق ژوپیتر نوت بوک اجرا کنید.
+
+ به طور کلی، ویرایشگر متن برنامه ای است که به طور اختصاصی برای کار با فایل های متنی مانند برنامه های پایتون طراحی شده است.
+
+البته هیچ چیز قدرت و کارایی یک ویرایشگر متن خوب را برای کار با کدهای برنامه نویسی را ندارد.
+
+یک ویرایشگر خوب امکانات زیر را ارائه می دهد:
+
+
+ - فرمان های کارآمد برای ویرایش متن(مثل کپی، جایگذاری، جست وجو و جایگزینی)
+ - برجسته سازی نحوی (syntax highlighting) برای خوانایی بهتر کد و امکانات مشابه دیگر
+
+
+در حال حاضر، یکی از محبوب ترین ویرایشگرهای متنی برای برنامه نویسی [VS Code](https://code.visualstudio.com/) است، که کاربری بسیار آسانی دارد و افزونه های باکیفیت زیادی برای آن عرضه شده است.
+
+از طرف دیگر، اگر به دنبال یک ویرایشگر رایگان و قدرتمند هستید و با یک منحنی یادگیری عمودی، چندین روز سردرگمی و دردسر و بازسازی کامل مسیرهای عصبی مغزی خود کنار می آیید، میتوانید [Vim](http://www.vim.org/) را امتحان کنید!
+
+## تمرینات
+
+```{exercise-start}
+:label: gs_ex1
+```
+
+اگر هنوز ژوپیتر در حال اجرا است، آن را با فشردن ترکیب کلیدها `Ctrl-C` در ترمینالی که از آن شروع کرده اید، ببندید.
+
+حالا دوباره ژوپیتر را این بار با استفاده از کد دستوری `jupyter notebook --no-browser` باز کنید.
+
+با این کار، هسته ی ژوپیتز (kernel) بدون آنکه مرورگر به صورت خودکار باز شود، راه اندازی می شود.
+
+همچنین به پیامی که هنگام شروع نمایش داده می شود دقت کنید: باید یک آدرس(URL) مانند `http://localhost:8888` به شما بدهد که نوت بوک در آن درحال اجرا است.
+
+اکنون وقت آن است که:
+
+1.مرورگر خود را اجرا کنید (یا اگر باز است، یک تب جدید باز کنید.)
+
+2.آدرسی که در مرحله قبل داده شده (مثلا `http://localhost:8888`) را در نوار آدرس وارد کنید.
+
+اکنون باید بتوانید یک جلسه ی معمولی از نوت بوک ژوپیتر را اجرا کنید.
+
+این روش، جایگزین دیگری برای اجرای نوت بوک است که می تواند در برخی موقعیت ها مفید باشد.
+برای نمونه، اگر صفحه ی وب تصادفا بسته شود ولی هسته ی ژوپیتر هنوز فعال باشد، همچنان میتوانید از این طریق دوباره به نوت بوک دسترسی پیدا کنید.
+
+```{exercise-end}
+```
+
+
+
+
+
+
+
+
+
+
diff --git a/lectures/_toc.yml b/lectures/_toc.yml
index 3f85af5..c2ff838 100644
--- a/lectures/_toc.yml
+++ b/lectures/_toc.yml
@@ -5,7 +5,7 @@ parts:
numbered: true
chapters:
- file: about_py
- # - file: getting_started
+ - file: Getting_started
# - file: python_by_example
# - file: functions
# - file: python_essentials
diff --git a/lectures/about_py.md b/lectures/about_py.md
index 5a95954..8e78bae 100644
--- a/lectures/about_py.md
+++ b/lectures/about_py.md
@@ -1,101 +1,101 @@
-مقدمه ای بر پایتون
-
-درباره ی این دوره
-
-# برنامه نویسی پایتون برای اقتصاد و مالی
-
-" پایتون به قدری پیشرفته و قدرتمند شده است که دیگر نیازی به استفاده از R نداریم.
-
-طرفداران R، ببخشید؛ خود من هم زمانی یکی از شما بودم، اما دیگر به سراغ R نمی روم."
+# درباره ی این دوره
+```{epigraph}
+" پایتون به قدری پیشرفته و قدرتمند شده است که دیگر نیازی به استفاده از R نداریم. طرفداران R، ببخشید؛ خود من هم زمانی یکی از شما بودم، اما دیگر به سراغ R نمی روم."
_ کریس ویگینس
+```
-مقدمه
+## مقدمه
در این مجموعه خواهید آموخت که از پایتون برای محاسبات علمی و با تمرکز بر اقتصاد و امور مالی استفاده کنید. این مجموعه برای افراد مبتدی طراحی شده است، اما افراد حرفه ای نیز محتوای مفیدی را در این دروس پیدا خواهند کرد.
در این درس:
-پایتون را معرفی می کنیم
+
+
+ - پایتون را معرفی خواهیم کرد
-برخی از ویژگی های پایتون را نشان خواهیم داد
+ - برخی از ویژگی های پایتون را نشان خواهیم داد
-در رابطه با ارتباط پایتون و هوش مصنوعی بحث خواهیم کرد
+ - در رابطه با ارتباط پایتون و هوش مصنوعی بحث خواهیم کرد
-توضیح می دهیم که چرا پایتون زبان محبوب ما برای محاسبات علمی است
+ - توضیح می دهیم که چرا پایتون زبان محبوب ما برای محاسبات علمی است
-و شما را به ادامه ی مسیر و اهدافتان تشویق می کنیم.
+ - و شما را به ادامه ی مسیر و اهدافتان تشویق می کنیم.
+
همچنین شما نیازی به درک همه ی مواردی که در این درس خواهید دید، ندارید؛ زیرا در ادامه ی دروس تمامی جزئیات را آموزش خواهیم داد.
-# آیا نمیتوانم فقط از ChatGPT استفاده کنم؟
+### آیا نمیتوانم فقط از ChatGPT استفاده کنم؟
خیر!
-شاید وسوسه انگیز به نظر برسد که در عصر هوش مصنوعی هایی مانند ChatGPT و LLM و ابزارهایی با بهره وری فوق العاده برای برنامه نویسی، ما همچنان به یادگیری نحوه ی کد نویسی نیاز داشته باشیم.
+شاید وسوسه انگیز به نظر برسد که در عصر هوش مصنوعی هایی مانند [ChatGPT](https://chatgpt.com/) و LLM و ابزارهایی با بهره وری فوق العاده برای برنامه نویسی، ما همچنان به یادگیری نحوه ی کد نویسی نیاز داشته باشیم.
در واقع شاید یک هوش مصنوعی بتواند همراه خوبی برای یادگیری دروس این دوره باشد؛ هوش مصنوعی مطمئنا می تواند به شما در نوشتن و ترکیب کد ها کمک کند (سعی کنید کد های این مجموعه را کپی کنید و از هوش مصنوعی بخواهید آن را برای شما توضیح دهد)؛ اما هوش مصنوعی نمی تواند سوالات جدیدی را که قبلا ندیده است به طور کامل و قابل اعتماد حل کند.
بنابراین شما نیاز خواهید داشت تا به عنوان یک ناظر بتوانید کد ها رابخوانید، بنویسید و درک کنید.
-# آیا Matlab بهتر نیست؟
+### آیا Matlab بهتر نیست؟
نه! نه و هزاران بار نه! امروزه تقریبا برای اکثر مشکلات، کتابخانه های علمی پایتون قابلیت های بسیار پیشرفته تری نسبت به متلب دارند. ما مزایای استفاده از کتابخانه های پایتون را در این مجموعه و سری های بعد توضیح خواهیم داد، همچنین خواهیم گفت که چگونه طراحی زیبای پایتون به شما کمک می کند تا کدی تمیز و کارآمد بنویسید.
علاوه براین ویژگی ها، پایتون توسط یک انجمن بزرگ، کمک کننده و رایگان در حال گسترش کاربران است.
-# برنامه نویسی پایتون چیست؟
-پایتون یک زبان برنامه نویسی همه منظوره است که در سال 1989 توسط خیدو فان روسوم ابداع شد.
+## برنامه نویسی پایتون چیست؟
+[پایتون](https://www.python.org) یک زبان برنامه نویسی همه منظوره است که در سال 1989 توسط [خیدو فان روسوم](https://en.wikipedia.org/wiki/Guido_van_Rossum) ابداع شد.
-پایتون رایگان و متن باز است و توسعه ی آن از طریق بنیاد نرم افزار پایتون انجام می شود.
+پایتون رایگان و [متن باز](https://en.wikipedia.org/wiki/Open_source) است و توسعه ی آن از طریق [بنیاد نرم افزار پایتون](https://www.python.org/psf/) انجام می شود.
این موضوع مهم است زیرا:
-پولمان را پس انداز می کند، به جای یک شرکت انتفاعی، توسط جامعه ی کاربران کنترل می شود و قابلیت تکثیر و علم باز را تشویق می کند.
+پولمان را پس انداز می کند، به جای یک شرکت انتفاعی، توسط جامعه ی کاربران کنترل می شود و قابلیت تکثیر و [علم باز](https://en.wikipedia.org/wiki/Open_science) را تشویق می کند.
-# کاربردهای رایج پایتون
+### کاربردهای رایج پایتون
پایتون یک زبان همه منظوره است که تقریبا در همه ی حوزه های کاربردی از جمله موارد زیر استفاده می شود:
هوش مصنوعی، محاسبات علمی، ارتباطات، توسعه ی وب، CGI و رابط های کاربری گرافیکی، توسعه ی بازی، محتوای چندرسانه ای و غیره.
-همچنین بطور گسترده ای توسط شرکت های زیر مورد استفاده و پشتیبانی قرار می گیرد:
+همچنین بطور گسترده ای توسط شرکت های زیر و بسیاری دیگر از شرکت ها مورد استفاده و پشتیبانی قرار می گیرد:
-Google، Open AI،Netflix ، Meta، Dropbox، Amazon، Reddit و غیره.
+ [Google](https://www.google.com/)، [OpenAI](https://openai.com/)، [Netflix](https://www.netflix.com/)، [Meta](https://opensource.fb.com/)، [Dropbox](https://www.dropbox.com/)، [Amazon](https://www.amazon.com/)، [Reddit](https://www.reddit.com/)
-# جایگاه محبوبیت
-بدون شک، پایتون یکی از محبوب ترین زبان های برنامه نویسی است و کتابخانه های پایتون مانند Pandas و Polars جایگزین ابزارهای آشنایی همچونExcel و VBA هستند که به عنوان یک مهارت ضروری در زمینه های مالی و بانکی محسوب می شوند.
+### جایگاه محبوبیت
+
+بدون شک، پایتون یکی از [محبوب ترین زبان های برنامه نویسی](https://www.tiobe.com/tiobe-index/) است و کتابخانه های پایتون مانند [pandas](https://pandas.pydata.org/) و [Polars](https://pola.rs/) جایگزین ابزارهای آشنایی همچون Excel و VBA هستند که به عنوان یک مهارت ضروری در زمینه های مالی و بانکی محسوب می شوند.
علاوه براین، پایتون در جامعه ی علمی - به ویژه هوش مصنوعی – بسیار محبوب است؛ نمودار زیر که با استفاده از آمارهای وبسایت استک اورفلو تهیه شده، شواهدی از این امر را نشان می دهد.
-این تصویر نسبت محبوبیت یک کتابخانه ی هوش مصنوعی پایتون با نامPyTorch به MATLAB را نشان می دهد.
+این تصویر نسبت محبوبیت یک کتابخانه ی هوش مصنوعی پایتون با نام [PyTorch](https://pytorch.org/) به MATLAB را نشان می دهد.
-
+
نمودار نشان می دهد که با رشد سریع PyTorch محبوبیت MATLAB در حال کمرنگ شدن است. علاوه براین، PyTorch تنها یکی از هزاران کتابخانه های در دسترس پایتون برای محاسبات علمی است.
-# ویژگی ها
+### ویژگی ها
-پایتون یک زبان برنامه نویسی سطح بالا است، بدین معنی که خواندن، نوشتن و اشکال زدایی آن نسبتا آسان است و یک هسته ی زبانی مختصر دارد که به آسانی قابل یادگیری است. این هسته ی زبانی، توسط بسیاری از کتابخانه ها پشتیبانی می شود که می توانید درصورت نیاز، استفاده از آنها را یادبگیرید.
+پایتون یک [زبان برنامه نویسی سطح بالا](https://en.wikipedia.org/wiki/High-level_programming_language) است، بدین معنی که خواندن، نوشتن و اشکال زدایی آن نسبتا آسان است و یک هسته ی زبانی مختصر دارد که به آسانی قابل یادگیری است. این هسته ی زبانی، توسط بسیاری از کتابخانه ها پشتیبانی می شود که می توانید درصورت نیاز، استفاده از آنها را یادبگیرید.
-پایتون بسیار مبتدی پسند است، زیرا؛ برای دانش آموزانی که برنامه نویسی را یادمی گیرند مناسب بوده و در بسیاری از برنامه های کارشناسی و کارشناسی ارشد تدریس می شود. همچنین پایتون دارای ویژگی های دیگری همچون پشتیبانی از چندین سبک برنامه نویسی(روشی، شی گرا،کاربردی و...) است و همچنین به حای کامپایل شدن بصورت مفسری اجرا می شود.
+پایتون بسیار مبتدی پسند است، زیرا؛ برای دانش آموزانی که برنامه نویسی را یادمی گیرند مناسب بوده و در بسیاری از برنامه های کارشناسی و کارشناسی ارشد تدریس می شود. همچنین پایتون دارای ویژگی های دیگری همچون پشتیبانی از چندین سبک برنامه نویسی(روشی، شی گرا،کاربردی و...) است و همچنین به جای [کامپایل](https://en.wikipedia.org/wiki/Compiler) شدن بصورت [مفسری](https://en.wikipedia.org/wiki/Interpreter_(computing)) اجرا می شود.
-# نحو و طراحی
+### نحو و طراحی
یکی از دلایل محبوبیت پایتون، طراحی ساده و ظریف آن است که در ادامه نمونه های زیادی از آن خواهیم دید.
-برای بهتر درک کردن این موضوع، اجازه دهید به یک مثال از زبان برنامه نویسی جاوا و پایتون نگاهی بیاندازیم.
+برای بهتر درک کردن این موضوع، اجازه دهید به یک مثال از زبان برنامه نویسی [جاوا](https://en.wikipedia.org/wiki/Java_(programming_language)) و پایتون نگاهی بیاندازیم.
قرار است کد جاوا یک فایل پیش فرض به نام data.csv باز کند و میانگین مقادیر را در ستون دوم محاسبه کند. طبق آنچه در زیر می بینید، حتی بدون دانستن جاوا می توانید متوجه شوید که کد طولانی و پیچیده ای است.
حال به کد پایتون برای همان دستور را ببینید، حتی اگر هنوز چیزی از پایتون نمی دانید، می توانید ببینید که کد پایتون ساده تر و خواندن آن آسان تر است. به همین علت سادگی پایتون و طراحی منظم آن است که باعث گسترش محبوبیت این زبان برنامه نویسی شده است.
-(توجه: در ادامه شما نیازی به خواندن و درک کد جاوا ندارید!)
+**توجه: در ادامه شما نیازی به خواندن و درک کد جاوا ندارید!**
**کد برنامه نویسی جاوا**
-```java
+```{code-block} java
+
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
@@ -134,13 +134,16 @@ public class CSVReader {
}
}
}
+
```
**کد برنامه نویسی پایتون**
-```python
+```{code-cell} python3
+:tags: [skip-execution]
+
import csv
total, count = 0, 0
@@ -154,15 +157,16 @@ with open("data.csv", mode='r') as file:
pass
print(f"Average: {total / count if count else 'No valid data'}")
+
```
-# اتصال هوش مصنوعی
+### اتصال به هوش مصنوعی
قطعا می دانید که هوش مصنوعی به سرعت در حال گسترش و پیشرفت است، مگر اینکه سالها درون غار زندگی کرده و از هرگونه تماس با دنیای مدرن اجتناب کرده باشید!
همانطور که پیش تر به آن اشاره شد، امروزه هوش مصنوعی به خوبی می تواند به شما در نوشتن کد کمک کند. بدون شک هوش مصنوعی در آینده بسیاری از وظایفی که در حال حاضر توسط انسان انجام می شود را درست مانند سایر اشکال ماشین آلات در چند قرن گذشته، برعهده خواهد گرفت. پایتون نیز نقش بزرگی را در پیشرفت هوش مصنوعی و یادگیری ماشین ایفا می کند و این بدان معناست که شرکت های فناوری، در حال سرمایه گذاری بر روی توسعه ی کتابخانه های بسیار قدرتمند پایتون هستند. بنابراین حتی اگر قصد ندارید روی هوش مصنوعی و یادگیری ماشین کار کنید، می توانید از یادگیری بهره مند شده و از برخی از این کتابخانه ها برای پروژه های خود در اقتصاد، مالی و همچنین سایر علوم استفاده کنید؛ که این دوره چگونگی این کار را توضیح خواهد داد.
-# برنامه نویسی علمی با پایتون
+## برنامه نویسی علمی با پایتون
پیش تر درباره ی اهمیت پایتون در هوش مصنوعی، یادگیری ماشین و علم داده صحبت کرده ایم. حال بیاید به نقش پایتون در سایر زمینه های محاسبات علمی نگاهی بیاندازیم.
@@ -170,93 +174,47 @@ print(f"Average: {total / count if count else 'No valid data'}")
در ادامه به طور مختصر چند نمونه از استفاده ی پایتون را برای برنامه نویسی علمی نشان می ذهیم.
-# NumPy
+### NumPy
یکی از مهم ترین بخش های محاسبات علمی کار با داده است. داده ها اغلب در ماتریس ها، بردارها و آرایه ها ذخیره می شوند و ما میتوانیم یک آرایه ی ساده از اعداد را با پایتون خالص به صورت زیر ایجاد کنیم:
-```python
+
+```{code-cell} python3
a = [-3.14, 0, 3.14] # A Python list
a
```
-```
-[-3.14, 0, 3.14]
-```
این آرایه ی بسیار کوچک نشان می دهد که کار با پایتون خالص بسیار راحت است. اما وقتی می خواهیم با آرایه های بزرگتری در برنامه های واقعی کار کنیم، به کارایی بیشتر و ابزارهای بیشتری نیاز داریم. بنابراین، برای اینکار باید از کتابخانه ها برای کار با آرایه ها استفاده کنیم.
-برای پایتون، مهمترین کتابخانه ی پردازش ماتریس و آرایه، کتابخانه NumPy است. به عنوان مثال بیاید یک آرایه با 100 عنصر را با NumPy بسازیم:
+برای پایتون، مهمترین کتابخانه ی پردازش ماتریس و آرایه، کتابخانه [NumPy](http://www.numpy.org/) است. به عنوان مثال بیاید یک آرایه با 100 عنصر را با NumPy بسازیم:
-```python
+```{code-cell} python3
import numpy as np # Load the library
a = np.linspace(-np.pi, np.pi, 100) # Create even grid from -π to π
-
a
```
-```
-array([-3.14159265, -3.07812614, -3.01465962, -2.9511931 , -2.88772658,
-
--2.82426006, -2.76079354, -2.69732703, -2.63386051, -2.57039399,
-
--2.50692747, -2.44346095, -2.37999443, -2.31652792, -2.2530614 ,
-
--2.18959488, -2.12612836, -2.06266184, -1.99919533, -1.93572881,
-
--1.87226229, -1.80879577, -1.74532925, -1.68186273, -1.61839622,
-
--1.5549297 , -1.49146318, -1.42799666, -1.36453014, -1.30106362,
-
--1.23759711, -1.17413059, -1.11066407, -1.04719755, -0.98373103,
-
--0.92026451, -0.856798 , -0.79333148, -0.72986496, -0.66639844,
--0.60293192, -0.53946541, -0.47599889, -0.41253237, -0.34906585,
-
--0.28559933, -0.22213281, -0.1586663 , -0.09519978, -0.03173326,
-
-0.03173326, 0.09519978, 0.1586663 , 0.22213281, 0.28559933,
-
-0.34906585, 0.41253237, 0.47599889, 0.53946541, 0.60293192,
-
-0.66639844, 0.72986496, 0.79333148, 0.856798 , 0.92026451,
-
-0.98373103, 1.04719755, 1.11066407, 1.17413059, 1.23759711,
-
-1.30106362, 1.36453014, 1.42799666, 1.49146318, 1.5549297 ,
-
-1.61839622, 1.68186273, 1.74532925, 1.80879577, 1.87226229,
-
-1.93572881, 1.99919533, 2.06266184, 2.12612836, 2.18959488,
-
-2.2530614 , 2.31652792, 2.37999443, 2.44346095, 2.50692747,
-
-2.57039399, 2.63386051, 2.69732703, 2.76079354, 2.82426006,
-
-2.88772658, 2.9511931 , 3.01465962, 3.07812614, 3.14159265])
-```
حالا بیاید این آرایه را با اعمال توابع تبدیل کنیم:
-```python
+```{code-cell} python3
b = np.cos(a) # Apply cosine to each element of a
-
c = np.sin(a) # Apply sin to each element of a
```
-و حالا میتوانیم به راحتی حاصلضرب اسکالر b و c را بدست بیاوریم:
+و حالا میتوانیم به راحتی حاصل ضرب اسکالر `b` و `c` را بدست بیاوریم:
-```python
+```{code-cell} python3
b @ c
```
-```
-9.853229343548264e-16
-```
+
همچنین میتوانیم با پایتون بسیاری از دستورات دیگر را انجام دهیم، مانند اینکه میانگین و واریانس آرایه ها را محاسبه کند، ماتریس بسازد و سیستم های خطی را حل کند، آرایه های تصادفی برای شبیه سازی ایجاد کند و... که جزئیات را در بخش های بعدی پوشش خواهیم داد.
-# جایگزین های NumPy
+### جایگزین های NumPy
-درحالیکه هنوز سلطان پردازش آرایه ها در پایتون NumPy است، اما اکنون رقبای جدیدی نیز دارد؛ کتابخانه هایی مانند CuPy، PyTorch، JAX نیز انواع آرایه ها و عملیات آرایه ای را تعبیه کرده اند و می توانند بسیار سریع و کارآمد باشند. همانطور که بعدا در این مجموعه توضیح خواهیم داد؛ در واقع این کتابخانه ها در استفاده از پردازش موازی و سخت افزار سریع، بهتر هستند. با این حال، شما هنوز هم باید ابتدا NumPy را یاد بگیرید، زیرا؛ ساده تر است و یک پایه ی قوی را فراهم می کند، به طور مستقیم عملکرد کتابخانه هایی مانند JAX را گسترش می دهد و از اینرو وقتی NumPy را می شناسید، یادگیری آن را نیز آسان تر می کند.
+درحالیکه هنوز سلطان پردازش آرایه ها در پایتون NumPy است، اما اکنون رقبای جدیدی نیز دارد؛ کتابخانه هایی مانند [CuPy](https://cupy.dev/)، [Pytorch](https://pytorch.org/)، [JAX](https://github.com/google/jax) نیز انواع آرایه ها و عملیات آرایه ای را تعبیه کرده اند و می توانند بسیار سریع و کارآمد باشند. همانطور که بعدا در این مجموعه توضیح خواهیم داد؛ در واقع این کتابخانه ها در استفاده از پردازش موازی و سخت افزار سریع، بهتر هستند. با این حال، شما هنوز هم باید ابتدا NumPy را یاد بگیرید، زیرا؛ ساده تر است و یک پایه ی قوی را فراهم می کند، به طور مستقیم عملکرد کتابخانه هایی مانند JAX را گسترش می دهد و از اینرو وقتی NumPy را می شناسید، یادگیری آن را نیز آسان تر می کند.
-# SciPy
+### SciPy
-کتابخانه SciPy بر روی NumPy ساخته شده است و عملکردهای اضافی را ارائه می دهد.
+کتابخانه [SciPy](http://www.scipy.org) بر روی NumPy ساخته شده است و عملکردهای اضافی را ارائه می دهد.
برای مثال بیاید حساب کنیم جاییکه توزیع نرمال استاندارد است:
+ دارای توزیع نرمال استاندارد است:
+
-```python
+```{code-cell} python3
from scipy.stats import norm
from scipy.integrate import quad
@@ -283,38 +242,43 @@ from scipy.integrate import quad
value, error = quad(ϕ.pdf, -2, 2) # Integrate using Gaussian quadrature
value
```
-```
-0.9544997361036417
-```
-کتابخانه ی SciPy شامل بسیاری از امور استاندارد کاربردی مانند جبرخطی، یکپارچه سازی، درون یابی، بهینه سازی، توزیع ها و تکنیک های آماری و پردازش سیگنال است که بعدا در مورد آنها با جزئیات بیشتر صحبت خواهیم کرد.
+کتابخانه ی SciPy شامل بسیاری از امور استاندارد کاربردی مانند [جبرخطی](http://docs.scipy.org/doc/scipy/reference/linalg.html)، [یکپارچه سازی](http://docs.scipy.org/doc/scipy/reference/integrate.html)، [درون یابی](http://docs.scipy.org/doc/scipy/reference/interpolate.html)، [بهینه سازی](http://docs.scipy.org/doc/scipy/reference/optimize.html)، [توزیع ها و تکنیک های آماری](http://docs.scipy.org/doc/scipy/reference/stats.html) و [پردازش سیگنال](http://docs.scipy.org/doc/scipy/reference/signal.html) است که بعدا در مورد آنها با جزئیات بیشتر صحبت خواهیم کرد.
+
+### گرافیک
-# گرافیک
+نقطه ی قوت اصلی پایتون تجسم داده ها است. محبوب ترین و جامع ترین کتابخانه ی پایتون برای ایجاد شکل ها و نمودارها [Matplotlib](http://matplotlib.org/) است که شامل قابلیت های ایجاد تصاویر نمودارها، هیستوگرام ها، سطوح کانتور، نمودارهای سه بعدی، نمودارهای میله ای و... بوده و می تواند خروجی ها را در قالب های مختلف مانند (PDF، PNG، EPS و...) ارائه دهد و همچنین قابلیت ادغام LaTex را نیز دارد.
-نقطه ی قوت اصلی پایتون تجسم داده ها است. محبوب ترین و جامع ترین کتابخانه ی پایتون برای ایجاد شکل ها و نمودارها Matplotlib است که شامل قابلیت های ایجاد تصاویر نمودارها، هیستوگرام ها، سطوح کانتور، نمودارهای سه بعدی، نمودارهای میله ای و... بوده و می تواند خروجی ها را در قالب های مختلف مانند (PDF، PNG، EPS و...) ارائه دهد و همچنین قابلیت ادغام LaTex را نیز دارد. می تواند مثال های زیر را ببینید:
+آنچه در ادامه می بینید مثال هایی از این کتابخانه هستند:
-
+
*نمونه طرح دو بعدی با حاشیه نویسی لاتکس تعبیه شده*
-
+
*نمونه طرح سه بعدی*
-
+
*نمونه طرح کانتور*
+همچنین می توانید نمونه های بیشتری را در [گالری تصاویر Matplotlib](https://matplotlib.org/stable/gallery/index.html) بیابید.
+
+ سایر کتابخانه های گرافیکی عبارتند از [seaborn](https://seaborn.pydata.org/)، [Plotly](https://plot.ly/python/) (یک رابط سطح بالا برای Matplotlib می باشد)، [Altair](https://altair-viz.github.io/) و [Bokeh](http://bokeh.pydata.org/en/latest/) .
+
+ همچنین برای مشاهده نمونه های بیشتری از نمودارهای رسم شده با استفاده از کتابخانه های مختلف، می توانید به [گالری نمودارهای پایتون](https://www.python-graph-gallery.com/) مراجعه کنید.
- سایر کتابخانه های گرافیکی عبارتند از Plotly، seaborn (یک رابط سطح بالا برای Matplotlib می باشد)، Altair و Bokeh .
+### شبکه ها و نمودارها
-شبکه ها و نمودارها
+مطالعه ی شبکه ها و نمودارها بخش مهمی از کار علمی در اقتصاد، مالی و سایر زمینه ها است؛ به عنوان مثال، ما به مطالعه ی مواردی چون شبکه های تولید، شبکه های بانکی و موسسات مالی، شبکه های اجتماعی و... علاقه مند هستیم.
+(اگر تمایل به کسب اطلاعات بیشتر در این مورد دارید، ما [کتابی در زمینه شبکه های اقتصادی](https://networks.quantecon.org/) داریم که میتوانید به آن رجوع کنید.)
-مطالعه ی شبکه ها و نمودارها بخش مهمی از کار علمی در اقتصاد، مالی و سایر زمینه ها است؛ به عنوان مثال، ما به مطالعه ی مواردی چون شبکه های تولید، شبکه های بانکی و موسسات مالی، شبکه های اجتماعی و... علاقه مند هستیم؛ پایتون نیز کتابخانه های زیادی برای مطالعه ی شبکه ها و نمودارها دارد. یکی از معروف ترین این کتابخانه ها NetworkX است که از جمله ویژگی های آن داشتن الگوریتم های استاندارد گراف برای تحلیل شبکه ها و فرآیندهای مربوط به نمایش نمودارها است.
+ پایتون نیز کتابخانه های زیادی برای مطالعه ی شبکه ها و نمودارها دارد. یکی از معروف ترین این کتابخانه ها [NetworkX](http://networkx.github.io/) است که از جمله ویژگی های آن داشتن الگوریتم های استاندارد گراف برای تحلیل شبکه ها و فرآیندهای مربوط به نمایش نمودارها است.
در زیر نمونه ای از کد آورده شده است که یک گراف تصادفی ایجاد و رسم می کند. رنگ گره ها براساس طول کوتاه ترین مسیر از یک گره ی مرکزی مشخص تعیین می شود.
-```python
+```{code-cell} python3
import networkx as nx
import matplotlib.pyplot as plt
np.random.seed(1234)
@@ -341,34 +305,33 @@ nx.draw_networkx_nodes(g,
cmap=plt.cm.jet_r)
plt.show()
```
-
-# سایرکتابخانه های علمی
+### سایرکتابخانه های علمی
همانطور که پیشتر گفته شد، درواقع هزاران کتابخانه ی علمی برای پایتون وجود دارد که برخی کوچک هستند و وظایف بسیارخاصی را انجام می دهند و برخی دیگر از نظر خطوط کد و سرمایه گذاری انجام شده روی آنها توسط کدنویس ها و شرکت های فناوری، بسیار بزرگ هستند.
در اینجا فهرست کوتاهی از چند کتابخانه ی علمی مهم برای پایتون که پیشتر نگفتیم برایتان آورده ایم:
-SymPy: برای جبر نمادین، از جمله محاسبه ی حد، مشتق و انتگرال
+[SymPy](http://www.sympy.org/): برای جبر نمادین، از جمله محاسبه ی حد، مشتق و انتگرال
-Statsmodels: برای روال های آماری
+[statsmodels](http://statsmodels.sourceforge.net/): برای توابع آماری
-Scikit-learn: برای یادگیری ماشین
+[scikit-learn](http://scikit-learn.org/): برای یادگیری ماشین
-Keras: برای یادگیری ماشین
+[Keras](https://keras.io/): برای یادگیری ماشین
-Pyro و PyStan: برای تحلیل داده های بیزی
+[Pyro](https://pyro.ai/) و [PyStan](https://pystan.readthedocs.org/en/latest/): برای تحلیل داده های بیزی
-GeoPandas: برای تحلیل داده های مکانی
+[GeoPandas](https://geopandas.org/en/stable/): برای تحلیل داده های مکانی
-Dask: برای پردازش موازی
+[Dask](https://docs.dask.org/en/stable/): برای پردازش موازی
-Numba: اجرای پایتون با سرعت برابر با کدهای سطح پایین قابل اجرا توسط سخت افزار
+[Numba](http://numba.pydata.org/): اجرای پایتون با سرعت برابر با کدهای سطح پایین قابل اجرا توسط سخت افزار
-CVXPY: برای بهینه سازی محدب
+[CVXPY](https://www.cvxpy.org/): برای بهینه سازی محدب
-Scikit-image و OpenCV: برای پردازش و تحلیل داده های تصویری
+[scikit-image](https://scikit-image.org/) و [OpenCV](https://opencv.org/): برای پردازش و تحلیل داده های تصویری
-BeautifulSoup: XML و HTML برای استخراج داده ها از فایل های
+[BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/): XML و HTML برای استخراج داده ها از فایل های
در این مجموعه خواهیم آموخت که چگونه از بسیاری از این کتابخانه ها برای کارهای محاسباتی علمی در اقتصاد و امور مالی استفاده کنیم.
diff --git a/lectures/images/7c437f98387eea82088cfa4a78bbdbf96ba625a77f4db1ceb5fc391941b56d78.png b/lectures/images/7c437f98387eea82088cfa4a78bbdbf96ba625a77f4db1ceb5fc391941b56d78.png
deleted file mode 100644
index db8b3f6..0000000
Binary files a/lectures/images/7c437f98387eea82088cfa4a78bbdbf96ba625a77f4db1ceb5fc391941b56d78.png and /dev/null differ
diff --git a/lectures/images/bn_density1.png b/lectures/images/about-py/bn_density1.png
similarity index 100%
rename from lectures/images/bn_density1.png
rename to lectures/images/about-py/bn_density1.png
diff --git a/lectures/images/career_vf.png b/lectures/images/about-py/career_vf.png
similarity index 100%
rename from lectures/images/career_vf.png
rename to lectures/images/about-py/career_vf.png
diff --git a/lectures/images/pytorch_vs_matlab.png b/lectures/images/about-py/pytorch_vs_matlab.png
similarity index 100%
rename from lectures/images/pytorch_vs_matlab.png
rename to lectures/images/about-py/pytorch_vs_matlab.png
diff --git a/lectures/images/qs.png b/lectures/images/about-py/qs.png
similarity index 100%
rename from lectures/images/qs.png
rename to lectures/images/about-py/qs.png
diff --git a/lectures/images/getting-started/debug.png b/lectures/images/getting-started/debug.png
new file mode 100644
index 0000000..e1603ab
Binary files /dev/null and b/lectures/images/getting-started/debug.png differ
diff --git a/lectures/images/getting-started/debugger_breakpoint.png b/lectures/images/getting-started/debugger_breakpoint.png
new file mode 100644
index 0000000..e43d833
Binary files /dev/null and b/lectures/images/getting-started/debugger_breakpoint.png differ
diff --git a/lectures/images/getting-started/jp_demo.png b/lectures/images/getting-started/jp_demo.png
new file mode 100644
index 0000000..b3c65df
Binary files /dev/null and b/lectures/images/getting-started/jp_demo.png differ
diff --git a/lectures/images/getting-started/nb.png b/lectures/images/getting-started/nb.png
new file mode 100644
index 0000000..8b97373
Binary files /dev/null and b/lectures/images/getting-started/nb.png differ
diff --git a/lectures/images/getting-started/nb2.png b/lectures/images/getting-started/nb2.png
new file mode 100644
index 0000000..b9c8de8
Binary files /dev/null and b/lectures/images/getting-started/nb2.png differ
diff --git a/lectures/images/getting-started/nb3.png b/lectures/images/getting-started/nb3.png
new file mode 100644
index 0000000..51fea97
Binary files /dev/null and b/lectures/images/getting-started/nb3.png differ
diff --git a/lectures/images/getting-started/nb6.png b/lectures/images/getting-started/nb6.png
new file mode 100644
index 0000000..58ca286
Binary files /dev/null and b/lectures/images/getting-started/nb6.png differ
diff --git a/lectures/images/getting-started/nb6a.png b/lectures/images/getting-started/nb6a.png
new file mode 100644
index 0000000..706986b
Binary files /dev/null and b/lectures/images/getting-started/nb6a.png differ
diff --git a/lectures/images/getting-started/nb7.png b/lectures/images/getting-started/nb7.png
new file mode 100644
index 0000000..a1b5672
Binary files /dev/null and b/lectures/images/getting-started/nb7.png differ
diff --git a/lectures/images/getting-started/nb8.png b/lectures/images/getting-started/nb8.png
new file mode 100644
index 0000000..1ad8d0d
Binary files /dev/null and b/lectures/images/getting-started/nb8.png differ
diff --git a/lectures/images/getting-started/starting_nb.png b/lectures/images/getting-started/starting_nb.png
new file mode 100644
index 0000000..180dd2f
Binary files /dev/null and b/lectures/images/getting-started/starting_nb.png differ