Цель заброшена
Автор не отписывался в цели 7 лет 4 месяца 9 дней
курс CS50 “Основи програмування” від Гарвардського університету на Prometheus
ПРО ЦЕЙ КУРС
Якщо ви давно мріяли навчитися програмувати – цей курс створений саме для вас! Курс CS50 Гарвардського університету вважається найкращим курсом з основ програмування в світі і відтепер він буде доступний українською мовою. Про його легендарний статус свідчить те, що в 2015 році Єльський університет відмовився від власного вступного курсу програмування для першокурсників на користь використання курсу CS50 в своєму навчальному процесі! Станом на 2015 рік офлайн версія CS50 також є найпопулярнішим курсом за вибором в Гарвардському університеті.
Курс розрахований як на повних новачків, так і на тих слухачів, хто вже має невеликий стартовий досвід в програмуванні.
Одночасно із онлайн-курсом будуть відкриті безкоштовні групи офлайн-підготовки в провідних університетах та компаніях України, на яких ментори будуть допомагати слухачам з проходженням CS50. Через значний ажіотаж, спричинений відкриттям груп офлайн-підготовки в провідних університетах та компаніях України, на яких ментори будуть допомагати слухачам з проходженням CS50, командою Prometheus упродовж надзвичайно короткого часу було організовано додаткові безкоштовні офлайн-групи для максимального задоволення зацікавленості слухачів. Сьогодні ми відкриваємо реєстрацію на ці додаткові офлайн-групи підготовки за цим посиланням! Просимо Вас не реєструватися у новій анкеті, якщо Ви вже отримали лист-запрошення на раніше анонсовані групи офлайн-підготовки. Право остаточного відбору слухачів офлайн-груп лишається за організаторами цих груп, які надішлють спеціальний лист-запрошення кожному слухачу, який пройде відбір.
Зверніть увагу! Курс CS50 можна проходити як виключно онлайн, так і в офлайн-групі на базі онлайн-курсу. Обидва варіанти є абсолютно повноцінним навчанням, тому навіть якщо Ви не потрапите до офлайн-групи, обов’язково пройдіть курс онлайн!
ПРОГРАМА КУРСУ
Курс навчить вас:
- Широкому і ґрунтовному розумінню інформатики та програмування.
- Як мислити алгоритмічно та ефективно вирішувати проблеми за допомогою програмування.
- Таким концепціям як абстракція, алгоритм, структури даних, інкапсуляція, управління пам’яттю, основи комп’ютерної безпеки, розробка програмного забезпечення і web-розробка.
- Основам відразу декількох мов програмування, зокрема, C, PHP і JavaScript, а також технологіям SQL, CSS і HTML.
- Познайомить з процесом розробки і презентації власного проекту з програмування.
Практичні завдання курсу базуються на реальних кейсах зі сфер біології, криптографії, фінансів, судово-медичної експертизи та розробки ігор.
Оригінал курсу - CS50 "Introduction to Computer Science" під ліцензією Creative Commons доступний англійською мовою на сайті http://cs50.tv.
Відео для курсу озвучені командою "Лампова наука" за підтримки "Львівської ІТ Школи" та SoftServe.
ЛІЦЕНЗІЯ
Даний курс розповсюджується за відкритою ліцензією Creative Commons. Авторство курсу належить проф. Девіду Малану та університету Гарварда. Українська версія курсу відповідає оригінальній версії 2014 року, яка була розміщена на платформі edX протягом 2015 року. Зміни, які були внесені у локалізовану версію, не є значними і стосуються текстового та графічного оформлення матеріалу.
ПОЧАТОК КУРСУ
Квітень 2016 року
ТРИВАЛІСТЬ КУРСУ
12 тижнів
ВИКЛАДАЧ КУРСУ
Девід Дж. Малан
Професор Гарвардського університету. Наукові інтереси професора Малана – сфера кібербезпеки, цифрові експертизи та ботнети. Він визнаний експерт у сфері дистанційного навчання інформатиці та основам програмування.
АСИСТЕНТ
Олексій Молчановський
Співзасновник платформи Prometheus. В минулому викладач Київського Політехнічного Інституту, де викладав курси "Дискретна математика", "Теорія алгоритмів", "Штучний інтелект".
Поширені запитання
Курс безкоштовний?
Курс є повністю безкоштовним. Викладач може рекомендувати навчальну літературу, щоб Ви могли глибше вивчити ту чи іншу тему, але доступних у межах курсу матеріалів буде достатньо для успішного його закінчення. Все що Вам знадобиться,– доступ до мережі інтернет на швидкості, достатній для перегляду відеолекцій.
Чи зможу я отримати сертифікат після завершення цього курсу?
Так! Успішно виконайте усі завдання курсу й отримайте сертифікат Prometheus про його закінчення! Для того, щоб отримати сертифікат Гарвардського університету вам доведеться пройти курс-оригінал на платформі eDX.
У який час будуть проходити заняття?
Відеолекції, завдання та форум будуть доступні в будь-який час, в тому числі після завершення курсу.
Критерий завершения
отримано сертифікат Prometheus про його закінчення
-
0 тиждень
Про курс
Даний курс є українською локалізованою версією курсу CS50 Introduction to Computer Science Гарвардського університету, який викладався професором Девідом Маланом студентам цього університету в осінньому семестрі 2014 навчального року і був доступний в якості масового онлайн-курсу на платформі edX протягом 2015 року.
Корисні посилання
- Офіційний сайт курсу - cs50.harvard.edu
- Курс CS50 на платформі edX
Локалізація курсу українською мовою стала можливою за підтримки компаній Lviv IT School та SoftServe. Озвучування відео здійснено командою "Лампова наука".
Вітаємо вас на відкритті курсу CS50 “Основи програмування” від Гарвардського університету!
Сподіваємось, що для вас це буде справді захоплива подорож у мистецтво програмування. В цьому курсі ви познайомитесь з мовами Scratch, C, PHP, Javascript, HTML. Звичайно, неможливо за 12 тижнів (а саме стільки триває наш курс) опанувати згадані технології на професійному рівні, але ви точно зможете зрозуміти що таке програмування, побачити типові задачі, з якими мають справу професійні програмісти, та відчути, чи близька вам ця тема і чи ви хочете займатись цим напрямком у майбутньому. CS50 — це справді гарний спосіб спробувати себе у програмуванні!
Перед тим, як ви почнете переглядати перші лекції, ми наполегливо просимо вас ознайомитись з деякими текстами, які покликані ввести вас у курс справ. Перечитайте фрагменти розділу “Про курс”, в яких ви зможете дізнатись про навігацію на платформі Prometheus, про структуру курсу CS50 та критерії отримання сертифікату. Дуже важливим є розуміння Кодексу честі на цьому курсі і ми сподіваємось, ви будете його дотримуватись протягом всього навчання. Окремо зупиніться, будь ласка, на 5 порадах, які ми спеціально виокремили для вас, аби ваше навчання на курсі було більш успішним. Наостанок просимо вас заглянути в розділ “Подяки” - там згадані всі люди, які долучились до локалізації матеріалів курсу українською мовою — без їх допомоги цей курс на платформі Prometheus точно би не відбувся.
Отже, тепер можна перейти до самого матеріалу першого, а точніше нульового (скоро ви, як справжні програмісти, почнете також рахувати з нуля) тижня нашого курсу. На цьому тижні професор Девід Малан разом зі своїми асистентами пояснить нам що таке є алгоритмічне мислення та, власне, алгоритм. Ми вивчимо трохи двійкову систему, адже нулики та одинички - це єдина мова, яку розуміють комп’ютери.
В другій лекції тижня ми познайомимось з мовою візуального програмування. І хоча Scratch від самого початку створювалась для дітей, вона стала дуже популярною і в університетах, адже дозволяє легко пояснити та опанувати базові принципи програмування: умовні оператори, цикли, потоки, змінні тощо.
На цьому тижні ми пропонуємо вам виконати практичне завдання, яке буде полягати у створенні власного проекту на Scratch. І хоча оцінка з цього завдання не впливає на отримання сертифікату, вам буде дуже важливо виконати його — так ви зможете дійсно відчути що воно таке - це “алгоритмічне мислення”.
Долучайтесь до обговорення на форумі курсу, ставте свої питання та допомагайте іншим!
Цей курс було локалізовано для вас українською мовою командою Prometheus за участі десятків волонтерів та за підтримки компаній LITS та SoftServe.
Це — CS50@Prometheus!
З повагою,
команда Prometheus.-
Про курс
-
Лекція 0-1
-
Лекція 0-2
-
Путівник по Scratch
-
Завдання 0
-
1 тиждень
Вітаємо вас на тижні №1 курсу з "Основ програмування CS50"!
Разом з Девідом Маланом та студентами Гарварду ми переходимо до вивчення мови програмування C. Можливо, не буде помилкою сказати, що це найбільш (або одна з найбільш) уживана мова програмування усіх часів та народів! І хоча в останні роки вона втратила свої позиції, ця мова лишається прекрасним інструментом, з якого варто почати своє знайомство з програмуванням.
Окрім типових конструкцій, які притаманні будь-яким мовам програмування (умовні оператори, цикли, функції, змінні тощо), мова C працює на пряму з пам’яттю комп’ютера (те, що, наприклад, вам майже неможливо буде зробити у Java чи Python). І таким чином це дозволяє дуже добре відчути, як поводять себе ваші програми після того, як ви їх написали та запустили на виконання операційною системою, зрозуміти всіх ризики неправильного написання програм. Мабуть краще це зміг би пояснити лише Асемблер, але мова зараз не про нього. І, до речі, на форумі курсу ви зможете прочитати аргументи Девіда Малана про те, чому саме для навчання на CS50 обрана мова C.
Отже, ми починаємо знайомитись з C. На цьому тижні Ви познайомитесь з базовими елементами мови, дізнаєтесь як виглядають блоки програм, які ви вже знаєте зі Scretch, у мові C. І напишете кілька своїх перших програм, серед яких славнозвісна “Hello, world!” - перша програма мільйонів програмістів по всьому світу.
Важливим інструментом курсу CS50 є віртуальна лабораторія “CS50 Appliance”. Це віртуальна машина, яку ви можете встановити в себе на комп’ютер або можете отримати доступ до неї онлайн. Ця віртуальна лабораторія містить все необхідне для подальшого навчання на курсі: компілятор C, необхідні сторонні бібліотеки (зокрема важливу бібліотеку cs50.h, яка була створена спеціально для цілей цього курсу), програми для перевірки коду на коректність та, навіть, дотримання певного стилю. Про те, як встановити і працювати у віртуальній лабораторії, ви можете прочитати на відповідних сторінках курсу.
Також на цьому тижні ви отримаєте свої перші практичні завдання, які будуть оцінюватись і входити у загальний бал на курсі. Читайте уважно завдання та інструкції. Зверніть увагу, ви повинні будете зрештою завантажити код ваших програм для перевірки на нашому сайті. Але перед тим, ви зможете перевірити чи повністю працює ваша програма абсолютно незалежно та не витрачати для цього дорогоцінні спроби офіційної перевірки (кількість яких є обмеженою). Все це описано на сторінках розділів курсу — не пропустіть важливої інформації!
Як завжди, для ваших послуг наш форум. Ви зможете отримати там допомогу від наших асистентів або своїх колег по курсу. Втім, наголошуємо на дотриманні правил кодексу честі і просимо не розміщувати правильні або майже правильні розв’язки на сторінках форуму — такі повідомлення будуть нами видалятись.
Даний курс був підготовлений командою Prometheus за підтримки компаній LITS та SoftServe.
З повагою,
команда Prometheus. -
2 тиждень
Вітаємо!
Переходимо до тижня №2 курсу “Основи програмування CS50”. Цей тиждень буде не менш насиченим за матеріалами, ніж попередній. Ми почнемо з того, що познайомимось з тими, кого найменше люблять будь-які програмісти, - “баги”. Це помилки у ваших програмах, які, на жаль, часто досить складно помітити - такі вони маленькі! Але хай навіть вони такі дрібні (як, наприклад, відсутня дужка чи крапка з комою), але кожен баг може зробити вашу програму повністю недієздатною.
Далі ми перейдемо до функцій. Функції у програмуванні — це також надважливий елемент, який дозволяє “повторне використання коду”: замість того, щоб ще раз і ще раз писати один й той самий фрагмент коду в різних місцях програми, ви можете його огорнути у функцію і таким чином зробити власний код набагато більш зручним та кращим для розуміння.
Наступне, з чим ми познайомимося цього тижня, - це типізація даних. В мові програмування C існує кілька типів, для представлення різних даних: символьні типи, числові типи (цілі, дійсні), типи для символьних рядків. Це важлива особливість мови, за якою також варто постійно уважно слідкувати (наприклад, у мовах PHP чи Python використовується слабка типізація, коли ви не повинні явно вказувати тип ваших змінних). Також ми почнемо вивчати масиви - перший складний тип даних, який дозволяє групувати кілька змінних одного типу в певну структуру в пам’яті комп’ютера.
В якості практичного завдання цього тижня ми розглянемо задачу криптографії. Так, вже на третьому тижні курсу з Основ програмування ви навчитесь кодувати та декодувати інформацію так, щоб інші люди не змогли її переглянути, якщо не знають таємного ключа.
Будьте уважні до виконання практичних завдань! Як показала практика попереднього тижня, відправлення рішень для практичних завдань на перевірку може спричиняти певні складнощі. Тому, по-перше, ми просимо вас відправляти завдання, які ви вже перевірили локально у власному віртуальному оточенні CS50 (або у онлайн віртуальній лабораторії на http://cs50.io) за допомогою програми check50 (як саме перевіряти завдання, описано для кожного завдання окремо). По-друге, ми перенаправляємо ваші завдання на перевірку на гарвардський сайт CS50, тому не можемо впливати на його роботу. Тож, якщо ви отримуєте помилки про недоступність сайту або тимчасову неможливість виконати вашу програму, не втрачайте надію — просто зробіть паузу та відправте ваше завдання повторно через 1-2 години. Для цього ми надали велику кількість спроб для кожного завдання.
Як завжди, звертайтесь на форум в разі виникнення запитань.
З повагою,
команда Prometheus. -
3 тиждень
Вітаємо вас на тижні №3 курсу Основи програмування CS50!
На цьому тижні ми не будемо надто сильно занурюватись у нові конструкції мови програмування C (з більшістю важливих її елементів — типами змінних, масивами, умовними операторами, циклами та функціями — ви вже познайомились!). Натомість разом з професором Девідом Маланом та його асистентами і студентами ми перейдемо до опанування алгоритмічного мислення.
Між іншим, якщо ви ще не встигли приєднатись до нашого курсу, то можете зробити це в будь-який момент: курс не має обмежень за часом і виконання будь-яких завдань також не обмежується жодними “дедлайнами”. Тому, якщо ви з різних причин не змогли приєднатись дотепер, то самий раз розпочати знайомство з програмуванням!
Так ось, мабуть, буде правильно сказати, що програміст, який вміє програмувати, але не знає алгоритмів та має навичок алгоритмічного мислення, - це дуже дивний програміст. Тож на лекціях цього тижня будуть розглянуті декілька алгоритмів сортування. Чому саме сортування? Ця задача, по-перше, легко формулюється та описується (заданий масив елементів — потрібно відсортувати їх, наприклад, у порядку зростання). По-друге, сортуванням постійно послуговуються при роботі над реальними задачами в програмуванні. Але не дивлячись на свою простоту та поширеність, у цієї задачі є дуже багато розв’язків і, як наслідок, - багато різноманітних алгоритмів, які відрізняються підходами та ефективністю: сортування бульбашкою, сортування включенням, злиттям, вибором, швидке сортування тощо.
До речі, про ефективність. Неможливо говорити про алгоритми і не говорити про критерії їх ефективності. Дійсно, якщо для вирішення однієї задачі ми маємо два алгоритми, то як оцінити який з них кращий, за якими критеріями? Для цього ми поговоримо про такі поняття як складність алгоритмів, час виконання алгоритмів та почнемо використовувати “асимптотичні позначення” (терміни досить математичні за своєю природою, але, насправді, дуже прості за наповненням).
Практичне завдання цього тижня буде не так складним з точки зору формальної перевірки (щоб здати його достатньо написати 3 рядка коду — правда-правда!), як більш розвиваючим. Як вже зазначалось, гарний програміст вміє писати алгоритми, вміє алгоритмічно мислити. Також добрий програміст повинен вміти читати та розуміти програмний код, написаний іншими людьми (добре, коли цей код гарно документований та оформлений у відповідності до стилю). Тому на цьому тижні вам буде наданий для виконання вже майже готовий програмний проект, який буде складатись з кількох файлів. І вам доведеться розібратись у взаємодії цих файлів, а також зрозуміти, що кожний з них робить і за що відповідає.
Бажаємо успіхів!
-
4 тиждень
Вітаємо вас на четвертому тижні курсу “Основи програмування CS50”!
Цей тиждень насичений новим та дуже цікавим матеріалом. У першій лекції ми завершимо розглядати алгоритми сортування та познайомимось з “найкращим другом” програміста — дебагером (debugger). Це спеціальні інструменти, які дозволяють подивитись всередину вашої програми: запустити програму покроково, прослідкувати вміст змінних та ділянок пам’яті, перевірити як викликаються функції. Вміння користуватись дебагером, особливо для мови програмування C, є ключовим для ефективної розробки програмного забезпечення. Дебагер може зекономити вам купу часу, особливо у великих проектах.
Іншим важливим елементом цього тижня стане знайомство з тим, як побудована робота з пам’яттю у мові C. Ми дізнаємось, що таке вказівники (pointers), чим насправді є масиви та символьні рядки (string). Можна впевнено говорити, що робота з пам’яттю — це одна з найбільш потужних можливостей мови С. Але так само — найбільш небезпечна. Маючи прямий доступ до пам’яті, ви (або інша людина, наприклад, зловмисник) може достукатись до пам’яті не тільки власної програми, але й всього комп’ютера (відповідно, і до інших програм). Власне, в першій лекції ми познайомимось з однією вразливістю — ShellShock, щоб продемонструвати всю небезпеку некоректної роботи з пам’яттю.
В тих мовах програмування, які найбільш поширені зараз на ринку — Java, C#, Python, Javascript — програмісти не можуть працювати напряму з пам’яттю. Тому, коли ви будете переходити на ці мови, перед вами не будуть стояти ті проблеми, які виникають у C (ручне виділення пам’яті, її вивільнення тощо). Але розуміння того, що знаходиться “під капотом” ваших програм — інша важлива характеристика, яка відрізняє програміста початківця від професіонала.
Щодо практичних завдань цього тижня, то вам буде запропоновано зробити власну комп’ютерну гру! Ми напишемо гру, яку колись зробили Стів Джобс та Стів Возняк на замовлення компанії Atari. Впевнені, що багато хто з вас колись грався у щось подібне. Програмування цієї гри дозволить вам познайомитись із розробкою графічного інтерфейсу користувача (сюди відносяться всі віконні інтерфейси сучасних операційних систем). З іншого боку, провести автоматичну перевірку функціонування графічного інтерфейсу та динаміки гри досить складно, тому це завдання не буде проходити оцінювання та зараховуватись до загального балу за курс. Але ми все-одно запрошуємо вас спробувати зробити його. Адже цей курс не про кінцеві бали, а про отримані знання, чи не так? ;)
Зверніть увагу на важливий момент. Можливість програмувати графічний інтерфейс доступна лише у локальній версії віртуальної машини. Тому, на жаль, ті з вас, хто дотепер користувався онлайн версією віртуальної машини і захочуть зробити гру, змушені будуть все-одно встановити локальну лабораторію. Будь ласка, зверніться до інструкцій зі встановлення віртуальної лабораторії.
Бажаємо успіхів!
-
5 тиждень
Вітаємо вас на п’ятому тижні курсу!
На цьому тижні ми продовжимо вчитись працювати з пам’яттю у мові C. Бінкі нам, нарешті, розповість про роботу з вказівниками (pointers). Ми подивимось з чого складається робоча пам’ять в операційній системі, дізнаємось чим відрізняються області пам’яті стек та купа, що таке проблема переповнення буферу та познайомимось з іншим важливим інструментом — valgrind, який дозволяє слідкувати, чи ми правильно опікуємось пам’яттю в нашій програмі, чи звільняємо всю надану нам пам’ять і чи не вилазимо у недозволені зони. Пам’ятаймо, що мова C відрізняється потужною роботою з пам’яттю комп’ютера, за яку, на жаль, треба платити високу ціну — вашою 100% уважністю.
Також на цьому тижні ми почнемо вивчати цікаві структури даних, а саме — зв’язні списки. Знайомі нам масиви добрі тим, що дозволяють отримувати доступ до елементів майже миттєво — за один крок, якщо ви знаєте індекс потрібного елемента. Але у масив вкрай складно додавати нові елементи. Іншою структурою даних, яка дозволяє легко додавати та видаляти елементи, є зв’язні списки. Проте, як це типово буває у програмуванні (і не тільки), за одну перевагу треба платити іншою — зв’язні списки позбавлені можливості швидкого доступу до своїх елементів. Про все це у лекціях цього тижня.
У практичному завданні вас чекає цікавезна головоломка. Вам потрібно буде розкрити злочин, шляхом аналізу графічних файлів. Для цього ми застосуємо знання з минулих тижнів про те, як працювати з файлами, як записувати в них дані та зчитувати дані з файлів. Ви не будете писати код з нуля, а натомість будете модифікувати наданий нами код. З іншого боку, це завдання вимагатиме від вас доброго розуміння форматів деяких графічних файлів. Тож, будьте певні, за цей тиждень на практиці ви дізнаєтесь багато чого нового!
Бажаємо успіхів!
-
6 тиждень
Вітаємо вас на шостому тижні курсу “Основи програмування” від Гарвардського університету! Ми вже перетнули “екватор” курсу — позаду багато вивченого матеріалу і можна з впевненістю говорити, що основні ідеї програмування та синтаксичні конструкції мови C були нами вивчені. Невдовзі ми перейдемо до вивчення мов більш високого рівня — PHP, Javascript, HTML, які дозволяють розробляти веб сайти.
На цьому ж тижні ми продовжимо вивчати комплексні структури даних: стеки, черги, хеш-таблиці, дерева та рекурсивні дерева. Будь-який професіональний програміст повинен знати набір структур даних і легко визначати, яку з них краще застосовувати для тієї або іншої задачі. Адже мета згаданих структур одна — представити дані в різний спосіб у пам’яті. І саме конкретна проблема, яку ви вирішуєте, обумовлює чи будете ви використовувати, скажімо, масив, чи список, чи хеш-таблицю.
Щодо практичних занять, то на цьому тижні їх немає — зробіть відпочинок, насолодіться першими літніми сонячними днями! Також це гарна нагода підтягнути ті завдання, на які у вас дотепер не було часу.
З повагою,
команда Prometheus. -
7 тиждень
-
8 тиждень
-
9 тиждень
-
10 тиждень
-
11 тиждень
-
12 тиждень
- 3556
- 09 мая 2016, 20:58
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением