CS50: відгуки про курси та пошук напарників для спільного навчання

Привіт! CS50 — це найвідоміший курс з програмування, розрахований на початківців. CS50 викладається в Гарварді, Єлі та Оксфорді й доступний безкоштовно на офіційному сайті: cs50.harvard.edu/x.

На форумі DOU я вже детально розписав про CS50, а також перепублікував інструкцію, як записатися на курс та здобути безкоштовний сертифікат.

На Reddit є офіційна англомовна спільнота reddit.com/r/cs50, де можна знайти відгуки про курси та пошукати напарників для спільного навчання.

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

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

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному4
LinkedIn

6 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Коли я завершив цей коментар, то зрозумів, що він тягне на окрему статтю і тут би не завадив TL;DR, але най вже буде так...

Як раз починаю проходити, бо мені потрібен той сертифікат для «особистих» потреб. Заб’ємось, що я дропну той курс за 2 — 3 тижні?
Добре, жарти геть (хіба трошки залишимо), і спробую додати конструктиву.

CS50 — це найвідоміший курс з програмування

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

Я знаю, що це може звучати трохи заплутано, то ж спробую пояснити «на пальцях».
Припустимо, викладають в універі курс з назвою «Теорія виробництва дерев’яних ділдо», де професор файно розповідає які породи дерева, які станки, які різаки тощо. А є бурса, де розповідають про «Виробництво дерев’яних х..ів», і майстер каже: «Оцю породу треба брати різаком № 5, якщо нема під рукою — обережно працюй 3-м».
Через умовний проміжок часу, студент першого знає усі можливі різаки та форми, які можна вистругати; студент другого — вже n-часу працює на ОАО «Vector DildoLux», та може ті самі хоч з зав’язаними очима робити, а за потреби — ножем із гуми виріже.

Я скажу тільки одне: «Столяр — цей той, хто вміє зробити табурет; а не той, хой знає назву усіх інструментів».

якщо ви пройшли частину CS50, що спростило проходження інших ...курсів

Тут я би перепитав про «спростило», бо я бачу мінімум 2 значення для цього слова у цьому контексті.
Якщо «матеріал було легше засвоїти» — то, звісно спростить; я казав і буду казати: «Будь-яка підготовка: свідома чи ні, гарна чи погана, — ліпша ніж ніякої».
Якщо «витратити 150 (а то і 300 — 500) годин, щоб заощадити 20-ть» — ну таке.

знижки на ваші курси випускникам, які здобули сертифікат CS50

++ То хоч б якийсь фільтр був.
Я тільки за, бо за «зеленою купюрою» на курси стільки профнепридатних йде.
Кажу як екс-викладач вітчизняних IT-курсів.

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

Як раз нещодавно мені на очі потрапив цікавий ролик, де аналізували роботу рекрутерів.
На жаль, швидко посилання не знайшов, якщо не забуду та не заб’ю — додам згодом.
Суть такова: рекрутери витрачають на розгляд резюме ~10-ть секунд, і на сертифікати не дивляться взагалі.
ATS може відхиляти заявки від HR-школи, але не особисті листи, подання через сайт компанії, чи реферали. Тому усі ці «випускникам Рога та Копита не турбувати» — дещо перебільшені; хіба що кандидат буде кожні 2 хвилини повторювати, що він закінчив саме цей IT-курс; але тут проблема не в курсі, а банально в софт-скілах.

якщо сертифікат CS50 буде визнаватися українськими ІТ-компаніями

Що значить буде?
Я жодного не чув (та й уявити мені таке важко) щоб рекрутер або тех-лід не визнавали дійсним сертифікат від будь-яких курсів. Якщо мова про «надати перевагу» — я буквально абзацом вище сказав про сертифікати та загальне до них ставлення.

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

Тобто потрібен винятково сертифікат для ’особистих’ потреб, але знання основ ’комп’ютерних наук’? Як тоді працювати Software Engineer без розуміння фундаментальних базових речей, на яких цей цей самий ’софтвер’ і будується? Це вже не інженерія, а тупо кодинг. Манкі-кодинг, можливо навіть і гівно-кодинг, в окремих печальних випадках

Припустимо, викладають в універі курс з назвою «Теорія виробництва дерев’яних ділдо», де професор файно розповідає які породи дерева, які станки, які різаки тощо.

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

