Topic outline
Тема 1
Лекции курса смотрятся как увлекательный блокбастер, а задачи, предлагаемые к решению, — не надуманные стерильные учебные материалы, а взятые из реальной жизни кейсы.
Topic 2
- Вот о чем:
• родной язык компьютеров — двоичная система счисления
• ASCII — как записываются символы • как алгоритмизировать задачи — на живых примерах. Очень живых=)
• почему Дэвид разорвал телефонный справочник или что такое двоичный поиск
• сложность алгоритма — что, как и почему
• о том, что такое циклы, расскажет никто иной, как Марк Цукерберг, основатель Facebook
Topic 3
• Что такое алгоритмы. Казалось бы, такое простое понятие, но на самом деле алгоритмизовать даже столь элементарный процесс, как намазывание арахисового масла на тост совсем не просто. Ребята вам это покажут на практике=).
• Есть такое английское выражение “From Scratch”. Переводится оно как «С самого начала». Но можно также перевести как «Начиная со Scratch», если слово Scratch понимать как специальный учебный язык программирования. Так вот, вас познакомят со Scratch — замечательной разработкой Массачусетского технологического университета и покажут, как писать с её помощью программки.
Topic 4
• Язык программирования C.
• Облачная IDE, в которой мы будем писать программы на C и не только;
• Вот такие штуки: jharvard@ide50:~/workspace $ make hello. Выглядит как заклинание? К концу лекции станет понятно, что к чему.
Topic 5
В четвертой лекции мы углубимся в язык С и изучим всё необходимое для выполнения первых трех серьезных заданий по программированию. Это циклы, условия, типы данных, переменные и функции.
Topic 6
Вот что вам расскажут в текущей лекции:
- Баги. Без этих верных спутников разработчиков никуда не деться, нужно научиться их выискивать. Дэвид расскажет о некоторых типах багов. Начнет с тех, которые сложнее выцепить: логических;
- Откровение: бесконечный цикл на самом деле не такой уж и бесконечный;
- Функциональная декомпозиция: прием для повышения читаемости кода и удобства кодирования;
- Знай свои фигурные скобки: область действия переменных;
- Объявление функций до реализации: специально для C;
- Строки и как с ними работать;
- Что такое ошибка сегментации;
Topic 7
🤔Каждый раз, когда вы ловите себя на том, что копируете и вставляете куски кода, спрашивайте себя: а нет ли другого способа? В шестой лекции Гарвардского курса по основам программирования CS50 будет много полезного для нахождения «других способов», но и веселья хватит сполна.
• Роб объяснит, что такое массивы, одномерные и многомерные;
• что такое аргументы командной строки, какова их связь с элементами массивов и как их использовать непосредственно в программах;
• Немного приоткроет завесу тайны над тем, что такое криптография .
Topic 8
И в седьмой лекции Дэвид Малан расскажет об известных алгоритмах сортировки — пузырьковой, вставки и выбора. Эффективны ли они? Подсказка: не слишком, в чем это проявляется — узнаете из лекции.
А еще, вы услышите, как звучат алгоритмы сортировки. Незабываемая музыка программирования уже доступна в переводе седьмой лекции.
Topic 9
• Разберемся, с понятием сортировки слиянием, и поймем, как можно её реализовать с помощью рекурсии. Снова разделяем и властвуем, уже практически по привычке.
• Станем на шаг ближе к пониманию загадочного компилятора Clang и его работе.
• Столкнемся с такими вот знаками: & | ^ ~. Это— не «птичий язык», а побитовые операторы, они позволяют добраться до отдельных битов данных.
• А еще Дэвид приоткроет завесу тайны: в практическом задании вам предстоит вспомнить детство и поиграть в «пятнашки». Только в этот раз они будут написаны на Си.
Topic 10
• Дэвид подробнее расскажет о рекурсии и сравнит циклический и рекурсивный алгоритмы для одной и той же задачи.
• Научит, как менять переменные местами с помощью дополнительного параметра, без него, а также с применением загадочного оператора XOR.
• Продемонстрирует, как нужно отлаживать программку на примере CS50 IDE. Отладка — полезна, она действительно ускоряет процессы разработки в разы, так что это важное умение и в каждой среде разработки его следует усвоить чтобы повысить собственную продуктивность.
• Вы получите ещё немного полезной информации о стеке памяти и локальных переменных.
Topic 11
Из лекции вы узнаете:
• Как кодируется изображение. Слово bitmap станет родным и понятным.
• Вы узнаете, как понять (с точки зрения компьютера), что перед вами именно JPEG-файл и какую роль в этом играет комбинация битов 244 216 255.
• Вспомните (или изучите) 16-ричные числа. Запись 0хff станет столь же очевидной, как 255 а десятичной системе.
• Что такое struct в Си? Собственные типы данных в Си.
• Сравнение содержимого строк в Си (strcmp) и другие средства работы со строками.
• Адресная арифметика.
• char* t = malloc((strlen(s) + 1) * sizeof(char)) — как вам такая строчка кода? После лекции вы будете понимать, что к чему, и сами сможете писать нечто подобное =)
• Немного синтаксического сахара =)
• Как писать swap с указателями и зачем
Topic 12
В 11 лекции мы кое-что изучим, а кое-что повторим вот о чем:
• Почему не стоит ждать ничего хорошего от разыменовывания «мусорных» значений или недействующих указателей.
• scanf(“%i”, &x) — что значит & в этой записи
• char* и string — что между ними общего?
• Как правильно выделять память, чтобы не было ошибки сегментации
• Изучаем работу с памятью на примере функций библиотеки CS50 и… постепенно отказываемся от неё, как от ходунков.
• Valgrind – мощный инструмент для поиска утечек памяти, начинаем с ним работать.
• Связные списки Linkedlist в Си: как с ними работать, чем они лучше массивов, а чем — хуже.
• Что общего у стека и стопки подносов в столовой?
Topic 13
- Эффективная работа со связными списками
- канонические операции delete, search и insert. Как пройтись по списку, и найти в нем элемент (а также добавить и удалить)
- манипуляции со стеками и очередями
- под капотом: как программа распределяется в памяти
- как с помощью адресов, указателей, связных последовательностей попасть в царство эффективности?
Topic 14
В этой лекции мы с вами займемся веб-программированием и познакомимся с интернет-технологиями. Мы перейдем от командных строк в C к программированию на PHP, JavaScript, познакомимся с Html, CSS, SQL и многим другим.
Начинается самое интересное, наслаждайтесь.
Topic 15
Сегодня мы познакомимся с HTML и работой web-сервера (Apache).
Также в ходе лекции мы посмотрим, как реализована загрузка главной страницы Facebook и многое другое.
В следующей лекции мы закончим с изучением HTML и CSS, после чего перейдем к изучению PHP 😉
Topic 16
Тема пятнадцатой серии цикла — введение в веб-программирование и знакомство с языком программирования PHP и языком разметки HTML.
Topic 17
Шестнадцатая серия цикла продолжает рассматривать язык PHP, теперь для разработки веб-приложений, а также знакомит с базами данных и MySQL.
Topic 18
Семнадцатая серия цикла продолжает знакомить зрителей с базами данных SQL.
Topic 19
Тема восемнадцатой серии цикла — введение в JavaScript и программирование на стороне клиента.
Topic 20
В девятнадцатой серии цикла продолжается знакомство с языком JavaScript, а также демонстрируется использование компьютерных технологий в сфере археологии.
Topic 21
В двадцатой серии цикла рассматривается тема компьютерной безопасности: излагаются основы личной безопасности в Интернете, принципы работы с паролями, объясняется специфика вредоносного программного обеспечения. Также в лекции затрагиваются проблемы неприкосновенности личных данных в современную цифровую эпоху, в том числе в общественно-политическом контексте.
Topic 22
В двадцать первой серии цикла профессор Сказелатти из Стэнфорда рассказывает о системах обработки естественных языков. В лекции рассматриваются алгоритмы распознавания речи, раскрывается понятие статистических моделей распознавания речи, скрытых марковских моделей, вопросно-ответной системы, семантической обработки текста, а также затрагивается тема создания систем невербального общения.
Topic 23
В двадцать второй серии цикла профессор Сказелатти из Йельского Университета демонстрирует использование искусственного интеллекта в играх. В лекции рассматриваются алгоритмы минимакс и альфа-бета-отсечение, а также разбирается игра робота в крестики-нолики.
Topic 24
В двадцать третьей серии цикла подводятся итоги курса, в игровой форме повторяются некоторые темы, идет непринужденное общение.