Курс «Структура и интерпретация компьютерных программ»
Последнее обновление: 18 мая 2025 г.
Бесплатный курс
Включено в курс
Описание
Этот курс создан на основе одноименной книги профессоров MIT, и в нем вы изучите основы программирования. Вы узнаете больше о примитивных выражениях, комбинировании и абстракциях, о процедурах и порождаемых ими абстракциях. В итоге вы научитесь реализовывать алгоритмы поиска наибольшего общего делителя и проверки на простоту, строить процедуры с помощью Lambda, делать рекурсивные вычисления и находить корень с помощью метода Ньютона. Этот курс пригодится, если вы хотите более глубоко понимать основы программирования. Знания из этого курса помогают разработчикам развивать свои навыки в программировании.
Чему вы научитесь
- Работать с языком программирования Scheme (Lisp)
- Создавать абстракции
- Реализовывать наибольший общий делитель, проверку на простоту и другие алгоритмы
- Делать рекурсивные вычисления
Программа
1 | Информатика как наука Обсуждаем, что такое информатика и чем занимается эта наука |
2 | Примитивные выражения, комбинирование и абстракция Знакомимся с языком Lisp, рассматриваем примитивные выражения, комбинирование, процедуры и абстракции |
3 | Процедуры как абстракции Изучаем «процедуры как абстракции» — важный подход при программировании |
4 | Процедуры и порождаемые ими процессы 1 Знакомимся с процедурами, процессами, линейной рекурсией и итерациями |
5 | Процедуры и порождаемые ими процессы Продолжаем изучать процедуры, процессы, линейную рекурсию и итерации |
6 | Древовидная рекурсия Рассматриваем вычисление последовательности чисел Фибоначчи как пример древовидной рекурсии |
7 | Порядки роста Знакомимся с понятием «порядок роста», которое дает общую оценку необходимых ресурсов при увеличении входных данных процессов |
8 | Возведение в степень Рассматриваем возведение числа в степень для лучшего понимания порядков роста |
9 | Наибольший общий делитель Изучаем алгоритм поиска наибольшего общего делителя и реализуем его на языке программирования Scheme (LISP) |
10 | Проверка на простоту Реализуем алгоритм проверки числа на простоту на языке программирования Scheme (LISP) |
11 | Процедуры в качестве аргументов Рассматриваем важную особенность языка — возможность передачи процедуры как аргумента в другую процедуру |
12 | Построение процедур с помощью lambda Учимся создавать процедуры на лету с помощью lambda |
13 | Создание локальных переменных Учимся создавать локальные переменные в процедурах |
14 | Метод половинного деления Рассматриваем реализацию метода половинного деления — простого, но мощного способа нахождения корней уравнений с непрерывными функциями |
15 | Нахождение неподвижных точек функций Знакомимся с понятием «неподвижные точки функции» и учимся искать их |
16 | Процедуры как возвращаемые значения Добиваемся еще большей выразительной силы, создавая процедуры, возвращаемые значения которых сами являются процедурами |
17 | Метод Ньютона Рассматриваем и реализуем общий случай поиска корня с помощью метода Ньютона |