А є бурса, де розповідають про «Виробництво дерев’яних х..ів», і майстер каже: «Оцю породу треба брати різаком № 5, якщо нема під рукою — обережно працюй 3-м».

... і коли раптом трапляється порода чи різак, який майстер не показав, чи не розповів,і #2 починає чесати ріпу, і довго і нудно самому шукати і розбиратися, а як його тепер робити, бо якщо він дупля не ріже, чому оцю ’породу треба було брати різаком № 5′, то звідки ж йому розуміти, чому іншу треба № 4? А може і № 3, а може і теж № 5, але трохи по-іншому, але щоб це знати, і треба усвідомлення ’як’.
Тому (на мою думку)

скажу тільки одне: «Столяр — цей той, хто вміє зробити табурет; а не той, хой знає назву усіх інструментів».

власне ключове тут не ’це той, хто вміє зробити табурет’, а чому саме ’це той, хто вміє зробити табурет’ - бо він усвідомлює як саме, яким чином застосувати певні знання, техніки, інструменти і т.д. для цього; чи просто їх застосовує, без розуміння — по гайду, чи по завченому прикладу, чи бо так ментор сказав чи ChatGPT написав. Це і визначає інженера.

Я тільки за, бо за «зеленою купюрою» на курси стільки профнепридатних йде.

Проблема тут радше в тому, хто виходить. Випускники з красивими проектами в гіті але дуже поверховими знаннями, які потім сипляться на звичайному фізбазі, або результатах простої NOT-XOR функції.

потрібен винятково сертифікат для ’особистих’ потреб, але знання основ ’комп’ютерних наук’?

На жаль, я геть не розумію про що тут мова.

Це вже не інженерія, а тупо кодинг.

Я ж сказав вище, що для нас ці два поняття доволі тісно переплетені.
Надалі, щоб уникнути плутанини, я буду використовувати просто «програмування».

... розуміння фундаментальних базових речей

Усе програмування стоїть на двох китах — структури даних та алгоритми.
Припустимо, я знаю на зубок та розумію усі (що вже завдання з зірочкою), а ще до купи усі паттерни проєктування (з двома зірочками).
Далі шо? Як зробити клятє сортування «бульбашкою» з цима знаннями? Чи хоба вже «hello world» най йому грець?

Тільки це і розповідають не для того, щоб тупо завчити...

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

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

Ви знецінюєте наших майстрів (жартівливо посміхаюсь). Окремі з них шарять не гірше викладачів усяких вишів.
Емпіричним методом можна спостерігати що «оцей» не ріже, а «цей» глибоко бере. І якщо у людини інтелект хоча б як у хлібця, якось зможе співставити 2 і 2.
От я, наприклад зараз доволі погано пам’ятаю матеріалознавство, але я навіть у дошкільному віці знав, що точити ножа крейдою — провальний задум.

він усвідомлює як саме, яким чином застосувати певні знання, техніки, інструменти і т.д. для цього...

Мабуть, я перемудрив з метафорами.
Коли я казав про «реальні дерев’яні вироби», я мав на увазі реальний досвід.
Як дев написав 33 сайти, з 34-м він впорається. Навіть з іншими бібліотеками, на іншому фреймворку, іншою мовою програмування тощо.

Проблема тут радше в тому, хто виходить.

Рівно ті, хто заходив. IT-школа «ВайтіВАйТі» не Гоґвортс, щоб змінювати людей за півроку.
Хто прийшов навчатись — здобуває; хто прийшов «я зараз заплачу $nK, і потім буду...» — з тією ж думкою йде.

1/ та це я написав до того, як глянув Лінкедін, не зважайте
2/ для ’нас’ - для кого? У кожного своє уявлення, як на мене, то програмування чи власне кодинг — це лише складова SE. Так само як власне тестування саме по собі частина QA E, будівництво мосту складова інженерії мостів, складання двигуна для літака складова авійаційної інженерії і т.д. Можливо, для людей поза індустрією чи початківців це і можна спростити і об’єднати до ’програмування’, але з часом і ростом досвіду різниця все більш зрозуміла стане і для них
3/ Теорія без практики звісно ж нічого не варта, це очевидно. Щоб зрозуміти чи осягнути деякі речі, може знадобитися як мінімум не менше практики з ними. Тому, якщо Ви пишите ’та розумію’, то цього неможливо було досягнути без практики. Тоді і ’як зробити клятє сортування «бульбашкою» з цима знаннями’ не повинно бути проблемою, навіть на псевдокоді — це вже проблема вважай вирішена, бо подальша реалізація цього на специфічній мові потребуватиме значно менше зусиль і знань.

