محتوای کلاس برنامهنویسی #پایتون دانشگاه صنعتی شریف
🔗 https://github.com/aaghamohammadi/python-tutor
ترم بهار امسال این افتخار را داشتم که درس مبانی برنامهسازی (پایتون) را به دانشجویان کارشناسی دانشگاه صنعتی شریف تدریس کنم.
این درس شامل پنج تمرین، یک پروژه، یک میانترم و پایانترم بود. تیمی ۳۴ نفره به عنوان دستیار آموزشی مسئول طراحی و تصحیح تمارین و پروژه درس بود.
با کمک تیم دستیار آموزشی در نهایت توانستیم در ارزشیابی درس آخر ترم (نمرهای که دانشجویان به عملکرد استاد و کلاس درس میدهند) نمره ۳.۸۳ از ۴ را کسب کنیم! بدون همراهی تیم دستیار آموزشی و دانشجویان کلاس امکان ارائه این درس با چنین کیفیتی بالایی نبود.
تمامی مطالب کلاس (سوالات + لینک به ویدیوهای درس) را داخل گیتهاب قرار دادم. از لینک ابتدایی پست میتوانید به تمام محتوای آموزشی کلاس دسترسی پیدا کنید.
🔗 https://github.com/aaghamohammadi/python-tutor
ترم بهار امسال این افتخار را داشتم که درس مبانی برنامهسازی (پایتون) را به دانشجویان کارشناسی دانشگاه صنعتی شریف تدریس کنم.
این درس شامل پنج تمرین، یک پروژه، یک میانترم و پایانترم بود. تیمی ۳۴ نفره به عنوان دستیار آموزشی مسئول طراحی و تصحیح تمارین و پروژه درس بود.
با کمک تیم دستیار آموزشی در نهایت توانستیم در ارزشیابی درس آخر ترم (نمرهای که دانشجویان به عملکرد استاد و کلاس درس میدهند) نمره ۳.۸۳ از ۴ را کسب کنیم! بدون همراهی تیم دستیار آموزشی و دانشجویان کلاس امکان ارائه این درس با چنین کیفیتی بالایی نبود.
تمامی مطالب کلاس (سوالات + لینک به ویدیوهای درس) را داخل گیتهاب قرار دادم. از لینک ابتدایی پست میتوانید به تمام محتوای آموزشی کلاس دسترسی پیدا کنید.
🔥20❤10👍9
من تخصصی در زمینه مدیریت منابع انسانی (HR) ندارم. اما به نظرم در دنیای نسبتاً مطلوب من روند استخدام افراد باید چیزی شبیه فرآیند پذیرش مقاله در ژورنالهای معتبر باشد.
در گام اول، زمانی که شما یک مقاله را به ژورنال ارسال میکنید، ابتدا یک سری شاخص اولیه بررسی میشود و اگر مقاله آن شرایط را نداشت بلافاصله رد میشود (Desk Rejection) و به اطلاع نویسنده میرسد که به چه دلیل مقاله تحت داوری نمیرود (مثلاً موضوع مقاله خارج از محدوده ژورنال است). این فرآیند حداکثر یک هفته است. همین را میتوان در بررسی اولیه رزومهها هم انجام داد. اگر رزومهای قرار نیست بررسی دقیق شود، باید دلیل آن به اطلاع متقاضی شغل برسد.
در گام دوم (سوم، چهارم و ...)، مقالهها برای تعدادی داور ارسال میشود و نظرات آنها در رابطه با نقاط قوت و ضعف مقاله پرسیده میشود. اگر مقاله در این مرحله رد نشود، نظرات دقیق داوران باید به صورت کتبی به اطلاع نویسندگان برسد و نویسندگان باید سعی کنند مشکلات مقاله را بر طرف کنند و جواب هر داور را بدهند. این فرآیند آنقدر تکرار میشود (revision) تا در نهایت مقاله پذیرفته یا رد میشود. میتوان این قسمت را تشبیه به مراحل مصاحبه دانست. به نظرم در مرحله مصاحبه باید نقاط ضعف و قوت متقاضی شغل دقیقاً به صورت کتبی با ذکر جزئیات و استدلال منطقی به اطلاع او برسد تا فرد بتواند آن مشکلات را در صورت امکان برطرف کند و موافقت تمام یا اکثریت مصاحبهکنندگان شرکت مورد نظر را کسب کند.
در گام اول، زمانی که شما یک مقاله را به ژورنال ارسال میکنید، ابتدا یک سری شاخص اولیه بررسی میشود و اگر مقاله آن شرایط را نداشت بلافاصله رد میشود (Desk Rejection) و به اطلاع نویسنده میرسد که به چه دلیل مقاله تحت داوری نمیرود (مثلاً موضوع مقاله خارج از محدوده ژورنال است). این فرآیند حداکثر یک هفته است. همین را میتوان در بررسی اولیه رزومهها هم انجام داد. اگر رزومهای قرار نیست بررسی دقیق شود، باید دلیل آن به اطلاع متقاضی شغل برسد.
در گام دوم (سوم، چهارم و ...)، مقالهها برای تعدادی داور ارسال میشود و نظرات آنها در رابطه با نقاط قوت و ضعف مقاله پرسیده میشود. اگر مقاله در این مرحله رد نشود، نظرات دقیق داوران باید به صورت کتبی به اطلاع نویسندگان برسد و نویسندگان باید سعی کنند مشکلات مقاله را بر طرف کنند و جواب هر داور را بدهند. این فرآیند آنقدر تکرار میشود (revision) تا در نهایت مقاله پذیرفته یا رد میشود. میتوان این قسمت را تشبیه به مراحل مصاحبه دانست. به نظرم در مرحله مصاحبه باید نقاط ضعف و قوت متقاضی شغل دقیقاً به صورت کتبی با ذکر جزئیات و استدلال منطقی به اطلاع او برسد تا فرد بتواند آن مشکلات را در صورت امکان برطرف کند و موافقت تمام یا اکثریت مصاحبهکنندگان شرکت مورد نظر را کسب کند.
👍19❤4
Forwarded from Golem Course
کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی
💰 میخواهید وارد بازار کار شوید؟
📕 میخواهید دانش و مهارت ضروری صنعت کامپیوتر را بلد باشید؟
🧠 عاشق یادگیری هستید؟
اگر پاسخ شما به سه سوال بالا منفی است، این کانال مناسب شما نیست!
لینک دسترسی به تمام ویدیوها در کانال یوتیوب:
🥉 مسیر یادگیری و تقویت زبان انگلیسی
🎯 آموزش زبان انگلیسی: (۳۰:۳۷ ساعت - به اتمام رسیده)
==================
🥈مسیر برنامهنویس شدن:
🎯 طراحی وبسایت - فرانت اند: (۵:۲۸ ساعت - در حال ضبط)
🎯 دوره آموزشی پایتون: (۱۸:۰۳ ساعت - در حال ضبط)
🎯 دوره آموزشی گیت: (۴:۰۶ ساعت - به اتمام رسیده)
🎯 دوره تست نرمافزار با پایتون: (۱:۲۰ ساعت - به اتمام رسیده)
🎯 آموزش کتابخانه پانداس: (۲:۲۶ ساعت - در حال ضبط)
==================
🥇 مسیر کار تیمی و ایجاد نرمافزار
🎯 دوره آموزشی اسکرام: (۲:۳۰ ساعت - به اتمام رسیده)
🎯 دوره مهندسی نیازمندیها: (۴:۳۲ ساعت - در حال ضبط)
🎯 دوره مدیریت پروژه: (۳:۱۶ ساعت - در حال ضبط)
==================
کانال یوتیوب علیرضا آقامحمدی
💰 میخواهید وارد بازار کار شوید؟
📕 میخواهید دانش و مهارت ضروری صنعت کامپیوتر را بلد باشید؟
🧠 عاشق یادگیری هستید؟
اگر پاسخ شما به سه سوال بالا منفی است، این کانال مناسب شما نیست!
لینک دسترسی به تمام ویدیوها در کانال یوتیوب:
🥉 مسیر یادگیری و تقویت زبان انگلیسی
🎯 آموزش زبان انگلیسی: (۳۰:۳۷ ساعت - به اتمام رسیده)
==================
🥈مسیر برنامهنویس شدن:
🎯 طراحی وبسایت - فرانت اند: (۵:۲۸ ساعت - در حال ضبط)
🎯 دوره آموزشی پایتون: (۱۸:۰۳ ساعت - در حال ضبط)
🎯 دوره آموزشی گیت: (۴:۰۶ ساعت - به اتمام رسیده)
🎯 دوره تست نرمافزار با پایتون: (۱:۲۰ ساعت - به اتمام رسیده)
🎯 آموزش کتابخانه پانداس: (۲:۲۶ ساعت - در حال ضبط)
==================
🥇 مسیر کار تیمی و ایجاد نرمافزار
🎯 دوره آموزشی اسکرام: (۲:۳۰ ساعت - به اتمام رسیده)
🎯 دوره مهندسی نیازمندیها: (۴:۳۲ ساعت - در حال ضبط)
🎯 دوره مدیریت پروژه: (۳:۱۶ ساعت - در حال ضبط)
==================
Telegram
Golem Course
Alireza Aghamohammadi, Ph.D.
https://youtube.com/@GolemCourse
https://youtube.com/@GolemCourse
👍9❤4
مسیر یادگیری شاخههای مهندسی نرمافزار
یکی از سوالاتی که افراد زیاد از من میپرسند این است که برای یادگیری فرانتاند، بکاند، دوآپس و ... چه چیزهایی باید یاد بگیریم؟ چه مسیری را باید طی کنیم؟ از کجاها شروع کنیم؟ قدمهای این مسیر چیست؟
از نظر من سایت رودمپ یکی از بهترینها در این زمینه است. برای هر بخش، یک مسیر مشخص بدور از حواشی بیخود و در عین حال کامل، قدم به قدم مباحث مورد نیاز را مشخص کرده است و تقریباً با اکثر پیشنهادهایی که کرده موافق هستم. پیشنهاد میکنم حتماً یک نگاهی به این سایت بیاندازید.
یکی از سوالاتی که افراد زیاد از من میپرسند این است که برای یادگیری فرانتاند، بکاند، دوآپس و ... چه چیزهایی باید یاد بگیریم؟ چه مسیری را باید طی کنیم؟ از کجاها شروع کنیم؟ قدمهای این مسیر چیست؟
از نظر من سایت رودمپ یکی از بهترینها در این زمینه است. برای هر بخش، یک مسیر مشخص بدور از حواشی بیخود و در عین حال کامل، قدم به قدم مباحث مورد نیاز را مشخص کرده است و تقریباً با اکثر پیشنهادهایی که کرده موافق هستم. پیشنهاد میکنم حتماً یک نگاهی به این سایت بیاندازید.
roadmap.sh
Developer Roadmaps - roadmap.sh
Community driven roadmaps, articles and guides for developers to grow in their career.
👍8🔥4❤3
برای دوره آینده کدام یک از موارد زیر را ترجیح میدهید؟
Anonymous Poll
44%
Docker
49%
System Design
7%
Kanban
🔥9👍2
خواندن اطلاعات از پایگاه داده، اتصال به شبکه، خواندن از فایل، پاسخی که از یک سیستم دیگر باید دریافت شود و ... نمونههایی از عملیات IO محسوب میشوند. این کارها میتواند مدت زمان زیادی از زمان اجرای برنامه را به خود اختصاص دهد. به همین خاطر، ایده برنامهنویسی ناهمگام مطرح شد. در برنامهنویسی ناهمگام (Asynchronous) برنامه میتواند تا زمانی که پاسخ عملیات IO آماده شود به کارهای دیگری که دارد برسد و به این شکل کل زمان اجرای برنامه کاهش پیدا کند.
اجازه دهید یک مثال بزنم. فرض کنید مشتری در یک رستوران سفارش غذا میدهد. تا زمانی که سفارش مشتری آماده میشود، صندوقدار میتواند سفارش باقی مشتریها را دریافت کند. لزومی ندارد که باقی مشتریها را معطل نگه داریم تا سفارش مشتری مذکور آماده شود.
در #پایتون با کمک ماژول asyncio میتوان برنامههای ناهمگام نوشت. یک ویدیو در یوتیوب درست کردم و کار با این ماژول را آموزش دادم.
https://youtu.be/-AqttMR4sXc
اجازه دهید یک مثال بزنم. فرض کنید مشتری در یک رستوران سفارش غذا میدهد. تا زمانی که سفارش مشتری آماده میشود، صندوقدار میتواند سفارش باقی مشتریها را دریافت کند. لزومی ندارد که باقی مشتریها را معطل نگه داریم تا سفارش مشتری مذکور آماده شود.
در #پایتون با کمک ماژول asyncio میتوان برنامههای ناهمگام نوشت. یک ویدیو در یوتیوب درست کردم و کار با این ماژول را آموزش دادم.
https://youtu.be/-AqttMR4sXc
YouTube
آموزش برنامهنویسی پایتون | برنامهنویسی ناهمگام با asyncio | جلسه صد و نه
#آموزش_پایتون #پایتون #برنامه_نویسی
در این جلسه با برنامهنویسی ناهمگام و ماژول asyncio آشنا میشویم. به علاوه دو کلید واژه async و await را فرا میگیریم.
راههای ارتباط با من در شبکههای اجتماعی:
https://news.1rj.ru/str/golemcourse
https://github.com/aaghamohammadi…
در این جلسه با برنامهنویسی ناهمگام و ماژول asyncio آشنا میشویم. به علاوه دو کلید واژه async و await را فرا میگیریم.
راههای ارتباط با من در شبکههای اجتماعی:
https://news.1rj.ru/str/golemcourse
https://github.com/aaghamohammadi…
👍22
01-Foundation.pdf
63.3 KB
به زودی طبق نظرسنجی که در کانال داشتیم، دوره طراحی سیستمها را آغاز میکنم. برای این دوره یک تصمیم دیگر هم گرفتم. به خاطر اهمیت بالای این درس، علاوه بر ویدیو یک سری جزوه در قالب pdf هم ارائه میکنم. جزوه درس اول به پیوست تقدیم میگردد.
#System_Design
#01_Foundation
#System_Design
#01_Foundation
👍14❤11🔥1
02-Scaling.pdf
568.9 KB
جزوه جلسه دو طراحی سیستمها به پیوست تقدیم میگردد. در این بخش به روشهای مقیاس کردن سایت خود میپردازیم.
#System_Design
#02_Scaling
#System_Design
#02_Scaling
❤7👍1
در جلسه دوم از درس طراحی سیستمها یاد میگیریم که چگونه یک سیستم را به گونهای مقیاسپذیر کنیم تا بتواند چندصد هزار درخواست را مدیریت کند. به طور مشخص با دو تکنیک مقیاس کردن عمودی (Vertical Scaling) و مقیاس کردن افقی (Horizontal Scaling) آشنا میشویم.
https://youtu.be/Ogb5zZ5u6f0
https://youtu.be/Ogb5zZ5u6f0
YouTube
طراحی سیستمها | مقیاس کردن | درس دو | System Design
در جلسه دوم از درس طراحی سیستمها یاد میگیریم که چگونه یک سیستم را به گونهای مقیاسپذیر کنیم تا بتواند چندصد هزار درخواست را مدیریت کند. به طور مشخص با دو تکنیک مقیاس کردن عمودی (Vertical Scaling) و مقیاس کردن افقی (Horizontal Scaling) آشنا میشویم.
راههای…
راههای…
👍4❤1
03-DNS.pdf
342.3 KB
جزوه جلسه سوم درس طراحی سیستمها به پیوست تقدیم میگردد. در این بخش با نحوه کارکرد DNS ها برای تبدیل Domain Name به IP Address آشنا میشویم.
#System_Design
#03_DNS
#System_Design
#03_DNS
👍5
04-Load-Balancer.pdf
458.7 KB
توازنکننده بار مقیاس کردن افقی سیستم را امکانپذیر میکند. جزوه جلسه چهارم در رابطه با توازنکنندههای بار به پیوست تقدیم میگردد.
#04_Load_Balancer
#System_Design
#04_Load_Balancer
#System_Design
👍4❤2
زمانی که یک محصول را توسعه میدهیم گاهی نیاز است که به یک سرور لینوکسی تحت شبکه (با IP مشخص) دسترسی داشته باشیم. با توجه به این که خرید سرور به لطف قیمت دلار گران است و هم اتصال ssh این روزها به خاطر اختلال اینترنت آزاردهنده است، میتوان یک ماشین مجازی ubuntu server بر روی دستکتاپ/لپتاپ شخصی ایجاد کرد و static ip به آن نسبت داد تا هم بتوانیم در یک private network به آن دسترسی داشته باشیم و هم قابلیت ssh برای دسترسی به ترمینال داشته باشد. در این ویدیو ایجاد چنین محیطی را آموزش میدهم:
https://youtu.be/CsQ6xqZNHV8
https://youtu.be/CsQ6xqZNHV8
YouTube
مدیریت سرور لینوکس | نصب سرور مجازی ubuntu با داشتن static ip | درس یک
زمانی که یک محصول را توسعه میدهیم گاهی نیاز است که به یک سرور لینوکسی تحت شبکه (با IP مشخص) دسترسی داشته باشیم. با توجه به این که خرید سرور به لطف قیمت دلار گران است و هم اتصال ssh این روزها به خاطر اختلال اینترنت آزاردهنده است، میتوان یک ماشین مجازی ubuntu…
👍3
05-database-replication.pdf
541.1 KB
در درسهای گذشته یاد گرفتیم که چگونه میتوانیم برای افزایش مقیاسپذیری سیستم، تعداد سرورها را افزایش دهیم. اما همچنان پایگاه داده سیستم به صورت مرکزی قرار دارد. یعنی با افزایش خواندن/نوشتن داده، پایگاه داده میتواند به گلوگاه (bottleneck) تبدیل شود.
#05_database_replication
#System_Design
#05_database_replication
#System_Design
👍1
در جلسه پنجم از درس طراحی سیستمها در مورد database replication حرف زدیم:
https://youtu.be/rVjG3bj0Jq8
https://youtu.be/rVjG3bj0Jq8
YouTube
طراحی سیستمها | رونوشت پایگاه داده | درس پنج | system design
رونوشت (replication) پایگاه داده به معنای نگه داشتن داده یکسان در سرورهای مختلف است به طوری که سرورها بتوانند از طریق شبکه با یکدیگر ارتباط برقرار کنند. به سرور ذخیرهسازی که کپی داده را در خود نگه میدارد برگردان (replica) میگویند.
راههای ارتباط با من…
راههای ارتباط با من…
👍1
06-cache.pdf
619 KB
برای افزایش کارایی سیستمها، یک تکنیک استفاده از caching است. در این درس، با این روش آشنا میشویم.
#06_cache
#System_Design
#06_cache
#System_Design
👍1🔥1
در پروژههای بزرگ علاوه بر فایل requirements.txt از فایل constraints.txt نیز برای مدیریت بستهها استفاده میکنند. در این ویدیو کاربرد این فایل و لزوم آن را توضیح میدهیم.
https://youtu.be/j4yBFiEuX_c
https://youtu.be/j4yBFiEuX_c
YouTube
آموزش برنامه نویسی پایتون | کاربرد فایل constraints.txt در مدیریت بستهها | جلسه صد و ده
#آموزش_پایتون #پایتون #برنامه_نویسی
در پروژههای بزرگ علاوه بر فایل requirements.txt از فایل constraints.txt نیز برای مدیریت بستهها استفاده میکنند. در این ویدیو کاربرد این فایل و لزوم آن را توضیح میدهیم.
راههای ارتباط با من در شبکههای اجتماعی:
ht…
در پروژههای بزرگ علاوه بر فایل requirements.txt از فایل constraints.txt نیز برای مدیریت بستهها استفاده میکنند. در این ویدیو کاربرد این فایل و لزوم آن را توضیح میدهیم.
راههای ارتباط با من در شبکههای اجتماعی:
ht…
👍1
07-proxies.pdf
257.2 KB
پراکسی در طراحی سیستمها کاربرد زیادی دارند. توزان کننده بار (load balancer) که در جلسههای گذشته صحبت کردیم در واقع پراکسی است.
#07_proxies
#System_Design
#07_proxies
#System_Design
👍4