Що робити, коли застряг у вивченні CS50

Самостійне навчання вимагає від студента значної концентрації. Особливо, коли ви обрали програму вивчення комп’ютерних наук. Зараз це розумію не з чуток, бо хочу опанувати курс від Harvard University з основ комп’ютерних наук — CS50: Introduction to Computer Science.

Програма ускладнюється, що в результаті створює перешкоду, яка не дає рухатись далі. Це — закономірність, яку я спостерігаю вже не вперше, проходячи чергову навчальну програму чи курс.

Під час вивчення CS50 в якийсь момент ви можете зрозуміти, що застрягли. То як впоратись із цим і продовжити навчатись далі?

У цій статті опишу на власному досвіді, як подолати етап застою і не зійти з дистанції. Є причини, які здатні вас загальмувати під час вивчення CS50. Втім з ними можна впоратись! Ви ж іще не досягли мети, а отже — мусите прикласти трішки більше зусиль.

Ускладнення навчальної програми

Досягти успіху можна тільки тоді, коли ваш рівень зростає. Тому нормально, що навчальна програма поступово стає більш складною. Завдяки цьому ми зростаємо як спеціалісти. А оскільки взялись навчатись на курсі від Harvard University, то тут логічним буде пропорційне посилення вашого рівня.

CS50 передбачає поступове вивчення ключових тем в комп’ютерних науках. Програма написана для тих, хто тільки починає знайомство з напрямком розробки. Як результат — кожна тема дуже детально пояснюється професором David J. Malan. Тому, як на мене — важливо уважно переглядати відеолекції викладача.

Найбільш складною темою для вас може видатись Algorithms або Memory. У кожного по різному, все залежить від того, що вам простіше для сприйняття — алгоритмічні задачі чи робота з пам’яттю. Ці теми потребують вашої значної уваги і вони важливі для подальшого вивчення комп’ютерних наук. Я помітила, що більшість студентів має камінь спотикання саме на вивченні теми Memory.

Щоб подолати цю тему я користувалась наступним алгоритмом:

  • переглядала по кілька разів лекції Девіда — коли була потреба, то і 2-3 рази;
  • перечитувала Transcript лекцій — досить дієво діє читання, а це по факту готовий конспект;
  • вивчала презентацію, яку лектор використовував під час пояснення теми;
  • переглядала всі короткі відео — жодного не пропустила, бо там додаткові пояснення всіх методів, синтаксису, типів і т.п.;
  • виконувала ВСІ практичні — на платформі вказано, що ви повинні здати тільки одне завдання із перелічених, але практика найкращий вчитель;
  • здійснювала пошук додаткової інформації в Google — для кращого розуміння складної теми;
  • переглядала відео на YouTube від інших експертів.

Якщо для вас складно сприймати англомовне навчання, можна додатково переглядати україномовну версію. На Prometeus є перекладений українською мовою цей курс, щоправда за 2019 рік. Проте загальні концепції не змінились і ви зможете краще зрозуміти складну для себе тему.

Зрозумійте, що складну тему можна вивчити. Варто копати глибше, якщо наявних інструментів не вистачає. На етапі, коли ви застрягли, це може задаватись занадто високим тяжким випробуванням. Проте подолавши його — далі рухатись буде дійсно простіше.

Збільшення навантаження

Програма CS50: Introduction to Computer Science має все необхідне для того, щоб розкрити тему вивчення. Коли вам складно, може здаватись, що крім складної теми ще й зростає навантаження. Здається, що всього стає більше:

  • конспект для вивчення;
  • відео на перегляд;
  • матеріали — аудіо, текстові, презентації, графіки і т.п.;
  • практичних робіт;
  • лабораторних робіт.

В порівнянні з Week 0, воно так і є. Проте насправді, програма збалансована — може відрізнятись кількість обов’язкових до вивчення матеріалів. Але скоріше за все, така думка виникає на ґрунті того, що студент застряг. У мене такий момент також був, але тут найкраще працює раціональних підхід. На платформі курсу CS50 ви маєте доступ до всіх модулів. Достатньо просто переглянути — і ви зрозумієте, що навантаження скрізь відносно однакове.

В цей же час моя особиста рекомендація — розвантажити свій час! Відмовтесь на період вивчення CS50 від зайвих занять:

  • проекти — якщо ви над чимось працюєте додатково для саморозвитку, визначте для себе пріоритетні та відмовтесь від тих, які вас виснажують;
  • навчання поза CS50 — лишіть англійську, це єдине, що вам буде корисне на ці 11-12 тижнів;
  • поставте на паузу частину своїх чатів — повернетесь до них, коли будете готові виділяти на них час;
  • зберігайте пропоновані ресурси для розвитку або нові проекти, але не долучайтесь до них під час навчання.

Я відмовилась від 2 pet-projects, бо вони практично не рухались. Але відповідальність зростала і кращим рішенням було попередити команди та вийти зі складу цих проектів. Відверто поділюсь — це було вірним рішенням, бо думки про невиконані завдання справді відполікають і давлять морально.

Окрема порада — давайте собі відпочивати. Іноді складна тема з’являється тоді, коли ви занадто багато працюєте. Мозок хоче розрядки, тому слід задовольнити цю потребу. І коли емоційно не стягуєте — треба теж відпочити і дозволити собі прийти до тями. В Україні емоційні гойдалки ні для кого не новина, це нормально дати волю емоціям. Важливий баланс, бо він забезпечує ефективність.

Необхідна підтримка від ментора або колег

Самоосвіта має як переваги, так і недоліки. Ви не прив’язані до локації, термінів та можете займатись навчанням в зручному для вас режимі. Разом з тим мінімізується комунікація, завдяки якій можна подивитись на проблему під іншим кутом.

Насправді Девід забезпечив таку можливість, коли створював цей курс. Не дарма CS50 вважається одним із найкращих для початківців. Тому не лінуйтесь користуватись цим. Бо проблеми з цим немає, якщо уважно вивчити доступні для вас інструменти. Ви отримуєте доступ до спільноти однодумців в Discord — це досить зручна платформа для спілкування. Не нехтуйте цим, бо тaм передбачена менторська підтримка та можливість спілкування в чатах по темах практичних робіт, лабораторних та різноманітних завдань.

Маленька рекомендація від мене: якщо у вас багато чатів на цій платформі або ви не хочете отримувати сотні повідомлень щодня — заглушіть сервер.Відвідуйте тоді, коли це необхідно.

Ви можете просто читати або спілкуватись в чатах серверу, ставити питання, знайомитись із іншими студентами. Там точно знайдете відповіді на всі запитання по програмі курсу і розширити нетворкінг.

Збирайтесь на CS50 з однодумцями

Спілкуюсь з розробниками з різним досвідом і більш досвідчені говорять, що часто повертаються до CS50. Спеціалісти надають перевагу цій програмі, щоб освіжити в пам’яті основи комп’ютерних наук. Це розумно, бо невикористовувані знання — забуваються, а з часом навіть використовувані — стають застарілими або неактуальними зовсім.

Коли не впевнені в своїх силах — об’єднуйтесь в команди. Так менше спокуси зійти з дистанції, та і бажаючих скласти вам компанію набереться. До речі, в січні збираємось навчатись разом. Поки я цей шлях проходжу самостійно. Але знаю, що змогла надихнути якусь кількість людей на вивчення CS50. Не забувайте, що в кінцевому результаті ви матимете сертифікат від Гарварду, це стимул працювати попри труднощі.

З радістю ділюсь інформацією, що мені доступна і буду продовжувати це робити. До прикладу, сама я дізналась про курс зі статті Ярослава. Якщо ви ще не знаєте про нього або не читали статтю — щира рекомендація. А ще рекомендую канал CS50 на YouTube — там не лише навчальні матеріали, але й багато цікавого або розважального контенту.

👍ПодобаєтьсяСподобалось10
До обраногоВ обраному11
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

По-перше, не сказано, які результати досягнені. По-друге, я знаю багато програмістів, які стали досить прокачаними несистемно. І майже нікого не знаю, хто би проходив курси, CS50 чи інші.

Про результати ще буду писати, тому не пропустіть) Стосовно досягнень додам, що тема статті трохи інша. Але я врахую вашу зацікавленість в наступній статті

А друге: я знаю людей, які проходили цей курс, але ж не мені про них писати.

Просто як на мене CS50 це загальні знання, а програмування це навичка. Тому цей курс може бути корисним лише тоді, коли навичка хоч якось прокачана. Але коли вона прокачана, то можна все що завгодно читати.

Це як шахи. Коли ти не бачиш елементарну тактику, то немає практичного сенсу читати книжки по просунутим речам. А коли бачиш, то можна читати усе.

Я дивився початок CS50, подивіться й ви, там пояснення настільки детальні, що можна починати курс й без початкових знань з програмування

Ще раз, 90% робочого часу я фікшу баги. Тобто вирішую просту задачу: знаходжу місце, де програма працює не так, к очікується. Та виправляю. А усі ті пояснення... Це як після популярних книжок Хокінга вважати себе спеціалістом з теоретичної фізики. Доки ти не можеш написати код (або уявити, як цей код буде виглядати), який імплементує пояснення, вважай що ти його не зрозумів.

Ще раз, курс структурований так, що студент може почати вивчати курс CS50 без навички програмування й розвивати її в процесі проходження курсу виконуючи практичні завдання з курсу

Ще раз, курс структурований так, що студент може почати вивчати курс CS50 без навички програмування й розвивати її в процесі проходження курсу виконуючи практичні завдання з курсу

Цю мантру я чую 25 років. Спочатку мені казали, що мені просто пофартило, і скоро ВУЗи підготовлять достатню кількість фахівців. Потім у 2000-х мені казали, що Індія почала освітню програму та скоро підготує стільки мільйонів фахівців, скільки потрібно, без мовного бар’єру, по бросовим цінам, і кожного разу були топові курси, які пропонували без навички програмування освоїти бла-бла-бла... Йшли роки, я оволодів англійською, а такі курси як піарять так і піарять.

Я продивився ці курси, нічого нового та проривного я не побачив. Це все було 25 років тому, тільки з іншими мовами програмування та іншими авторами. И це дуже нагадує мені щось на кшталт: прочитайте нашу книгу по великому тенісу, та навчиться грати навіть на виходячи на корт... Але це не дуже гарно працює.

І знову назва топіку: «Що робити, коли застряг у вивченні CS50». Я от ніколи не застрявав у вивченні програмування. Для мене це ознака, що шлях хибний.

Курс CS50 безкоштовний й сертифікат можна здобути безкоштовно!

Я займаюсь популяризацію CS50 бо по-перше вважаю курс CS50 найкращим для початківців, я навів повно аргументів у попередній темі про CS50, а по-друге мені набридли розрекламовані платні курси програмування, які розповідають про $1000 зі старту

Я продивився ці курси, нічого нового та проривного я не побачив. Це все було 25 років тому, тільки з іншими мовами програмування та іншими авторами.

я відкрию тобі таємницю, більшість речей в світі не є новими
але ти можеш вивчати математику на сучасному курсі від MIT або бо книзі Евкліда якій вже 2 тис років.
це вступний курс по CS, його беруть студенти гарварду як початок спеціалізації, і там дуже класно висвітлині базові речі, розуміти які це маст хев

І знову назва топіку: «Що робити, коли застряг у вивченні CS50». Я от ніколи не застрявав у вивченні програмування. Для мене це ознака, що шлях хибний.

може це просто екстраполяція власного негативного досвіду? бо це абсодютно не так

і щось не дуже розумію нащо людині, яка тільки почала вивчати компьютер саєнс, задрачувати дебагінг? це просто звичайна частина процесу, цього і так буде вдосталь

але ти можеш вивчати математику на сучасному курсі від MIT або бо книзі Евкліда якій вже 2 тис років.

Ну... з часів Євкліда математика дуже сильно змінилася. А от брати сучасний курс від MIT або Фігтенґольц, то я вже не впевнений, що буде краще.

це вступний курс по CS, його беруть студенти гарварду як початок спеціалізації, і там дуже класно висвітлині базові речі, розуміти які це маст хев

Це не проблема. Взагалі, велика помилка у тому, що люди не розуміють у чому складність в IT. Більшість скажуть, що головна складість в IT що треба багато знати. Я не думаю, що це так. Пояснити простими словами можна майже усе: монади, лемму Йонеди, верхні/нижні половини IRQ, структури даних. Але, мій досвід що 30 років тому, що зараз вказує на одну проблему, яку добре описує анектот 30-річної давнини:

Приходить юзер до програміста та запитує його:
— Що мені робити? Я програму написав, і так пробував, і так пробував, і тут міняв. Вона усе одно не працює.
Програміст не відволікаючись від кодінгу:
— Помилка не в програмі!
— Да? Тоді допоможи мені, де помилка?
— Помилка в ДНК!
може це просто екстраполяція власного негативного досвіду?

Так, це мій 30-річний досвід спроб навчати інших програмуванню. Пояснити щось не проблема. Навчити писати код тех не проблема, можна навчить багатьох людей, навіть індусів. ChatGPT його пише. Головна проблема, з якою я стикаюся, це те що люди не можуть знайти помилки в існуючому коді. Щось не працює і це є ступор. І це лінія, яку не можуть перейти багато й багато тих, хто хоче в IT.

Раніше біло у чомусь простіше. Були прості як віник Pascal та Сі, які можна було вивчити за декілька тижнів, а далі ти просто бачив, чи можеш ти відлагоджувати код, чи то не твоє і треба шукати щось інше. Зараз ти можеш вчитися роками, особливо CSS + HTML, що взагалі не має відношення до програмування. Але можна гарно вчити на курсах. Ти можеш навіть знайти роботу, але... наступає вигорання, а по факту профнепридатність — ти просто тупиш над кодом, звісно це тільки дратує. Та і розумієш, що велью від тебе від’ємне.

і щось не дуже розумію нащо людині, яка тільки почала вивчати компьютер саєнс, задрачувати дебагінг?

Дуже просто, дебагінг це та перешкода, яку не зможуть перейти здолати 90%-95%. Тому ти або відразу зрозумієш, що це не твоє. Чи ти будеш вивчати CS декілька років, та лише потім зрозумієш, що у тебе є усі знання, але немає навички. Це як вчитися декілька років на хірурга та потім зрозуміти, що ти втрачаєш свідомість від крові.

в цілмоу погоджуюсь, і дякую за таку розгорнуту відповідь 🖐

Чи ти будеш вивчати CS декілька років, та лише потім зрозумієш, що у тебе є усі знання, але немає навички. Це як вчитися декілька років на хірурга та потім зрозуміти, що ти втрачаєш свідомість від крові.

але я не знаходжу в цьому нічого такого. це не дуже круто звісно, але просто продовжуєш шукати далі. комусь щастить відразу, хтось довго шукає. це життя))
я знаю і інший приклад свого дядька, який лише з 6ї спроби вступив в мед, але потім став шанованим і доволі відомим педіатром.
ідея була, що якщо у людини немає профільної вишки, то це класне місце щоб розпочати, і також зрозуміти чи це подобається взагалі. а якщо щось не виходить, то це не вирок.

я знаю і інший приклад свого дядька, який лише з 6ї спроби вступив в мед, але потім став шанованим і доволі відомим педіатром.

Ну... теж мені порівняли. Медицина це як раз та спеціальність, де чавунна дупа дуже сприяє долати різні сертифікації, ліцензування, ... Але це зовсім не працює у програмування. Це професії діаметрально протилежні. Як раз в медицині є знання (читай курси) й майже немає навички. Тому в принципі підготувати медика досить просто. Якщо у нас не вистачає медиків, ми просто збільшуємо набір в інститутах і через п’ять років у нас буде відповідно більше медиків. З програмістами таке не працює.

ідея була, що якщо у людини немає профільної вишки, то це класне місце щоб розпочати, і також зрозуміти чи це подобається взагалі

От я і кажу, що розуміння твоє/не твоє, подобається/або ні приходить лише через практику відлагодження коду. І не важливо, у тебе є вишка, чи тобі 13 років.

Я от ніколи не застрявав у вивченні програмування. Для мене це ознака, що шлях хибний.

Взагалі-то стикатись з нерозумінням під час навчання — це «не баг, а фіча». Це як раз нормально, й навіть очікувано. Це не значить що шлях хибний — це значить тільки те, що дана конкретна людина має якісь пробіли або в попередньо викладеному матеріалі, або в якихось «передумовах» і має витратити трохи додаткового часу щоб залатати діру. Тобто головне не сам факт того, що людина застрягла, а чи має людина навички подолання цих «затиків» та мотивацію для цього.

Взагалі-то стикатись з нерозумінням під час навчання — це «не баг, а фіча».

Тут «застряв», а це не про нерозуміння. Це глухий кут.

З вашої дискусії випливає два висновки:

1) треба практикувати код, незалежно від обраного навчання;
2) ви не знаєте про що курс CS50, або знаєте поверхнево, самі його не проходили

треба практикувати код, незалежно від обраного навчання;

Ні, не код. Відлагодження.

ви не знаєте про що курс CS50, або знаєте поверхнево, самі його не проходили

Сенс проходити, якщо... дивимося сюди. Несподівано є 20 хвилин, які посвячені темі відлагодження. Заховано десь у масивах. Галопом по Європах. І десь на тижні 4 ще трохи про valgrind.

Дякую, стосовно відлагодження зрозумів
Якщо побачите ще теми, які слабо представленні в курсі, то будь ласка дайте знати

В мене буде можливість розпитати у майбутніх випускників чи використовували відладку при рішенні практичних задач курсу

Якщо побачите ще теми, які слабо представленні в курсі, то будь ласка дайте знати

Повне нерозуміння моєї позиції, знову я бачу віру в те, що існує ідеальний курс, після чого ти станеш розробником. Моя позиція що відлагодження це ключьова навичка розробника, яку неможливо прокачати курсом. Тому щоб стати розробником, треба 90%-100% часу витрачати на конкретну практику, а різні курси це так, забавка, щоб не сумувати.

А можеш будь ласка навести цитати з моїх статей про CS50 та статей Алли, де ми вказували, що CS50 це ідеальний курс

Бо я писав, що CS50 це найкращий курс для початківців

Частина початківців все одно буде обирати курси програмування, й хай це краще буде безкоштовний CS50 з репутацією, ніж розрекламований платний курс, який обіцяє $1000 після завершення

А можеш будь ласка навести цитати з моїх статей про CS50 та статей Алли, де ми вказували, що CS50 це ідеальний курс

Бо я писав, що CS50 це найкращий курс для початківців

Ну... як на мене «найкращій» сильніше слово, ніж «ідеальний». Ідеальний газ у фізиці означає що формули виконуються з великою ступіню точності, але похибка все одно присутня. А от найкращій означає, що ви передивилися більшість курсів та маєте певні докази, а не лише суб’єктивну думку.

Якщо брати мене, то дуже заслуговують уваги книги серії «Learning (C|Python) Hard way». Як на мене самий ефективний шлях це не перегляд відео чи пасивне читання, а це коли ти працюєш за компом, та робиш кожен крок самостійно. А тобі ще й кожні п’ять хвилин дають вправи, щоб не розслаблявся. Ці книги +/- відповідають цьому.

Я також пробував зробити те, що відповідає моєму досвіду, але закинув майже на початку: link here. Але намагався підтримувати стилт текст/вправа/текст/вправа, ... А от до самого програмування не дійшов.

Як на мене самий ефективний шлях це не перегляд відео чи пасивне читання, а це коли ти працюєш за компом

У CS50 є практичні завдання

Я також пробував зробити те, що відповідає моєму досвіду, але закинув майже на початку

У нас з вами схожі цілі, це створення та популяризація якісних навчальних матеріалів

Я популяризую CS50 бо вважаю курс краще за більшість наявних
Так «найкращий» це гучна заява, але CS50 дійсно значно задирає планку, що потім простіше оминати розрекламовані платні курси

До речі, чи буде Вам цікаво почитати в січні статтю «На скільки добре покрита тема відладки у курсі CS50»? Це ідея завдяки Вашим коментарям і для себе — подальшого розвитку, і нова цікава тема.

Нісенітниця. Відлагодження це навичка, а не знання. Скільки б ви не читали книжок про техніку топ-спіну в настольному тенісі, але без тренувань ви не навчитеся. І читати, наскільки добре техніка топ-спіна розкрита в книжці... Ну таке...

Можете піти далі та створити групу в ТГ, де буде обговорення курсу і т.п. :)
В свій час Сергій Сема (розробник в Гугл з України ch.linkedin.com/in/sergiisema) робив доклад тут на доу dou.ua/forums/topic/25753, щодо того, як він потрапив у Гугл та ділився подробицями щодо інтервʼю. Він тоді створював ТГ групу щодо обговорення алгоритмів та процесу інтервʼю. В групі було декілька тисяч людей.

