Мої відкриття на курсі CS50
Привіт, я Алла Капля, Junior Backend Developer. В цьому матеріалі я розповім, як мій досвід навчання на курсі CS50 став справжнім періодом відкриттів. Розпочинала цей курс вже маючи деяку базу, тому головною метою було поглибити вже здобуті знання. Тим паче, що я захоплююсь викладацькою майстерністю Девіда Малана.
Ще на початку мого навчання багато розробників з досвідом у п’ять-сім років говорили про те, що і самі час від часу повертаються до цього курсу. Та і про сам курс я дізналась зі статті розробника з досвідом. І спочатку я не розуміла, що може бути корисного для цих людей в основах комп’ютерних наук. Вони ж працюють з цим постійно!
Що ж, я і сама приємно здивувалась зробленим відкриттям ще на старті. Про що і розповім детальніше у цьому блозі. Можливо, цей матеріал ще й допоможе вам мотивувати себе не зійти з дистанції.
Не навчання — наповнення та розширення бази знань
Уроки побудовані так, що ви точно опануєте нові навички. Кожна відеолекція, яку проводить Девід, насправді нагадує розважальне шоу. Він залучає всі доступні інструменти, щоб пояснити, на перший погляд, складні речі так, щоб їх точно зрозуміли. Це емоційне викладання + залученість аудиторії. Такий формат дуже допомагає мені краще запам’ятовувати всі пояснення.
Не менш корисними та важливими виявились короткі відеоуроки та уроки практики від асистентів лектора. Вони дали більш детальне занурення в тему для кращого розуміння вивчених інструментів та особливостей їх застосування. Тому для мене цей курс не про навчання, а про приємне наповнення бази знань.
Зараз переглядаю оновлений CS50 від січня 2024 року паралельно з тим, щоб був доступний в грудні
Спільна логіка
Шкода, що я не натрапила на цей курс раніше, можливо обрала б інший стек. Не можу точно стверджувати стосовно стека, проте точно можу сказати, що CS50 точно вплинув би на вибір. Чому я так вважаю? Бо одне з ключових відкриттів:
Всі мови програмування мають спільну логіку — відрізняється тільки синтаксис.
Звісно, є ще принципи та різні нюанси використання кожної мови програмування. Але коли я подивилась на таку просту істину як спільна логіка, то вже код того ж C# або Java не здається чимось страшним. Вже можу їх читати, можливо не все, але ключове — так.
Дебагінг
Чого мені точно не вистачало у попередньому навчанні — так це розуміння роботи з дебагом. Насправді цей блок, можна сказати, був максимально стислим та оглядовим. В CS50 ж йому приділяється більше уваги з акцентом на необхідність розуміння та практикою застосування.
Досі не розумію, чому я про нього детально дізналась вже після завершення вивчення курсу Full-stack-розробки. Відверто здивована, що цей блок могли просто «опустити». Він справді важливий, і вміти дебажити код життєво необхідно. Це спростить вам життя в ролі девелопера — користуйтесь.
Using the Linux Command Line
Використання термінала для більшості користувачів ПК — темний ліс. Насправді ж, це важливо знати практично кожному. Особливо коли ви займаєтесь всіма налаштуваннями свого комп’ютера самостійно. Свого часу деякі команди на Windows мені допомагали розв’язати проблему зі швидкістю обробки інформації. Але про них я дізналась вже, як кажуть, «коли півень клюнув».
Є думка, що засіла в голові завдяки деяким викладачам попереднього курсу: використання термінала для frontend-розробки не є необхідним. Можна, до прикладу, обійтись терміналом, який вбудований в VSCode. Рідкісні виключення говорили про необхідність опанувати bash. Сама я скористалась порадами з категорії рідкісних.
В CS50 є окреме чудове відео, що присвячене роботі з командами на прикладі операційної системи Linux. Проте багато команд спільні і для Mac, і для Windows. Крім того, в основному уроці (тема першого тижня) теж є цілий блок по роботі з терміналом. Там тільки основні команди, додаткові ви можете пошукати самостійно.
Цикли while та do while
Велика увага приділяється основам програмування на прикладі мови C. Зокрема, ви детально познайомитесь із:
- типами даних;
- логічними операторами;
- операторами обчислення;
- циклами або петлями;
- масивами;
- алгоритмами тощо.
Розумію, що для мене мали б бути знайомі цикли while та do while. Можливо для когось цей приємний сюрприз був би не цікавим. Але у мене саме з цих циклів було мало попередніх знань. Ми тільки читали в конспекті про їх існування та один раз переглянули синтаксис. Тобто не було розуміння, як ці петлі працюють і взагалі доцільність їх використання.
Дуже добре про ці цикли та про for подана інформація як у лекції Девіда Малана, так і у окремому короткому відео з поясненнями. Тому, якщо у початківців виникають труднощі з цією інформацією — вам точно допоможе пояснення в CS50.
Багато практики
Не секрет, що найкраще засвоєння інформації — це застосування теорії на практичному рівні. Якщо ви практик, то точно не будете розчаровані. Курс передбачає багато завдань, де є обов’язкові та додаткові завдання. Такий поділ існує, бо для успішного завершення курсу є необхідний мінімум балів, який нараховується за виконані практичні.
Мені дуже сподобалось, як побудовані завдання. Вони не тільки дуже цікаві, але й мають чудові пояснення. Уважність — ваше все, бо над якимсь завданням можна просидіти довго, а потім виявиться, що ви просто десь загубили одну умову. У мене таке було при виконанні завдань з відстежування достовіртності номерів кредитних карт. Перечитавши умови, змогла успішно все виконати.
Вихідний та машинний код
Зверніть увагу, що багато сучасних курсів практично не надають інформацію про машинний код. Насправді ж розуміння того, як працює ваш комп’ютер, є надважливим. Інформацію про двійкову систему чисел я здебільшого отримала саме в процесі вивчення CS50.
Висновки
Рішення піти на курс від Гарвардського університету за рекомендацією Ярослава було для мене правильним. Розуміючи краще основи, стаєте кращим спеціалістом. Оновлення та поглиблення знань дуже важливі для професійного зростання. Тому не вагайтесь, якщо ще думаєте, чи курс того вартий.
І моє питання до тих, хто вже навчався на CS50: що для вас стало відкриттям на цьому курсі?
48 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів