خانه توسعهدهنده اتاق نشیمن معرفی بهترین منابع آموزش الگوریتم و ساختمان داده
معرفی بهترین منابع آموزش الگوریتم و ساختمان داده
سوال همیشگی خیلی از کسانی که میخواهند به تازگی وارد دنیای برنامه نویسی شوند این هست که از کجا و چه طور شروع به یادگیری کنند…
اگر یادگیری برنامه نویسی را مثل یک سفر طولانی در نظر بگیرید، که در حین این سفر قرار است اتفاقات جالب و تلخ و شیرینی رخ دهد باید علاوه بر یادگیری، تمرین و حل مسئله زیاد را از اولویتهای این سفر طولانی و هیجان انگیز بدانیم.
ساختمان دادهها و الگوریتمها از مباحث مهم و ضروری برای برنامهنویسان است. اگر میخواهید کدهایی بنویسید که پایه و اساس درست و مناسبی دارند و علاوه بر آن در آینده جایگاه شغلی مناسبی داشته باشید، یادگیری الگوریتم را فراموش نکنید. درحالت ایدهآل اگر در یکی از رشتههای مهندسی تحصیل کرده باشید و یا در حال تحصیل، باید با ساختمان داده و الگوریتم به طور کلی آشنا باشید ولی آنطور که باید به این مبحث اهمیت داده نشده است.
همانطور که گفتیم برنامه نویسی، مهارتی است که باید در ابتدا با تفکر و سپس با پیادهسازی انجام شود و طبیعتا بدون تفکر مناسب نمیتوانیم مسئله را حل کنیم و بدون مهارت پیادهسازی، عملا هیچ خروجی خاصی نخواهیم داشت. به همین دلیل رویکرد مسئله محور دارای اهمیت بسیاری است.
در این این مطلب میخواهیم هر آنچه برای یادگیری الگوریتم و ورود به دنیای برنامه نویسی نیاز دارید، در اختیار شما قرار دهیم.
منابعی که قرار است در این مطلب به آن اشاره کنیم شامل موارد زیر است:
- معرفی دورههای سایتهای آموزشی آنلاین برای یادگیری الگوریتم
- پادکستها و کانالهای مفید یوتیوب در جهت یادگیری الگوریتم و ورود به دنیای برنامهنویسی
سایتهای آموزش آنلاین:
1. دوره Easy to Advanced Data Structures
یکی از بهترین دورههای آموزش ساختار داده و الگوریتم را میتوانید با سایت یودمی شروع کنید. این سایت منبع مناسبی است برای همه کسانی که میخواهند الگوریتم را از صفر تا صد یاد بگیرند. نویسنده آن ویلیام فیست است که مهندس نرمافزار در گوگل است و در مسابقات جهانی ACM ICPC مقام دارد و متخصص مهارتهای حل مسئله است. لازم به ذکر است که این دوره 25 هزار دانشجو دارد و دارای امتیاز 4.1 از مجموع 683 امتیاز است. در کل این دوره راهنمای جامع و عالی برای شروع الگوریتم و ورود به دنیای برنامهنویسی است.
ساختمان داده یا همان Data structure از اساسیترین ترکیبات در ایجاد الگوریتمهای کارآمد و طراحی نرم افزارهای مناسب هستند. آگاهی از چگونگی ایجاد و طراحی یک الگوریتم خوب، یک مهارت اساسی است برای اینکه برنامهنویس خوبی شویم. این دوره به شما میآموزد که چگونه به ایدههای بنیادی پیرامون ساختمان دادهها تسلط داشته باشید.
محتوای دوره: محتوای این دوره به صورت 8 ساعت فیلمهای آموزشی و حل سوالات مختلف است که از زبان جاوا برای درک بهتر این مطالب استفاده شده است.
در این دوره چه میآموزیم:
- مفاهیم پایه ساختار دادهها
- الگوریتمهای مرتبط با ساختار دادهها
- آرایههای داینامیک
- مفاهیم مربوط به صف و پشته
- درختان دودویی و نحوه سرچ آنها
- مفاهیم مربوط به جدول هش و …
2. دوره Data Structure Concepts in C
هدف این دوره آموزش ساختمان داده و پایه برنامهنویسی است. مباحثی که در این دوره آموزش داده میشوند شامل،Stack ، Queue و Linked List با استفاده از زبان C است و هدف اصلی این دوره این است که دانشجویان و مهندسان نرمافزار نحوه عملکرد ساختارهای مختلف را تجسم کنند.
هماهنطور که گفتیم یادگیری ساختمان دادهها از چند وجه اهمیت زیادی دارد:
- ساختمان داده تقریبا در هر برنامه یا سیستم نرم افزاری
استفاده میشود. - با استفاده از ساخت، مدیریت مقادیر عظیمی از دادهها مثل
مجموعه بزرگ یکپارچه پایگاه دادهها به راحتی میسر میشود. - برخی از زبان های برنامه نویسی ساختار داده ها مهمتر از الگوریتم
ها میدانند و از آنهابه عنوان عامل اصلی سازماندهی در طراحی نرم افزار استفاده می
کنند.
محتوای دوره: این دوره شامل 1.5 ساعت ویدئو، 4 مقاله آموزشی و … میباشد.
در این دوره چه میآموزیم:
- یادگیری مفاهیم لیست پیوندی
- مبانی ساختار داده ها و نحوره عملکرد ساختارهای مختلف
- نحوه اجرای ساختارهای داده با استفاده از ربان سی بپرسسس
3. دوره Graph Theory Algorithms
به دلیل پیچیدگی در یادگیری معمولا دورههای برنامهنویسی چندان اهمیتی برای تدریس گرافها قائل نمیشوند. اما اگر یک لحظه به این فکر کنیم که تمامی مشکلات دنیای واقعی را میتوان با نمودارها و گرافها حل کرد برای مثال از به دست آوردن کوتاهترین مسیر بین شهرها گرفته تا خیلی چیزهای دیگر…خوشبختانه یک دوره رایگان با کیفیت برای یادگیری این مبحث وجود دارد.
محتوای دوره: این دوره دارای 6.5 ساعت ویدئو میباشد.
در این دوره چه میآموزیم:
- الگوریتم جستوجوی اول عمق
- الگوریتم جستوجوی اول سطح
- الگوریتم Dijkstra
- الگوریتم Bellman Ford
- کوتاهترین و طولانیترین مسیر در یک نمودار دایرهای
- الگوریتم مرتب سازی توپولوژیک و ….
4. دوره Getting interview ready
اگر در حال آماده سازی برای مصاحبه هستید و زمان کافی ندارید ایم دوره برای شما بسیار مناسب است. در این دوره، شما نه تنها اصول اولیه یک آرایه ، لیست پیوندی ، درخت باینری ، درخت جستجوی باینری ، پشته ، صف ، AVL و غیره را یاد خواهید گرفت بلکه با حل سوالات برنامه نویسی برخی ترفندها را یاد می گیرید تا در مصاحبه های کد نویسی سربلند بیرون بیایید.
محتوای دوره: این دوره دارای 3 ساعت محتوای ویدئویی، 9 مقاله آموزشی، 3 تمرین برنامه نویسی و… است.
در این دوره چه می آموزید:
- نحوه حل سوالات برنامه نویسی با استفاده از ساختار دادهها
- سوالات مصاحبه الگوریتمی
- مفاهیم پایه ساختار دادهها
5. دوره Algorithms در دو بخش
آموزشهای الگوریتم در این سایت به دو بخش تقسیم میشود
در بخش اول با مباحثی مثل لیست های پیوندی ، پشتهها ، صفها ، درختان باینری و جداول هَش و… آشنا میشوید و شروع به یادگیری و مرتب سازی الگوریتم هایی مانند جستجوی باینری ، Quicksort ، mergesort ، مرتب سازی درج و غیره را یاد خواهید گرفت. و در بخش دوم هم با رشتهها و پردازش نمودار آشنا خواهید شد.
معرفی کانالهای یوتیوب یادگیری الگوریتم و برنامه نویسی
کانال freecodecamp: این کانال ویدئویی برای یادگیری ساختار داده و تمامی مفاهیمی که نیاز است در مورد الگوریتم بدانیم مناسب است. در این کانال آموزش 8 ساعتهای برای یادگیری ساختار داده توسط مهندسین گوگل نیز وجود دارد که به شدت پیشنهاد میشود
کانال mycodeschool: اگر به ویدئوهای این کانال نگاهی انداخته باشید، میبینید که در زمینههای مختلف برنامهنویسی، آموزشهای متعددی مثل معرفی و شروع برنامهنویسی با زبانهای مختلف، آموزش ساختار داده و الگوریتم که میتواند تجربه خوبی برای یادگیری باشد.
سری پادکستهای آموزش ساختمان داده و الگوریتم
سری پادکستهای Data Structures سایت Playerfm: این سری از پادکستها در مورد آموزش ساختمان داده و الگوریتم صحبت میکند و اشاده دارد به الگوهای طراحی شیگرا و آموزشهایی با زبان C++ با رویکرد و روشی جدید که میتواند مفید باشد. این دوره توسط دونگ ایکس نگوین و جی. استنلی وارفورد تهیه شده است. علاوه بر آموزش یک سری تمرین برای یادگیری بیشتر دارد که میتوانید در صفحهاش دانلود کنید.
شرکت در مسابقات برنامهنویسی و حل سوالات: پیشنهاد میشود اگر تا حدودی برنامهنویسی را با هر زبانی یادگیرفتید،برای تمرین بیشتر در مسابقات برنامه نویسی شرکت کنید و یا سوالات بیشتر حل کنید برای اینکار میتوانید از بانک سوالات برنامهنویسی کوئرا که شامل بیش از ۵۰۰ سوال همراه با سیستم داوری خودکار است استفاده کنید و در همان لحظه امتیاز سوالات و در صد خطای خود را میبینید که همین باعث حل مسوویه و تمرین زیادی خواهد شد.