Goal abandoned
The author does not write in the goal 6 years 3 months 8 days
CS50 на русском | Гарвард, Основы программирования
Знаменитый курс
Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.
CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.
Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.
Goal Accomplishment Criteria
Просмотр 22 роликов
-
Вводная лекция | Занятие 0
Знакомство с курсом.
-
Лекция 1
родной язык компьютеров — двоичная система счисления
• ASCII — как записываются символы
• как алгоритмизировать задачи — на живых примерах. Очень живых=)
• почему Дэвид разорвал телефонный справочник или что такое двоичный поиск
• сложность алгоритма — что, как и почему
• о том, что такое циклы, расскажет никто иной, как Марк Цукерберг, основатель Facebook
• …а еще вы увидите его же в 2005 году, в качестве приглашенного гостя CS50. Хм… судя по аудитории, интерес к технологиям вырос в десятки раз! -
Лекция 2
Студенты этого представителя «Лиги плюща» с энтузиазмом приняли гарвардскую команду, и узнали много нового из лекции, а именно:
Что такое алгоритмы. Казалось бы, такое простое понятие, но на самом деле алгоритмизовать даже столь элементарный процесс, как намазывание арахисового масла на тост совсем не просто. Ребята вам это покажут на практике=). Как эффективно посчитать количество людей в аудитории? У нас есть такой алгоритм. Есть такое английское выражение “From Scratch”. Переводится оно как «С самого начала». Но можно также перевести как «Начиная со Scratch», если слово Scratch понимать как специальный учебный язык программирования. Так вот, вас познакомят со Scratch — замечательной разработкой Массачусетского технологического университета и покажут, как писать с её помощью программки.
-
Лекция 3
Язык программирования C. На примере простейшей программы Дэвид растолкует основные конструкции языка, пользуясь аналогиями с изученными на нулевой неделе «пазлами» Scratch; Облачная IDE, в которой мы будем писать программы на C и не только; Вот такие штуки: jharvard@ide50:~/workspace $ make hello. Выглядит как заклинание? К концу лекции станет понятно, что к чему. Это одна из команд Linux. Выучим еще парочку необходимых для запуска приложений из командной строки. И немного интересных фактов о первом программируемом американском компьютере (из тех, что целую комнату занимают), а также о первом обнаруженном баге=).
-
Лекция 4
Гарвардский курс по основам программирования CS50: лекция #4: углубляемся в C и делаем первые задания
В четвертой лекции мы углубимся в язык С и изучим всё необходимое для выполнения первых трех серьезных заданий по программированию. Это циклы, условия, типы данных, переменные и функции.
Задания, к слову весьма разнообразные, совсем не скучные. Выполнив их, вы отточите использование библиотек, ввод/вывод и циклы вместе со знаменитым водопроводчиком Super Mario, посчитаете, сколько воды вы расходуете во время душа и запрограммируете первый относительно серьезный алгоритм для вычисления минимального количества монеток для выдачи сдачи.
Задания не слишком сложные, но требуют от новичков задействовать всё, что было выучено на третьей и четвертой лекции, плюс немного подумать. Смело к работе, а если что-то не получается, задавайте вопросы, мы будем рады помочь=).
-
Лекция 5
- Баги. Без этих верных спутников разработчиков никуда не деться, нужно научиться их выискивать. Дэвид расскажет о некоторых типах багов. Начнет с тех, которые сложнее выцепить: логических;
- Откровение: бесконечный цикл на самом деле не такой уж и бесконечный;
- Функциональная декомпозиция: прием для повышения читаемости кода и удобства кодирования;
- Знай свои фигурные скобки: область действия переменных;
- Объявление функций до реализации: специально для C;
- Строки и как с ними работать;
- Что такое ошибка сегментации;
- Милые щеночки! В стриме. Не пропустите=).
- Как едят шоколадки и M&M’s в Гарварде. Наглядное пособие. -
Лекция 6
Каждый раз, когда вы ловите себя на том, что копируете и вставляете куски кода, спрашивайте себя: а нет ли другого способа? В шестой лекции Гарвардского курса по основам программирования CS50 будет много полезного для нахождения «других способов», но и веселья хватит сполна.
Кстати, её будет вести молодой лектор Роб Боуден. Но Дэвид Малан также вертикально поприсутствует=). Что значит «вертикально»? Узнаете в начале лекции.
Ну а потом начнется серьезная работа:
Роб объяснит, что такое массивы, одномерные и многомерные; • что такое аргументы командной строки, какова их связь с элементами массивов и как их использовать непосредственно в программах; • Немного приоткроет завесу тайны над тем, что такое криптография (но подробнее о шифрах узнаете из дополнительных материалов).
Смотрите лекцию, читайте о шифрах, и… не забывайте решать побольше задач!
-
Лекция 7
Помните разорванный телефонный справочник из самой первой лекции CS50? В седьмой лекции он возвращается! Возвращается, чтобы сделать фразу «эффективность алгоритмов» не пустым звуком, а пояснить на примере. Все программисты думают о скорости работы программы и о том, сколько памяти она при этом «съест». На учебных задачках это не так очевидно, но когда мы работаем с большими массивами данных (как почти везде в «Энтерпрайзе»), эти вопросы становятся первоочередными.
Представьте себе, что данные в телефонном справочнике не отсортированы по алфавиту. Представляете, сколько времени у нас бы ушло на то, чтобы его там найти? С учётом того, что в телефонном справочнике нет человека с таким именем, пришлось бы перебирать все строчки подряд — и всё впустую! Но есть выход: данные всегда можно отсортировать.
И в седьмой лекции Дэвид Малан расскажет об известных алгоритмах сортировки — пузырьковой, вставки и выбора. Эффективны ли они? Подсказка: не слишком, в чем это проявляется — узнаете из лекции. Но почему они в таком случае знамениты и зачем их изучать? Дело в том, что они довольно просты в реализации, а на их основе можно создавать уже более продвинутые алгоритмы сортировки.
А еще, вы услышите, как звучат алгоритмы сортировки. Незабываемая музыка программирования уже доступна в переводе седьмой лекции.
-
Лекция 8
Восьмая лекция Гарвардского курса по основам программирования CS50 пройдет в необычной обстановке: Дэвид Малан окажется в окружении зелёных стен библиотеки Вайднера. И пускай они выглядят не так эффектно, как полюбившийся студентам театр Сандерса (та самая огромная торжественная аудитория, в которой обычно проходят занятия), это никак не повлияло на увлекательность лекции! В этот раз мы:
Узнаем, может ли рекурсия помочь нам в поисках Майка Смита. И вообще, узнаем, что это за загадочный инструмент такой — рекурсия — и как её применять. Разберемся, с понятием сортировки слиянием, и поймем, как можно её реализовать с помощью рекурсии. Снова разделяем и властвуем, уже практически по привычке. Станем на шаг ближе к пониманию загадочного компилятора Clang и его работе. Продолжим разбираться с тем, что находится «под капотом» программы и оценим путь от исходного кода через ассемблерный к объектному. Столкнемся с такими вот знаками: & | ^ ~. Это— не «птичий язык», а побитовые операторы, они позволяют добраться до отдельных битов данных. Для расшифровки каждого из них Дэвид воспользуется весьма необычным инструментом — доской и маркерами! Даже такое «ретро» изредка проскакивает на CS50 =). А еще Дэвид приоткроет завесу тайны: в практическом задании вам предстоит вспомнить детство и поиграть в «пятнашки». Только в этот раз они будут написаны на Си. Наконец, вы увидите милую беседу Эрика Шмидта из Google и одного бывшего сенатора с каким-то знакомым лицом по имени Барак. Эрик попросил Барака предложить самый эффективный способ отсортировать миллион 32-битных целых чисел. Ответ нынешнего президента США вы узнаете из лекции.
-
Лекция 9
Гарвардский курс, основы программирования CS50, лекция 9: обман с помощью программирования, рекурсия, указатели и отладка приложений
Девятая лекция CS50 получилась очень интересной и разнообразной по содержанию. В ней задействованы даже автомобили VW =). Конечно, не непосредственно, но в качестве весьма удачного примера того, как с помощью простых программных команд можно написать сложную программу и обмануть профессиональную комиссию, проверяющую систему контроля выхлопа. Да, руководствуясь некоторыми параметрами приложение может понять, что его подопечную машинку сейчас тестирует и выдаст нужный ревизорам результат.
Примерно так же работает и вредоносное ПО, запуская незаметных «троянских коней» в системы. На занятии Дэвид расскажет общие принципы работы такого ПО, почему, даже досконально изучив код приложения, нельзя быть уверенным в его честности и какова роль «протокомпилляторов» в этом процессе.
Кроме этого:
Дэвид подробнее расскажет о рекурсии и сравнит циклический и рекурсивный алгоритмы для одной и той же задачи. Научит, как менять переменные местами с помощью дополнительного параметра, без него, а также с применением загадочного оператора XOR. Продемонстрирует, как нужно отлаживать программку на примере CS50 IDE. Отладка — полезна, она действительно ускоряет процессы разработки в разы, так что это важное умение и в каждой среде разработки его следует усвоить чтобы повысить собственную продуктивность. • Вы получите ещё немного полезной информации о стеке памяти и локальных переменных. Указатели или как в Си напрямую общаться с памятью! Вот мы дошли и до них. Сила и слабость Си, мощнейший инструмент, который в руках новичка или злоумышленника может превратиться в ядерную бомбу.
-
Лекция 10
Гарвардский курс по основам программирования CS50, 10 лекция, конец 4 недели
В шпионских (или любых других) боевиках, вы, наверное, замечали такую штуку: хакер сидит в темной комнате, весь такой загадочный, подсвеченный монитором своего компьютера и всякими цветными диодами непонятного происхождения. На мониторе — не менее загадочные буковки, обычно зелёные с курсором-нижнее-подчеркивание и малюсенькая карта, на которой где-то в дебрях спрятан интересующий спецслужбы объект. Приходит команда «увеличь этот участок изображения», дабы обнаружить, скажем, номер автомобиля, отражённый в чьем-нибудь глазу… И специалист бесконечно масштабирует картинку, пока отражение не станет ясным и четким…
Вам нравятся такие сцены? Если да, спешим вас огорчить: после 10 лекции CS50 вы уже не будете смотреть их прежними глазами, понимая всю их несуразицу и преувеличение. Впрочем, будущему программисту это необходимо сделать. Это как рано или поздно все узнают правду о Санта Клаусе. С другой стороны, если в мире будет все больше и больше грамотных с точки зрения IT людей, Голливуду придется повысить качество подобных сцен, не лепя случайные наборы терминов куда ни попадя.
А всё дело в том, что фотографии состоят из пикселей (или точек), и когда мы увеличиваем фотографию, рано или поздно мы дойдем до одного пикселя и как бы мы дальше ни увеличивали изображение, дополнительной глубины не появится, перед нами — конечное количество битов. «Это цифра, детка!».
После четвертой лекции вы сможете приступить к задачнику CS50 для четвертой недели. Он позволит вам прикоснуться к миру графики и криминальной экспертизы: вы напишете коды для восстановления утраченных изображений и изменения масштаба картинок.
Итого, из лекции вы узнаете:
Как кодируется изображение. Слово bitmap станет родным и понятным. Вы узнаете, как понять (с точки зрения компьютера), что перед вами именно JPEG-файл и какую роль в этом играет комбинация битов 244 216 255. Вспомните (или изучите) 16-ричные числа. Запись 0хff станет столь же очевидной, как 255 а десятичной системе. Что такое struct в Си? Собственные типы данных в Си. Сравнение содержимого строк в Си (strcmp) и другие средства работы со строками. Адресная арифметика. char* t = malloc((strlen(s) + 1) * sizeof(char)) — как вам такая строчка кода? После лекции вы будете понимать, что к чему, и сами сможете писать нечто подобное =) Немного синтаксического сахара =) Как писать swap с указателями и зачем
Ну и, чтобы расслабиться, напоследок вы посмотрите пластилиновый мультфильм. Не просто мультфильм, но мультфильм про указатели. А если после этого произведения искусства вы только напряжётесь, DJ к вашим услугам.
-
Лекция 11
Гарвард CS50, 11 лекция: перестаем бояться указателей и работаем с памятью
Работа с памятью и указателями, пожалуй, — один из самых сложных моментов CS50. Даже опытные программисты часто ошибаются и заваливают систему из-за утечек памяти, чего уж тут говорить о новичках. Но нам повезло: CS50 — отличный курс, поэтому нам нечего бояться. В 11 лекции мы кое-что изучим, а кое-что повторим вот о чем:
Почему не стоит ждать ничего хорошего от разыменовывания «мусорных» значений или недействующих указателей. • scanf(“%i”, &x) — что значит & в этой записи • char* и string — что между ними общего? • Как правильно выделять память, чтобы не было ошибки сегментации • Изучаем работу с памятью на примере функций библиотеки CS50 и… постепенно отказываемся от неё, как от ходунков. • Valgrind – мощный инструмент для поиска утечек памяти, начинаем с ним работать. • Связные списки Linkedlist в Си: как с ними работать, чем они лучше массивов, а чем — хуже. • Что общего у стека и стопки подносов в столовой?
-
Лекция 12
Середина курса по основам программирования CS50... Еще остались те, кто считал, что в курсе слишком мало сути и много воды? Очень в этом сомневаемся: последние лекции три-четыре темы вполне себе "взрослые".
Судите сами:
- Эффективная работа со связными списками - канонические операции delete, search и insert. Как пройтись по списку, и найти в нем элемент (а также добавить и удалить) - манипуляции со стеками и очередями - под капотом: как программа распределяется в памяти - как с помощью адресов, указателей, связных последовательностей попасть в царство эффективности? - бинарные деревья - как бы вы сжимали немецкий флаг? Учим алгоритм Хаффмана. - хэш-таблицы и мгновенный доступ к данным ... А также глубокие мысли Д.Ф. (об этом в конце лекции).
Впечатляет? Нас тоже. Тем не менее, переживать не стоит: профессионалы Гарварда помогут понять даже такие непростые для начинающих темы.
-
Лекция 13
13-я лекция Гарвардского курса по основам программирования CS50 (введение в программирование).
В этой лекции мы с вами займемся веб-программированием и познакомимся с интернет-технологиями. Мы перейдем от командных строк в C к программированию на PHP, JavaScript, познакомимся с Html, CSS, SQL и многим другим.
Начинается самое интересное, наслаждайтесь.
-
Лекция 14
14-я лекция легендарного гарвардского курса по основам программирования CS50 (введение в программирование) познакомит вас с HTML и работой web-сервера (Apache).
Также в ходе лекции мы посмотрим, как реализована загрузка главной страницы Facebook и многое другое.
В следующей лекции мы закончим с изучением HTML и CSS, после чего перейдем к изучению PHP =)
-
Лекция 15
CS50, или Computer Science 50 — это курс Гарвардского университета, посвящённый основам программирования. Тема пятнадцатой серии цикла — введение в веб-программирование и знакомство с языком программирования PHP и языком разметки HTML.
-
Лекция 16
CS50, или Computer Science 50 — это курс Гарвардского университета, посвящённый основам программирования. Шестнадцатая серия цикла продолжает рассматривать язык PHP, теперь для разработки веб-приложений, а также знакомит с базами данных и MySQL. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
-
Лекция 16
CS50, или Computer Science 50 — это курс Гарвардского университета, посвящённый основам программирования. Шестнадцатая серия цикла продолжает рассматривать язык PHP, теперь для разработки веб-приложений, а также знакомит с базами данных и MySQL. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
-
Лекция 17
CS50, или Computer Science 50 — это курс Гарвардского университета, посвящённый основам программирования. Семнадцатая серия цикла продолжает знакомить зрителей с базами данных SQL. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
-
Лекция 18
CS50, или Computer Science 50 — это курс Гарвардского университета, посвящённый основам программирования.
Тема восемнадцатой серии цикла — введение в ДжаваСкрипт и программирование на стороне клиента. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
-
Лекция 19
-
Лекция 20
В двадцатой серии цикла рассматривается тема компьютерной безопасности: излагаются основы личной безопасности в Интернете, принципы работы с паролями, объясняется специфика вредоносного программного обеспечения. Также в лекции затрагиваются проблемы неприкосновенности личных данных в современную цифровую эпоху, в том числе в общественно-политическом контексте.
-
Лекция 21
В двадцать первой серии цикла профессор Сказелатти из Стэнфорда рассказывает о системах обработки естественных языков. В лекции рассматриваются алгоритмы распознавания речи, раскрывается понятие статистических моделей распознавания речи, скрытых марковских моделей, вопросно-ответной системы, семантической обработки текста, а также затрагивается тема создания систем невербального общения.
-
Лекция 22
В двадцать второй серии цикла профессор Сказелатти из Йельского Университета демонстрирует использование искусственного интеллекта в играх. В лекции рассматриваются алгоритмы минимакс и альфа-бета-отсечение, а также разбирается игра робота в крестики-нолики.
-
Лекция 23
В двадцать третьей серии цикла подводятся итоги курса, в игровой форме повторяются некоторые темы, идет непринужденное общение. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
- 2613
- 31 March 2018, 07:47
Don't miss new posts!
Subscribe for the Goal and follow through to its completion