до речі, про bubble sort та інші стандартні питання, які деколи дратують на співбесідах: хто працює з python, то одним з таких є задачі на list comprhention. Колись я ставився до того скептично, та для чого його взагалі питати і знати, тим більше для AQA? Аж поки не довелося працювати на проекті, де треба було з кілометрових excpected i actual JSON-ів витягувати дані з вкладених конструкцій типу ’дікт з елементами типу ліст діктів з елементами у вигляді ліста лістів’. І коли є розуміння list comprhention, це виявилось значно легше робити, ніж без нього

4/ Цілком можливо, що не тільки для старту, але і протягом ще якогось періоду роботи, але щойно почнуться речі трохи глибші, складніші, або проект сам по собі буде з якоїсь складнішої предметної області — і вже можуть початися проблеми, і вже доведеться повертатись до фундаментальних базових речей, і тоді потрібне в ідеалі стане потрібним прямо тут, в реалі.
Та навіть і на старті — є винятки, але в загальному буде важче, довше і складніше, як їм, так і їх менторам та тіммейтам — з свого досвіду співпраці з джунами-світчерами або випускниками непрофільних ВО, різниця все ж дається взнаки.
5/ А ще можна спробувати і зіпсувати заготовку, або зіпсувати інструмент, або через неправильний підхід/технологію 90% матеріалу пропаде, хоча мало б не більше 50%
Маючи однак більшу базу знань і логічне мислення, ніж щоб ’якось зможе співставити 2 і 2.’, можна більшість з цього уникнути. А якщо є можливість це здобути, то нехтувати цим тільки для того, щоб пошвидше дуже поверхово чогось навчитися і аби тільки дорватись до роботи — хороша ідея до пори до часу, поки ця сама відсутність не вилазить боком.
6/ Ну, після 33-ох сайтів очевидно що це буде інший досвід, ніж після 10-и.
Але ключове тут власне ’як’ - як знає і вміє, так і напише. І якщо 34 буде в загальному такий же як і попередні 33, то так — навіть без глибоких фундаментальних знань, ’з іншими бібліотеками, на іншому фреймворку, іншою мовою програмування’ напише без проблем. Але щойно там буде якийсь нюанс і нема розуміння цього — то вже може й не напише. Або це буде щось таке проблемне, повільне, підперте костилями щоб хоч якось трималося купи.

для ’нас’ - для кого?

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

з часом і ростом досвіду різниця все більш зрозуміла

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

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

От без вивчення конкретної мови, я хіба що псевдокодом те і зроблю.

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

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

з свого досвіду співпраці з джунами-світчерами або випускниками непрофільних ВО

Це ж доволі очевидно, бо нікого з них не навчали 4+ роки :-)
Але у цьому розрізі і CS50 виглядає не дуже привабливо.

Тут легше буде сказати, бажаєш отримати якісну на повну освіту — то йди до профільного ВНЗ, наприклад до Гарварда.

А ще можна спробувати і зіпсувати заготовку, або зіпсувати інструмент

Не зіпсує.
Кожен майстер вміє зробити пробу пера у безпечних та контрольованих умовах.

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

Через неправильний підхід/технологію 90% матеріалу пропаде, хоча мало б не більше 50%

Не вміючи працювати з конкретним інструментом всезнайка зробить ще гірше.
А в контексті програмування це взагалі буде питання до архітектора ПЗ.
І тут доречі пропоную замислитись, чому 9 з 10 архітектів мають 10+ років практики, але не обов’язкого мають диплом профільного виша.

Але щойно там буде якийсь нюанс і нема розуміння цього...

Ньюанс сам по собі вимикає «фундаментальність».
Чим глибше ми йдемо в конкретну мову, домен, бібліотеку тощо — тим далі ми від тих самих загальних фундаментальних істин.

Привіт! Я успішно пройшов курс CS50’s Introduction to Programming with Python і продовжую навчання в напрямку NLP Engineer. Маю сильну мотивацію та готовність розвиватися далі.

Планую до кінця року отримати роботу в цій сфері або суміжних напрямках, які дозволять здобути цінний досвід. Відкритий до позицій Intern або Trainee.

Рівень англійської — A2, але я активно вдосконалюю її. Також маю відстрочку.

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