Первая лекция
Содержание первой лекции
• родной язык компьютеров — двоичная система счисления
• ASCII — как записываются символы
• как алгоритмизировать задачи — на живых примерах. Очень живых=)
• почему Дэвид разорвал телефонный справочник или что такое двоичный поиск
• сложность алгоритма — что, как и почему
• о том, что такое циклы, расскажет никто иной, как Марк Цукерберг, основатель Facebook
• …а еще вы увидите его же в 2005 году, в качестве приглашенного гостя CS50. Хм… судя по аудитории, интерес к технологиям вырос в десятки раз!
Вторая лекция
Содержание второй лекции
• Что такое алгоритмы. Казалось бы, такое простое понятие, но на самом деле алгоритмизовать даже столь элементарный процесс, как намазывание арахисового масла на тост совсем не просто. Ребята вам это покажут на практике=).
• Как эффективно посчитать количество людей в аудитории? У нас есть такой алгоритм.
• Есть такое английское выражение “From Scratch”. Переводится оно как «С самого начала». Но можно также перевести как «Начиная со Scratch», если слово Scratch понимать как специальный учебный язык программирования. Так вот, вас познакомят со Scratch — замечательной разработкой Массачусетского технологического университета и покажут, как писать с её помощью программки.
Третья лекция
• Язык программирования C. На примере простейшей программы Дэвид растолкует основные конструкции языка, пользуясь аналогиями с изученными на нулевой неделе «пазлами» Scratch;
• Облачная IDE, в которой мы будем писать программы на C и не только;
• Вот такие штуки: jharvard@ide50:~/workspace $ make hello. Выглядит как заклинание? К концу лекции станет понятно, что к чему. Это одна из команд Linux. Выучим еще парочку необходимых для запуска приложений из командной строки.
И немного интересных фактов о первом программируемом американском компьютере (из тех, что целую комнату занимают), а также о первом обнаруженном баге=).
Четвёртая лекция
В четвертой лекции мы углубимся в язык С и изучим всё необходимое для выполнения первых трех серьезных заданий по программированию. Это циклы, условия, типы данных, переменные и функции. Задания, к слову весьма разнообразные, совсем не скучные. Выполнив их, вы отточите использование библиотек, ввод/вывод и циклы вместе со знаменитым водопроводчиком Super Mario, посчитаете, сколько воды вы расходуете во время душа и запрограммируете первый относительно серьезный алгоритм для вычисления минимального количества монеток для выдачи сдачи. Задания не слишком сложные, но требуют от новичков задействовать всё, что было выучено на третьей и четвертой лекции, плюс немного подумать. Смело к работе, а если что-то не получается, задавайте вопросы, мы будем рады помочь=).
Пятая лекция
В четвертой лекции мы углубимся в язык С и изучим всё необходимое для выполнения первых трех серьезных заданий по программированию. Это циклы, условия, типы данных, переменные и функции. Задания, к слову весьма разнообразные, совсем не скучные. Выполнив их, вы отточите использование библиотек, ввод/вывод и циклы вместе со знаменитым водопроводчиком Super Mario, посчитаете, сколько воды вы расходуете во время душа и запрограммируете первый относительно серьезный алгоритм для вычисления минимального количества монеток для выдачи сдачи. Задания не слишком сложные, но требуют от новичков задействовать всё, что было выучено на третьей и четвертой лекции, плюс немного подумать. Смело к работе, а если что-то не получается, задавайте вопросы, мы будем рады помочь=).
Шестая лекция
Каждый раз, когда вы ловите себя на том, что копируете и вставляете куски кода, спрашивайте себя: а нет ли другого способа? В шестой лекции Гарвардского курса по основам программирования CS50 будет много полезного для нахождения «других способов», но и веселья хватит сполна. Кстати, её будет вести молодой лектор Роб Боуден. Но Дэвид Малан также вертикально поприсутствует=). Что значит «вертикально»? Узнаете в начале лекции.
• Роб объяснит, что такое массивы, одномерные и многомерные;
• что такое аргументы командной строки, какова их связь с элементами массивов и как их использовать непосредственно в программах;
• Немного приоткроет завесу тайны над тем, что такое криптография (но подробнее о шифрах узнаете из дополнительных материалов).
Седьмая лекция
Помните разорванный телефонный справочник из самой первой лекции CS50? В седьмой лекции он возвращается! Возвращается, чтобы сделать фразу «эффективность алгоритмов» не пустым звуком, а пояснить на примере. Все программисты думают о скорости работы программы и о том, сколько памяти она при этом «съест». На учебных задачках это не так очевидно, но когда мы работаем с большими массивами данных (как почти везде в «Энтерпрайзе»), эти вопросы становятся первоочередными. Представьте себе, что данные в телефонном справочнике не отсортированы по алфавиту. Представляете, сколько времени у нас бы ушло на то, чтобы его там найти? С учётом того, что в телефонном справочнике нет человека с таким именем, пришлось бы перебирать все строчки подряд — и всё впустую! Но есть выход: данные всегда можно отсортировать. И в седьмой лекции Дэвид Малан расскажет об известных алгоритмах сортировки — пузырьковой, вставки и выбора. Эффективны ли они? Подсказка: не слишком, в чем это проявляется — узнаете из лекции. Но почему они в таком случае знамениты и зачем их изучать? Дело в том, что они довольно просты в реализации, а на их основе можно создавать уже более продвинутые алгоритмы сортировки. А еще, вы услышите, как звучат алгоритмы сортировки. Незабываемая музыка программирования уже доступна в переводе седьмой лекции.
Восьмая лекция
• Узнаем, может ли рекурсия помочь нам в поисках Майка Смита. И вообще, узнаем, что это за загадочный инструмент такой — рекурсия — и как её применять. • Разберемся, с понятием сортировки слиянием, и поймем, как можно её реализовать с помощью рекурсии. Снова разделяем и властвуем, уже практически по привычке. • Станем на шаг ближе к пониманию загадочного компилятора Clang и его работе. Продолжим разбираться с тем, что находится «под капотом» программы и оценим путь от исходного кода через ассемблерный к объектному. • Столкнемся с такими вот знаками: & | ^ ~. Это— не «птичий язык», а побитовые операторы, они позволяют добраться до отдельных битов данных. Для расшифровки каждого из них Дэвид воспользуется весьма необычным инструментом — доской и маркерами! Даже такое «ретро» изредка проскакивает на CS50 =). • А еще Дэвид приоткроет завесу тайны: в практическом задании вам предстоит вспомнить детство и поиграть в «пятнашки». Только в этот раз они будут написаны на Си. • Наконец, вы увидите милую беседу Эрика Шмидта из Google и одного бывшего сенатора с каким-то знакомым лицом по имени Барак. Эрик попросил Барака предложить самый эффективный способ отсортировать миллион 32-битных целых чисел. Ответ нынешнего президента США вы узнаете из лекции.