اگرچه تمرینات دوره در دو نسخه آسان آموزش کامپیوتراز صفرتا صد و چالش برانگیز ارائه می شوند، اما متوجه شدم که حتی تمرینات آسان نیز می تواند کمی مشکل باشد. اگر چیزی در مورد برنامه نویسی نمی دانید، توصیه می کنم فردی را برای مطالعه این دوره پیدا کنید.
خوشبختانه، CS50 یکی از بزرگترین و فعال ترین انجمن های دوره آنلاین را دارد: Discord آنها را بررسی کنید.
یا اگر به دنبال دوره کوتاهتر و کاربردیتری هستید، ممکن است بخواهید به رتبهبندی پایتون من نگاهی بیندازید، که شامل برخی از رمپهای ملایمتر به دنیای برنامهنویسی است.
آموزگار
ما نمیتوانیم بدون آموزش کامپیوتراز صفرتا صد مطرح کردن دیوید جی. مالان، استاد دانشگاه هاروارد که این دوره را تدریس میکند، درباره CS50 بحث کنیم. به ندرت یک مربی تا این حد در موفقیت یک دوره مؤثر بوده است.
پروفسور مالان فراتر از اینکه یک معلم عالی است، یک سرگرم کننده واقعی است، با ارائه تقریباً عالی. و هنگامی که در حال انجام یک دوره آموزشی هستید که ممکن است ده ها ساعت طول بکشد، داشتن یک مربی که بتواند توجه زبان آموز را به خود جلب کند تفاوت بزرگی ایجاد می کند.
بنابراین، اگر با وجود تمایل خالصانه به یادگیری، متوجه شدید که هنگام گذراندن دورههای آنلاین به خواب میروید، ممکن است این دوره برای شما مناسب باشد. انرژی پروفسور مالان مسری است!
آنچه خواهید آموخت
این دوره با این فرض شروع می شود که علم کامپیوتر در هسته خود حل مسئله است. شما را با دودویی، زبان اساسی رایانه ها آشنا می کند و توضیح می دهد که چگونه دنباله های 1 و 0 می آموزش کامپیوتراز صفرتا صد توانند به نوعی متن، تصاویر، ویدیوها و حتی صداها را نشان دهند.
خواهید آموخت که الگوریتم ها دستورالعمل های گام به گامی هستند که برای حل یک مسئله طراحی شده اند. متداولترین نوع الگوریتمهایی که در طول دوره با آنها سروکار دارید، الگوریتمهایی برای مرتبسازی و جستجو هستند، مانند مرتبسازی حبابی، مرتبسازی ادغام و جستجوی باینری.
ممکن است تعجب کنید، "اگر همه آنها یک کار را انجام دهند، وجود الگوریتم های مختلف چه فایده ای دارد؟" این زمانی است که با اندازه گیری کارایی یک الگوریتم با نماد Big O آشنا می شوید.
اولین زبان برنامه نویسی که دوره آموزش می دهد، زبان مبتدی اسکرچ است. از طریق کدنویسی مبتنی بر بلوک، از Scratch برای نشان دادن مفاهیم اساسی برنامه نویسی مانند توابع، عبارات شرطی، عبارات بولی، حلقه ها و متغیرها استفاده خواهید کرد.
بعداً در دوره، متوجه خواهید شد که این مفاهیم اساسی بارها و بارها مطرح می شوند، زیرا تقریباً در هر زبان برنامه نویسی که CS50 به شما آموزش می دهد، یافت می شوند.
سپس این دوره چرخ های آموزشی شما آموزش کامپیوتراز صفرتا صد را حذف می کند و شما را به عمق زبان های برنامه نویسی سطح پایین می کشاند. منظور من از "سطح پایین" "کمتر با ارزش" نیست. در علم کامپیوتر، زبانهای برنامهنویسی سطح پایین، زبانهایی هستند که به کد ماشین نزدیکتر هستند: هرچه به کد ماشین نزدیکتر باشند، «پایینتر» هستند.
زبان اسمبلی به همان اندازه به باینری نزدیک است و دوره به طور مختصر در مورد آن بحث خواهد کرد. اما اولین فرو رفتن عمیق ما در برنامه نویسی سنتی (نوشتن خطوط کد به جای چیدمان بلوک های رنگارنگ مانند Scratch) با C خواهد بود، یک زبان برنامه نویسی سطح پایین که در آن حافظه را با دست مدیریت می کنید و اولین آموزش کامپیوتراز صفرتا صد ساختارهای داده خود را پیاده سازی می کنید.
شما یاد خواهید گرفت که رایانه ها داده ها را به ترتیب مکان ها در حافظه ذخیره می کنند و چگونه محاسبه می کنندrs می تواند داده ها را با آدرس ها و نشانگرها پیدا کرده و به آنها دسترسی داشته باشد. همچنین با روشهای مختلفی که میتوانیم فهرستهایی از مقادیر را ایجاد و ذخیره کنیم، مانند آرایهها، فهرستهای پیوندی، و درختها، آشنا خواهید شد.
شما مزایا و معایب هر ساختار داده را مقایسه خواهید کرد. به آموزش کامپیوتراز صفرتا صد عنوان مثال، جداول هش را می توان در زمان ثابتی به دست آورد، اما نیاز به کاهش خطر برخورد داده ها دارد.