دوره مبانی علوم کامپیوتر دانشگاه هاروارد یا بهاختصار سیاسفیفتی از بهترین و معتبرترین دورههای مقدماتی برای شروع در دنیای علوم کامپیوتر و برنامهنویسی است. این دوره هر ساله نهتنها در دانشگاه هاروارد بلکه در سرتاسر جهان بهصورت آنلاین و حضوری نیز برگزار میشود.
از نمایندگان CS50 در ایران یعنی CS50xShiraz، دوره CS50x را در پاییز ۱۴۰۳ در شیراز ارائه میکند. علاوهبر برگزاری دورهی سیاسفیفتیاکس، این مجموعه فعالیتهای دیگری مثل آفیس اورز، هکاتون، نمایشگاه پایانی و وبینارهای آموزشی نیز برای شرکتکنندگان خود برگزار میکند.
در این پست ویرگول، سرفصلهای دورهی سی اس فیفتی اکس را بههمراه مطالب تدریسی هر هفته معرفی خواهیم کرد.
این هفته مفاهیم اساسی علوم کامپیوتر را از طریق اسکرچ، یک زبان برنامهنویسی بصری، معرفی میکند. دانشجویان درباره تفکر محاسباتی، حل مسئله و ساختارهای اولیه برنامهنویسی مانند توابع، متغیرها، شرطها و حلقهها یاد میگیرند که برای درک نحوه پردازش اطلاعات و اجرای دستورات توسط کامپیوترها بسیار مهم هستند، به توسعه تفکر منطقی کمک کرده و دانشجویان را برای وظایف پیچیدهتر برنامهنویسی آماده میکنند. در صنعت، این مهارتها برای طراحی الگوریتم و تجزیه مسائل در توسعه نرمافزار ضروری هستند.
مفاهیم تدریسی هفته ۰: علوم کامپیوتر. تفکرمحاسباتی. حل مسئله: ورودیها و خروجیها. نمایش محتوا به شکل: یکتایی، دوتایی، دهدهی، اسکی، یونیکد، RGB. انتزاع. الگوریتم. مدت زمان اجرا. شبهکد. اسکرچ: توابع، آرگومانها، مقادیر بازگشتی، متغیرها، عبارات منطقی، شرطها، حلقهها، رویدادها، رشتهها.
دانشجویان وارد برنامهنویسی با زبان C میشوند، درباره کد منبع، کد ماشین و فرآیند کامپایل یاد گرفته و ساختار برنامه، انواع داده و کنترل جریان را بررسی میکنند. زبان برنامهنویسی سطح پایین C بینشی در مورد نحوه کار کامپیوترها در سطح اساسی ارائه میدهد و درک آن برای برنامهنویسی سیستمها، سیستمهای جاسازی شده و برنامههای حساس به عملکرد ارزشمند است. بسیاری از زبانهای برنامهنویسی مدرن تحت تأثیر C هستند، بنابراین دانش پایه قوی برای یادگیری زبانهای دیگر فراهم میکند.
مفاهیم تدریسی هفته ۱: سی. کد منبع. کد ماشین. کامپایلر. درستی کد، طراحی کد، سبک کد. ویژوال استودیو کد. هایلایت سینتکس. دنبالههای فرار. هدرفایلها. کتابخانهها. صفحات راهنما. نوعها. شرطها. متغیرها. حلقهها. لینوکس. رابط کاربری گرافیکی (GUI). رابط خط فرمان (CLI). ثابتها. کامنتها. شبهکد. عملگرها. سرریز عدد صحیح. عدم دقت اعداد اعشاری.
هفته دوم بر آرایهها و رشتهها در C، همراه با آرگومانهای خط فرمان و مقدمهای بر رمزنگاری تمرکز دارد. دانشجویان درباره تخصیص حافظه و نحوه ذخیره و دستکاری دادهها یاد میگیرند که برای مدیریت و پردازش کارآمد دادهها بسیار مهم هستند. در صنعت، درک آرایهها و مدیریت حافظه برای توسعه الگوریتمهای کارآمد و بهینهسازی عملکرد نرمافزار، به ویژه در زمینههایی مانند تحلیل داده و برنامهنویسی سطح سیستم ضروری است.
مفاهیم تدریسی هفته ۲: پیشپردازش. کامپایل کردن. اسمبل کردن. لینک کردن. دیباگینگ. آرایهها. رشتهها. آرگومانهای خط فرمان. رمزنگاری.
الگوریتمهای اساسی برای جستجو و مرتبسازی همراه تحلیل الگوریتمی با استفاده از نماد مجانبی بررسی میشود. دانشجویان همچنین درباره بازگشت یاد میگیرند که برای حل مسائل پیچیده بهصورت کارآمد و درک تعادل بین رویکردهای مختلف بهشدت مهم است. در صنعت فناوری، مهارتهای قوی الگوریتمی برای بهینهسازی عملکرد نرمافزار، طراحی سیستمهای مقیاسپذیر و حل مسائل محاسباتی چالشبرانگیز در زمینههایی مانند هوش مصنوعی و علم داده بسیار ارزشمند هستند.
مفاهیم تدریسی هفته ۳: جستجو: جتسجوی خطی، جستجوی دودویی. مرتبسازی: مرتبسازی حبابی، مرتبسازی انتخابی، مرتبسازی ادغامی. نمادهای: O, Ω, Θ. بازگشت.
این هفته بهصورت عمیقتر به مدیریت حافظه میپردازد و اشارهگرها، تخصیص حافظه پویا و مسائل رایج مربوط به حافظه را معرفی میکند و دانشجویان درباره ورودی/خروجی فایل و دستکاری تصویر یاد میگیرند. درک مدیریت حافظه برای نوشتن کد کارآمد و بدون اشکال، به ویژه در زبانهایی مانند C و ++C بسیار مهم است. در صنعت، این مهارتها برای توسعه سیستمهای قوی، بهینهسازی استفاده از منابع و اشکالزدایی مسائل نرمافزاری پیچیده، به ویژه در زمینههایی مانند سیستمهای عامل، توسعه بازی و محاسبات با کارایی بالا حیاتی هستند.
مفاهیم تدریسی هفته ۴: اشارهگرها. خطاهای بخشبندی. تخصیص حافظه پویا. استک. هیپ. سرریز بافر. ورودی خروجی فایل. تصاویر.
دانشجویان درباره ساختمان دادههای مختلف برای سازماندهی و مدیریت کارآمد دادهها مانند صفها، استکها، لیستهای پیوندی، درختها، جداول هش و درختهای تری یاد میگیرند چون درک زمان و چگونگی استفاده از ساختمان دادههای مختلف برای طراحی الگوریتمها و سیستمهای نرمافزاری کارآمد بسیار مهم است. در صنعت، تسلط بر ساختارهای داده برای توسعه برنامههای مقیاسپذیر، سیستمهای پایگاه داده و حل مسائل محاسباتی پیچیده در زمینههایی مانند موتورهای جستجو، شبکههای اجتماعی و سیستمهای مالی ضروری است.
مفاهیم تدریسی هفته ۵: انواع داده انتزاعی. صفها، استکها. لیستهای پیوندی. درختها، درختهای جستجوی دودویی. جداول هش. tries.
دوره به پایتون منتقل میشود و سینتکس و ویژگیهای آن را معرفی میکند. دانشجویان یاد میگیرند که چگونه انتزاعهای سطح بالای پایتون میتوانند بسیاری از وظایف برنامهنویسی را ساده کرده و تنوع پایتون این زبان را برای نمونهسازی سریع، تحلیل داده، توسعه وب و هوش مصنوعی ارزشمند میکند. در صنعت، پایتون بهطور گستردهای برای علم داده، یادگیری ماشین، توسعه وب و اتوماسیون استفاده میشود و به یک زبان ضروری برای بسیاری از نقشهای توسعه نرمافزار مدرن تبدیل شده است.
مفاهیم تدریسی هفته ۶: پایتون: توابع، آرگومانها، مقادیر بازگشتی، متغیرها، عبارات منطقی، شرطها، حلقهها. ماژولها، پکیجها.
این بخش مفاهیم کلیدی در هوش مصنوعی، از جمله مهندسی پرامپت، یادگیری ماشین و شبکههای عصبی را معرفی کرده تا دانشجویان بینشی در مورد نحوه کار سیستمهای هوش مصنوعی و کاربردهای آنها به دست آورد. درک هوش مصنوعی با افزایش رواج آن در صنایع مختلف، اهمیت بیشتری پیدا کرده و این دانش برای توسعه برنامههای مبتنی بر هوش مصنوعی، بهبود تجربههای کاربری و حل مسائل پیچیده در زمینههایی مانند بهداشت و درمان، امور مالی و سیستمهای خودمختار ارزشمند است.
مفاهیم تدریسی هفته ۶.۵: مهندسی پرامپت. پرامپت سیستم. پرامپت کاربر. هوش مصنوعی مولد. هوش مصنوعی. درختهای تصمیم. Minimax. یادگیری ماشین. یادگیری تقویتی. کاوش در برابر بهرهبرداری. یادگیری عمیق. شبکههای عصبی. مدلهای زبان بزرگ. معماری ترانسفورمر. توهم.
از آنجایی که درک پایگاههای داده برای مدیریت و تحلیل مقادیر زیادی از دادهها بهصورت کارآمد بسیار مهم است، دانشجویان درباره پایگاههای داده رابطهای و SQL، شامل طراحی پایگاه داده، پرسوجو و ملاحظات امنیتی یاد میگیرند. در صنعت، بسیاری از برنامهها به پایگاههای داده متکی هستند که مهارتهای SQL برای نقشهای مربوط به مدیریت داده، هوش تجاری و توسعه بکاند وب را ارزشمند میکنند.
مفاهیم تدریسی هفته ۷: SQL: جدولها، نوعها، دستورات، محدودیتها، شاخصها، کلمات کلیدی، توابع، تراکنشها. شرایط رقابتی. حملات تزریق SQL.
این هفته اصول توسعه وب را پوشش میدهد، از جمله HTML برای ساختار، CSS برای استایلدهی و جاوا اسکریپت برای تعاملی بودن. دانشجویان همچنین درباره پروتکلهای اینترنت و ارتباط سرور-کلاینت یاد میگیرند که مهارتهای پایه توسعه وب مدرن بوده و امکان ایجاد وبسایتهای واکنشگرا و تعاملی را فراهم میکنند. در صنعت، مهارتهای توسعه وب برای ایجاد همه چیز از وبسایتهای شخصی گرفته تا برنامههای وب پیچیده در تجارت الکترونیک، رسانههای اجتماعی و خدمات آنلاین بسیار مورد تقاضا هستند.
مفاهیم تدریسی هفته ۸: اینترنت: روترها، TCP/IP؛ DNS؛ HTTP: آدرسها، GET، POST. اچتیامال: تگها، ویژگیها. سرورها. عبارات منظم. سیاساس: ویژگیها، انتخابگرها. فریمورکها. جاوااسکریپت: متغیرها، شرطها، حلقهها. رویدادها.
دانشجویان یاد میگیرند که از فلاسک، یک فریمورک وب پایتون، برای ساخت برنامههای وب استفاده کنند که شامل ایجاد مسیرها، مدیریت درخواستها و پاسخها، و مدیریت جلسات میباشد. درک فریمورکهای وب برای توسعه برنامههای وب مقیاسپذیر و قابل نگهداری بسیار مهم است. در صنعت، از این مهارتها برای ایجاد سیستمهای بکاند برای وبسایتها و برنامههای وب، APIها و میکروسرویسها استفاده میشود که اساس بسیاری از معماریهای نرمافزاری مدرن هستند.
مفاهیم تدریسی هفته ۹: فلسک. مسیر. دکوراتورها. درخواستها، پاسخها. سشنها. کوکیها.
هفته آخر مفاهیم مهم امنیت سایبری، از جمله امنیت رمز عبور، رمزنگاری و پروتکلهای ارتباطی امن را پوشش میدهد تا دانشجویان درباره بردارهای حمله مختلف و نحوه محافظت در برابر آنها یاد بگیرند. در دنیای دیجیتال امروز، درک امنیت سایبری برای توسعه سیستمهای امن و محافظت از اطلاعات حساس بسیار مهم بوده و این مهارتها در صنعت برای شغلهایی در امنیت اطلاعات، مدیریت شبکه و توسعه نرمافزار امن در تمام بخشهایی که حفاظت از دادهها بسیار مهم است، حیاتی هستند.
مفاهیم تدریسی هفته ۱۰: رمزهای عبور. حملات جستجوی فراگیر. پسورد منیجرها. احراز هویت دو مرحلهای. رمزهای عبور یکبار مصرف. هش کردن. جدول رنگینکمان. سالتینگ. رمزنگاری. رمزنگاری کلید مخفی. رمزنگاری متقارن. رمزنگاری نامتقارن. رمزنگاری کلید عمومی. HTTPS. کلیدهای عبور. رمزنگاری سرتاسری. حذف. حذف امن. رمزنگاری کامل دیسک. باجافزار.
به این ترتیب، دوره CS50x دانشگاه هاروارد، یک سفر جامع و هیجانانگیز در دنیای علوم کامپیوتر و برنامهنویسی را برای شما فراهم میکند و به شما دانش و مهارتهای لازم برای موفقیت در عصر دیجیتال، از مفاهیم پایه در اسکرچ گرفته تا موضوعات پیشرفتهتر مانند هوش مصنوعی و امنیت سایبری، را میآموزد.
برای خواندن تجربیات دانشجویان پیشین فارسیزبان و انگلیسیزبان این دوره میتوانید این پست ویرگول را بخوانید.
با شرکت در CS50x شیراز، نه تنها از محتوای آموزشی با کیفیت بهرهمند میشوید، بلکه فرصت شرکت در فعالیتهای جانبی مانند آفیس اورز، هکاتون، نمایشگاه پایانی، و وبینارهای آموزشی مهارتهای نرم و ورود به بازار کار را نیز خواهید داشت.
این دوره قطعاً نقطه شروعی عالی برای هر کسی است که میخواهد وارد دنیای هیجانانگیز برنامهنویسی و فناوری شود. پس اگر آمادهاید تا مهارتهای خود را ارتقا دهید و افقهای جدیدی را در دنیای دیجیتال کشف کنید، CS50x شیراز منتظر شماست!
برای اطلاع از آخرین اخبار CS50xShiraz، ما را با همین نام در شبکههای اجتماعی اینستاگرام، تلگرام، لینکدین و ایکس (توییتر سابق) دنبال کنید.