Golem Course – Telegram
Golem Course
2.93K subscribers
47 photos
43 videos
40 files
144 links
Alireza Aghamohammadi, Ph.D.

https://youtube.com/@GolemCourse
Download Telegram
محتوای کلاس برنامه‌نویسی #پایتون دانشگاه صنعتی شریف

🔗 https://github.com/aaghamohammadi/python-tutor

ترم بهار امسال این افتخار را داشتم که درس مبانی برنامه‌سازی (پایتون) را به دانشجویان کارشناسی دانشگاه صنعتی شریف تدریس کنم.

این درس شامل پنج تمرین، یک پروژه، یک میان‌ترم و پایان‌ترم بود. تیمی ۳۴ نفره به عنوان دستیار آموزشی مسئول طراحی و تصحیح تمارین و پروژه درس بود.

با کمک تیم دستیار آموزشی در نهایت توانستیم در ارزشیابی درس آخر ترم (نمره‌ای که دانشجویان به عملکرد استاد و کلاس درس می‌دهند) نمره ۳.۸۳ از ۴ را کسب کنیم! بدون همراهی تیم دستیار آموزشی و دانشجویان کلاس امکان ارائه این درس با چنین کیفیتی بالایی نبود.

تمامی مطالب کلاس (سوالات + لینک به ویدیوهای درس) را داخل گیتهاب قرار دادم. از لینک ابتدایی پست می‌توانید به تمام محتوای آموزشی کلاس دسترسی پیدا کنید.
🔥2010👍9
من تخصصی در زمینه مدیریت منابع انسانی (HR) ندارم. اما به نظرم در دنیای نسبتاً مطلوب من روند استخدام افراد باید چیزی شبیه فرآیند پذیرش مقاله در ژورنال‌های معتبر باشد.

در گام اول، زمانی که شما یک مقاله را به ژورنال ارسال می‌کنید، ابتدا یک سری شاخص اولیه بررسی می‌شود و اگر مقاله آن شرایط را نداشت بلافاصله رد می‌شود (Desk Rejection) و به اطلاع نویسنده می‌رسد که به چه دلیل مقاله تحت داوری نمی‌رود (مثلاً موضوع مقاله خارج از محدوده ژورنال است). این فرآیند حداکثر یک هفته است. همین را می‌توان در بررسی اولیه رزومه‌ها هم انجام داد. اگر رزومه‌ای قرار نیست بررسی دقیق شود، باید دلیل آن به اطلاع متقاضی شغل برسد.

در گام دوم (سوم، چهارم و ...)، مقاله‌ها برای تعدادی داور ارسال می‌شود و نظرات آن‌ها در رابطه با نقاط قوت و ضعف مقاله پرسیده می‌شود. اگر مقاله در این مرحله رد نشود، نظرات دقیق داوران باید به صورت کتبی به اطلاع نویسندگان برسد و نویسندگان باید سعی کنند مشکلات مقاله را بر طرف کنند و جواب هر داور را بدهند. این فرآیند آنقدر تکرار می‌شود (revision) تا در نهایت مقاله پذیرفته یا رد می‌شود. می‌توان این قسمت را تشبیه به مراحل مصاحبه دانست. به نظرم در مرحله مصاحبه باید نقاط ضعف و قوت متقاضی شغل دقیقاً به صورت کتبی با ذکر جزئیات و استدلال منطقی به اطلاع او برسد تا فرد بتواند آن مشکلات را در صورت امکان برطرف کند و موافقت تمام یا اکثریت مصاحبه‌کنندگان شرکت مورد نظر را کسب کند.
👍194
Forwarded from Golem Course
کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی

💰 می‌خواهید وارد بازار کار شوید؟
📕 می‌خواهید دانش و مهارت ضروری صنعت کامپیوتر را بلد باشید؟
🧠 عاشق یادگیری هستید؟

اگر پاسخ شما به سه سوال بالا منفی است، این کانال مناسب شما نیست!

لینک دسترسی به تمام ویدیو‌ها در کانال یوتیوب:

🥉 مسیر یادگیری و تقویت زبان انگلیسی

🎯 آموزش زبان انگلیسی: (۳۰:۳۷ ساعت - به اتمام رسیده)

==================
🥈مسیر برنامه‌نویس شدن:

🎯 طراحی وب‌سایت - فرانت اند: (۵:۲۸ ساعت - در حال ضبط)

🎯 دوره آموزشی پایتون: (۱۸:۰۳ ساعت - در حال ضبط)

🎯 دوره آموزشی گیت: (۴:۰۶ ساعت - به اتمام رسیده)

🎯 دوره تست نرم‌افزار با پایتون: (۱:۲۰ ساعت - به اتمام رسیده)

🎯 آموزش کتابخانه پانداس: (۲:۲۶ ساعت - در حال ضبط)

==================

🥇 مسیر کار تیمی و ایجاد نرم‌افزار

🎯 دوره آموزشی اسکرام: (۲:۳۰ ساعت - به اتمام رسیده)

🎯 دوره مهندسی نیازمندی‌ها: (۴:۳۲ ساعت - در حال ضبط)

🎯 دوره مدیریت پروژه: (۳:۱۶ ساعت - در حال ضبط)

==================
👍94
مسیر یادگیری شاخه‌های مهندسی نرم‌افزار

یکی از سوالاتی که افراد زیاد از من می‌پرسند این است که برای یادگیری فرانت‌اند، بک‌اند، دوآپس و ... چه چیزهایی باید یاد بگیریم؟ چه مسیری را باید طی کنیم؟ از کجاها شروع کنیم؟ قدم‌های این مسیر چیست؟

از نظر من سایت رودمپ یکی از بهترین‌ها در این زمینه است. برای هر بخش، یک مسیر مشخص بدور از حواشی بیخود و در عین حال کامل، قدم به قدم مباحث مورد نیاز را مشخص کرده است و تقریباً با اکثر پیشنهادهایی که کرده موافق هستم. پیشنهاد می‌کنم حتماً یک نگاهی به این سایت بیاندازید.
👍8🔥43
برای دوره آینده کدام یک از موارد زیر را ترجیح می‌دهید؟
Anonymous Poll
44%
Docker
49%
System Design
7%
Kanban
🔥9👍2
خواندن اطلاعات از پایگاه داده، اتصال به شبکه، خواندن از فایل، پاسخی که از یک سیستم دیگر باید دریافت شود و ... نمونه‌هایی از عملیات IO محسوب می‌شوند. این کارها می‌تواند مدت زمان زیادی از زمان اجرای برنامه را به خود اختصاص دهد. به همین خاطر، ایده برنامه‌نویسی ناهمگام مطرح شد. در برنامه‌نویسی ناهمگام (Asynchronous) برنامه می‌تواند تا زمانی که پاسخ عملیات IO آماده شود به کارهای دیگری که دارد برسد و به این شکل کل زمان اجرای برنامه کاهش پیدا کند.

اجازه دهید یک مثال بزنم. فرض کنید مشتری در یک رستوران سفارش غذا می‌دهد. تا زمانی که سفارش مشتری آماده می‌شود، صندوق‌دار می‌تواند سفارش باقی مشتری‌ها را دریافت کند. لزومی ندارد که باقی مشتری‌ها را معطل نگه داریم تا سفارش مشتری مذکور آماده شود.

در #پایتون با کمک ماژول asyncio می‌توان برنامه‌های ناهمگام نوشت. یک ویدیو در یوتیوب درست کردم و کار با این ماژول را آموزش دادم.
https://youtu.be/-AqttMR4sXc
👍22
01-Foundation.pdf
63.3 KB
به زودی طبق نظرسنجی که در کانال داشتیم، دوره طراحی سیستم‌ها را آغاز می‌کنم. برای این دوره یک تصمیم دیگر هم گرفتم. به خاطر اهمیت بالای این درس، علاوه بر ویدیو یک سری جزوه در قالب pdf هم ارائه می‌کنم. جزوه درس اول به پیوست تقدیم می‌گردد.
#System_Design
#01_Foundation
👍1411🔥1
02-Scaling.pdf
568.9 KB
جزوه جلسه دو طراحی سیستم‌ها به پیوست تقدیم می‌گردد. در این بخش به روش‌های مقیاس کردن سایت خود می‌پردازیم.

#System_Design
#02_Scaling
7👍1
در جلسه دوم از درس طراحی سیستم‌ها یاد می‌گیریم که چگونه یک سیستم را به گونه‌ای مقیاس‌پذیر کنیم تا بتواند چندصد هزار درخواست را مدیریت کند. به طور مشخص با دو تکنیک مقیاس کردن عمودی (Vertical Scaling) و مقیاس کردن افقی (Horizontal Scaling) آشنا می‌شویم.
https://youtu.be/Ogb5zZ5u6f0
👍41
03-DNS.pdf
342.3 KB
جزوه جلسه سوم درس طراحی سیستم‌ها به پیوست تقدیم می‌گردد. در این بخش با نحوه کارکرد DNS ها برای تبدیل Domain Name به IP Address آشنا می‌شویم.

#System_Design
#03_DNS
👍5
04-Load-Balancer.pdf
458.7 KB
توازن‌کننده بار مقیاس کردن افقی سیستم را امکان‌پذیر می‌کند. جزوه جلسه چهارم در رابطه با توازن‌کننده‌های بار به پیوست تقدیم می‌گردد.
#04_Load_Balancer
#System_Design
👍42
زمانی که یک محصول را توسعه می‌دهیم گاهی نیاز است که به یک سرور لینوکسی تحت شبکه (با IP مشخص) دسترسی داشته باشیم. با توجه به این که خرید سرور به لطف قیمت دلار گران است و هم اتصال ssh این روزها به خاطر اختلال اینترنت آزاردهنده است، می‌توان یک ماشین مجازی ubuntu server بر روی دستکتاپ/لپ‌تاپ شخصی ایجاد کرد و static ip به آن نسبت داد تا هم بتوانیم در یک private network به آن دسترسی داشته باشیم و هم قابلیت ssh برای دسترسی به ترمینال داشته باشد. در این ویدیو ایجاد چنین محیطی را آموزش می‌دهم:

https://youtu.be/CsQ6xqZNHV8
👍3
05-database-replication.pdf
541.1 KB
در درس‌های گذشته یاد گرفتیم که چگونه می‌توانیم برای افزایش مقیاس‌پذیری سیستم، تعداد سرورها را افزایش دهیم. اما همچنان پایگاه داده سیستم به صورت مرکزی قرار دارد. یعنی با افزایش خواندن/نوشتن داده، پایگاه داده می‌تواند به گلوگاه (bottleneck) تبدیل شود.

#05_database_replication
#System_Design
👍1
06-cache.pdf
619 KB
برای افزایش کارایی سیستم‌ها، یک تکنیک استفاده از caching است. در این درس، با این روش آشنا می‌شویم.
#06_cache
#System_Design
👍1🔥1
07-proxies.pdf
257.2 KB
پراکسی در طراحی سیستم‌ها کاربرد زیادی دارند. توزان کننده بار (load balancer) که در جلسه‌های گذشته صحبت کردیم در واقع پراکسی است.

#07_proxies
#System_Design
👍4