توضیحات
ساختمان داده و الگوریتمها یکی از مهمترین مفاهیم در برنامه نویسی هستند. بیشتر شرکتهای پیشرو فناوری در مراحل استخدام و مصاحبه، تسلط بر مباحث ساختمان داده و الگوریتمها را یکی از موارد بسیار مهم در نظر میگیرند. همین طور زمانی که به عنوان یک توسعه دهنده قصد توسعه یک نرم افزار سطح متوسط یا بزرگ را داشته باشید، قطعا دانش این دو مفهوم بسیار کاربردی خواهد بود.
الگوریتمها مجموعهای از روشها هستند برای حل مسائل. طبیعتا انتخاب بهترین الگوریتم بر اساس منطق توسعه نرم افزار بسیار تاثیر گذار میباشد. ساختمان داده نیز در علوم کامپیوتر یک روش میباشد برای مدیریت دادههای نرم افزار.
ساختمانهای داده میتوانند به صورت Built in در یک زبان برنامه نویسی باشند. مانند آرایهها، آبجکتها، Map و Set در جاوااسکریپت. اما ساختارهای دادهای دیگری نیز وجود دارند که به عنوان مفاهیم برنامه نویسی هستند. این ساختنمانهای داده را میتوان با زبانهای برنامه نویسی مختلف پیاده سازی کرد.
در دوره ساختمان داده و الگوریتمهای فرانت کست تلاش میکنیم تا با یک رویکرد دقیق، تمام مفاهیم را به صورت جامع بررسی کنیم. این دوره از قسمتهای تئوری و کد تشکیل شده. همین طور بر اساس چالشهای برنامه نویسی متعدد پیش خواهیم رفت.
در پایان دوره شما قادر خواهید بود تا مسائل متنوع برنامه نویسی را با بهترین روشها پیاده سازی کنید. هدف اصلی در این دوره تمرکز بر روی مهارت حل مسئله است.
مهمترین پیشنیاز این دوره، درک مفاهیم برنامه نویسی در جاوااسکریپت است. برای بررسی دقیق و جامع جاوااسکریپت، دوره جامع و پیشرفته جاوااسکریپت فرانت کست را پیشنهاد میکنیم.
پشتیبانی این دوره مانند سایر دورههای فرانت کست با مدرس دوره میباشد. در طول فرآیند یادگیری قدم به قدم باهم پیش خواهیم رفت. با انجام چالشها توانایی شما برای انجام مسائل پیچیدهتر در برنامه نویسی بیشتر خواهد شد.
دوره ساختمان داده و الگوریتمها در حال برگزار است. هر هفته ویدیوهای جدید به این دوره اضافه میشوند.
سرفصلها:
معرفی دوره. بررسی دوره ساختمان داده و الگوریتمها در جاوااسکریپت – مشاهده ویدیو
۱. پیش نیازهای دوره – مشاهده ویدیو
۲. یادگیری دقیقتر مفاهیم و پشتیبانی دوره – مشاهده ویدیو
۳. بررسی ساختمان داده – مشاهده ویدیو
۴. آرایهها – بررسی دقیقتر – مشاهده ویدیو
۵. استفاده از Set – مشاهده ویدیو
۶. مقایسه آرایهها و Set
۷. آبجکتها – بررسی دقیقتر
۸. استفاده از Map
۹. مقایسه آبجکتها و Map
۱۰. بررسی Linked List
۱۱. افزودن مقادیر در Linked List
۱۲. دریافت خروجی از Linked List
۱۳. افزودن مقادیر به ابتدای لیست
۱۴. حذف مقادیر از لیست
۱۵. جست و جو و افزودن مقادیر در میانه لیست
۱۶. دلایل استفاده از Linked List
۱۷. بررسی پیچیدگی زمانی و Big O Notation
۱۸. پیچیدگی زمانی در آرایهها و Linked List
۱۹. ساختمان دادههای List و Table
۲۰. استفاده از List و Table در جاوااسکریپت
۲۱. بررسی ساختمان داده Stack
۲۲. پیاده سازی Stack
۲۳. استفاده از Linked List در Stack
۲۴. پیاده سازی Stack با Linked List
۲۵. بررسی ساختمان داده Queue
۲۶. پیاده سازی Queue
۲۷. استفاده از Linked List در Queue
۲۸. بررسی Hash Table
۲۹. استفاده از Hash Table برای حل مسئله
۳۰. پیاده سازی ساختمان داده Hash Table
۳۱. توسعه توابع set و get
۳۲. بررسی ساختمان داده Tree
۳۳. مفاهیم در Tree
۳۴. بررسی یک مثال از Tree
۳۵. پیاده سازی مثال Tree
۳۶. بهینه سازی کد
۳۷. حذف Nodeها از Tree
ویدیوهای اضافه شده:
۳۸. بررسی جست و جوهای Depth-first و Breadth-first
۳۹. پیاده سازی Depth-first
۴۰. پیاده سازی Breadth-first
۴۱. بررسی درخت جست و جوی Binary
۴۲. افزودن مقادیر به BST
۴۳. توسعه تابع find در BST
22 پاسخ به “دوره ساختمان داده و الگوریتمها در جاوااسکریپت”
سلام استاد امید وارم که حالتون خوب باشه و سلامت باشید.
خیلی ممنون از آموزش خوب و قابل فهم تون .
استاد لطفا میشه api ها و بحث لوکال استوریج هم مورد برسی قرار بدید فکر میکنم مباحث مهمی هستن برای یاد گیری بیشتر.
خیلی ممنون از شما استاد عزیز.
سلام
ممنونم از لطفتون.
این مفاهیم رو به صورت کامل در دوره جامع و پیشرفته جاوااسکریپت بررسی کردیم.
تمرکز ما در دوره ساختمان داده و الگوریتمها بر روی درک دقیق مفاهیم برنامه نویسی و روشهای حل مسئله هست.
سلام مجدد
بابت سوال دوم دوباره پیام میدم
کدهای لاین ۳۴ از ویدئوی ۱۵ نباید
const newElement = { value: value, next: existingElement.next }
باشه ؟!
چون اگر وسط یک لیست بخوایم المنتی اضافه کنیم به مشکل میخوریم و بعدیش رو لینک نمیکنه.
دقیقه ۷:۲۸ از ویدیو رو ببینید چون next شده ۲، یه المنت جدید با مقدار ۲ به آرایه اضافه کرده که مقداری برای next هم نداره و انگار پیمایش ادامه داره در حالی که با توجه به حذف آیتم های قبلی این آبجکت به ته لیست اضافه شده
و چیزی که الان میبینیم تووی خروجی، با توجه به تعریفی که از tail داریم، این لیست tail نداره
کدهای قسمت ۱۵ (جست و جو و افزودن مقادیر در میانه لیست) خط ۳۴ ندارن.
لطفا از قسمتی که براتون مبهم هست یک اسکرین شات توی واتساپ یا تلگرام برای من بفرستید تا توضیح بدم خدمتتون.
سلام، وقتتون بخیر
ممنونم بابت آموزش خوبتون
من دوتا سوال دارم و لطف میکنید اگر جواب بدید:
۱٫ تووی ویدئوی ۱۴ برای متد find، چرا این خط
curElement = curElement.next
رو نوشتید؟ ما که قرار نیست المنتی رو جا به جا کنیم و فقط قراره المنت مورد نظرمون در صورت وجود نمایش داده بشه!
۲٫ تووی ویدئوی ۱۵، مقدار next برای newElement رو مساوی existingElement.value قرار دادید؟ اینطوری که newElement داره به مقدار قبل از خودش، که ۲ هست اشاره می کنه!
سلام
ممنون از شما.
در صورتی که المنت مورد نظر رو در زمان پیمایش با While نتونیم پیدا کنیم، باید المنت بعدی بررسی بشه.
اشاره گر next مقدار المنت بعدی رو در نظر میگیره. در نتیجه میتونیم برای curElement مقداردهی مجدد کنیم.
در مورد سوال بعدیتون هم موضوع شبیه به این هست. باید دقت کنید که مقدار next زمانی که به عنوان یک Property در نظر گرفته میشه، به معنی مقدار بعدی لیست هست.
البته باید توجه داشت که زمانی که value برای existingElement بررسی میشه، برای این هست که بدونیم المنت اصلی لیست چه مقداری هست.
سلام. وقتتون بخیر. میشه در مورد مسائلی که میخواید در آینده بررسی کنید و الگوریتم هاتون یکم توضیح بدین؟ ممنون
سلام.
بله حتما. این دوره از دو قسمت اصلی ساختمان داده و الگوریتمها تشکیل شده.
در قسمت ساختمان داده مفاهیم Linked List – Stack – Queue – Hash Table – Basic Tree – Binary Search – Heap – Graph بررسی خواهند شد.
و در قسمت الگوریتمها مفاهیم پیچیدگی زمانی و Big O Notation، الگوریتمهای جست و جو و Sort، الگوریتمهای آرایهها و در نهایت بررسی الگوریتمهای پیچیدهتر رو خواهیم داشت.
در طول دوره تمرکز ما روی مهارت حل مسئله هست.
سلام و درود استاد
باز هم یه حرکت خفن از شما
ممنون که با این قیمت و کد های تخفیف به فکر ما هستین
سلام
ممنونم شما لطف دارین.
امیدوارم براتون مفید باشه.
سلام استاد این دوره در کنار node js کاربردی داره؟
سلام
در طول این دوره مهارت حل مسئله در برنامه نویسی رو یاد میگیریم.
برای همین میتونم بگم به تکنولوژی خاصی محدود نیستیم، تمرکز ما روی مفاهیم برنامه نویسی هست.
قطعا برای درک بهتر بکاند تسلط بر این مفاهیم کاربردیتر هست.
سلام استاد امید وارم حالتون خوب باشه 🙂
استاد من در حال یادگیری ریکت هستم از سایت خودتون و واقعا خیلی عالی تدریس میشه من که خیلی خیلی راضی ام 🙂
میخواستم ببینم این دوره در کنار ریکت به دردم میخوره؟
خیلی ممنون از شما استاد عزیز
سلام
خیلی ممنونم از لطفتون و امیدوارم براتون مفید باشه.
قطعا میتونه کاربردی باشه، چون تسلط بیشتر شما روی مفاهیم اصلی برنامه نویسی در جاوااسکریپت میتونه برای درک React کمکتون کنه.
سلام استاد صدری وقتتون بخیر
استاد من از امروز برنامه ریزی کردم برای یادگیری این دوره 😍
فقط یک سوال در هفته چند قسمت قراره منتشر کنید؟
سلام
ممنونم و امیدوارم براتون مفید باشه.
سعی میکنم تعداد ویدیوها زیاد باشن، اما شما متوسط رو ۶ ویدیو در هفته در نظر بگیرید.
سلام استاد صدری وقتتون بخیر
از اسفندماه منتظر این دوره م 😁🤗
سلام
ممنونم از حمایتتون 🙂
سلام و سپاس استاد عزیز ممنون برای این دوره خوب و کاربردی
سلام
ممنونم، امیدوارم براتون مفید باشه.
سلام روزتون بخیر. خسته نباشید. به نظر میرسه من اولین کامنت هستم :))
یه سوالی که شاید اکثر دوستان بپرسن اینه که ، این دوره قراره حدودا چند قسمت باشه؟
سلام
خیلی ممنون.
به احتمال زیاد برای هر دو مبحث در مجموع حدود ۱۵۰ قسمت.