З великою аудиторією приходить велика відповідальність:)

Я почав займатись популяризацію CS50 майже в той час як й Алла тому ми встигли познайомитись та поспілкуватись, створення чату обговорили також

Популяризація CS50 вигідна українській ІТ спільноті, але потребує часу
Якщо до нас з Аллою хтось ще доєднається та буде готовий вкладати свій час у модерацію чату тоді створення чату стане можливе

Корисні поради. Дякую, що ділишся своїм досвідом, це надихає. Розумію тепер, що точно почну цей курс через місяць не раніше, бо якраз зараз маю велике навантаження і твої поради дуже актуальні і практичні.

Дуже розумно розподілити навантаження, щоб навчатись ефективніше. Рада, що ти теж вирішила долучитись!

в перший раз мені важно давався цей курс і я закинув)) це ще був самий перший набів дуже багато років назад на edX
і ще неодноразово я закидував різні курси бо не тягнув... але потім повертався і закінчував їх)
тому якщо щось не виходить, то не варто сильно розчаровуватись, бо завжди можна почати спочатку 😉

Цікаво, яка причина того, що ви припиняли навчання? І ще цікаво, чому повернулись? Буду вдячна за відповіді🤗

На своєму досвіді скажу, що єдиний курс, який я не довела до кінця був по маркетингу. Просто зрозуміла, що це не моє, важко не було — на початковому етапі стало нудно. Але ще зрозуміла, що до нього я точно не повернусь.🙂

все доволі типово — важко йшло навчання, здавалось що я тупіший за інших і руки опускались
але мені було дуже цікаво, то ж я собі казав що я так легко не здамся )))
як рок лі або голден бой 💪😁

Якщо вступ такий важкий, що ж далі буде?

Бувають же моменти коли студенти застрягають на простих темах, таке ж й у іграх

Чому одразу «такий важкий»? Скоріше, деякі моменти можуть складніше сприйматись, але з іншого боку — таке є на будь-якому навчанні. Не лише на курсі, який розрахований на «людей, які ледве розуміють, що таке програмування» (цитую попередній коментар)

Більш правильна назва «Як підвищити ефективність засвоєння матеріалу на прикладі CS50.» Сам по собі курс розрахований на людей які ледве розуміють, що таке програмування...

Отже, я зробила універсальну статтю під різні освітні програми на прикладі CS50. Не погано, як на мене, із завданням впоралась

Що робити, що робити — або зціпити зуби і продовжити, нехай після достатньої для відпочинку перерви, або забити і визнати що айті це не твоє.

Вивчав сліпий набір українською вдвічі довше, ніж було спрогнозовано в описі до програми. Зате потім за декілька тижнів пройшов англійську. А польська додалася «сама». Була ще одна мова, котра додалася «сама», але 24.02.2022 різко вивітрилася з голови разом з розкладкою клавіатури на всіх моїх девайсах.

Курс Python теж йшов з перервами. Але головне що дійшов до завершення.

Ваш досвід показовий, ви впорались, а отже обрали сильну сторону. У мене з тією мовою досвід точно такий самий.

Просто сказати «не здавайся і йди далі» — не достатньо для більшості тих, хто обрав CS50 чи будь-яке інше навчання. Зрозуміло, що найпростіше прийняти слабку сторону і під час навчання цей вибір зробити легше.

Втім, як показує практика — відпочинок та розвантаження себе для більшої ефективності працює найкраще

Окрема подяка що написано без води.

Дякую за поради! я підкреслила для себе багато корисного

Рада, що це виявилось корисно!

У курсу CS50 є сторінка FAQs, в кінці якої є графіки для розуміння складності кожного тижня

О, це я пропустила в статті, дякую!

З радістю ділюсь інформацією, що мені доступна і буду продовжувати це робити.

Дякую, вкладати в українське ІТ популяризуючи якісні матеріали, й це без комерційного досвіду розробки, то сильно

Місія важлива, це і мені корисно. Ну, і не зовсім без комерційного досвіду. Маю один проект на позиції Front-end розробника, де створювала сайт для київської компанії. Тому зовсім невеликий, але є.

Підписатись на коментарі