Советы
Этот курс следует типичной программе обучения информатике от основ программирования до машинного обучения. Он начинается с основ программирования и дискретной математики, затем расширяется: объектно-ориентированный дизайн, структуры данных и алгоритмы, архитектура компьютера, операционные системы, базы данных и сети. Более поздние разделы охватывают проектирование алгоритмов, теорию вычислений и компиляторы, программную инженерию, а также искусственный интеллект и машинное обучение.
Два навыка важнее любого языка программирования. Во-первых, пишите и запускайте код каждую неделю: прочтение решения не то же самое, что его создание. Во-вторых, анализируйте сложность. Ответ в университете должен объяснять, как время выполнения растёт при увеличении объёма входных данных, используя обозначение Big-O, и доказывать корректность алгоритма, а не просто указывать, что он сработал на одном тесте.
Дискретная математика может казаться отдельной от программирования дисциплиной. Это не так. Доказательство методом математической индукции используется для подтверждения правильности рекурсивной функции, а графы лежат в основе карт, сетей и компиляторов.
-
1
Основы программирования
- 1.1 О курсе и способе его использования
- 1.1 Значения, типы и ввод/вывод
- 1.2 Выбор: выбор между путями
- 1.3 Итерация: повторение действия
- 1.4 Функции: определение задачи одним именем
- 1.5 Коллекции: списки, словари, кортежи, множества
- 1.6 Файлы и ошибки
- 1.7 Декомпозиция, тестирование и отладка
Загрузка…
-
2
Дискретная математика
- 2.1 Логика и доказательства
- 2.2 Множества, функции и отношения
- 2.3 Индукция и рекурсия
- 2.4 Счёт и комбинаторика
- 2.5 Графы и деревья
- 2.6 Дискретная вероятность
Загрузка…
-
3
Основы компьютерных систем
- 3.1 Двоичное кодирование и представление данных
- 3.2 Логические вентили и цифровые базовые элементы
- 3.3 Обзор процессора и памяти
- 3.4 Машинные инструкции
- 3.5 Интерфейс операционной системы
- 3.6 Путь компиляции и выполнения
Загрузка…
-
4
Объектно-ориентированное программирование
- 4.1 Объекты и классы
- 4.2 Инкапсуляция
- 4.3 Композиция и наследование
- 4.4 Интерфейсы и полиморфизм
- 4.5 Исключения и обработка ошибок
- 4.6 Тестирование и качество проектирования
Загрузка…
-
5
Структуры данных и алгоритмы
- 5.1 Асимптотический анализ
- 5.2 Списки, стеки и очереди
- 5.3 Хеширование
- 5.4 Деревья и кучи
- 5.5 Графы и обход
- 5.6 Сортировка
- 5.7 Поиск
Загрузка…
-
6
Архитектура компьютера
- 6.1 Аппаратный интерфейс команд
- 6.2 Машинное слово и управление
- 6.3 Конвейеризация
- 6.4 Иерархия памяти
- 6.5 Ввод/вывод
- 6.6 Параллелизм и производительность
Загрузка…
-
7
Операционные системы
- 7.1 Процессы и потоки
- 7.2 Планирование
- 7.3 Синхронизация
- 7.4 Виртуальная память
- 7.5 Файловые системы
- 7.6 Защита и безопасность
Загрузка…
-
8
Базы данных
- 8.1 Реляционное моделирование
- 8.2 Реляционная алгебра и SQL
- 8.3 Нормализация
- 8.4 Индексы и планы запросов
- 8.5 Транзакции и конкурентность
- 8.6 Безопасность и управление данными
Загрузка…
-
9
Компьютерные сети
- 9.1 Многоуровневая архитектура
- 9.2 Канальный уровень и IP
- 9.3 Маршрутизация
- 9.4 Транспортный уровень (TCP/UDP)
- 9.5 Прикладные протоколы
- 9.6 Сетевая безопасность
- 9.7 Основы распределённых систем
Загрузка…
-
10
Проектирование и анализ алгоритмов
- 10.1 Рекуррентные соотношения и инструменты анализа
- 10.2 Метод «разделяй и властвуй»
- 10.3 Жадные алгоритмы
- 10.4 Динамическое программирование
- 10.5 Оптимизация на графах
- 10.6 Сведение и NP-полнота
Загрузка…
-
11
Теория вычислений и компиляторы
- 11.1 Автоматы и регулярные языки
- 11.2 Контекстно-свободные языки и теория разбора
- 11.3 Вычислимость
- 11.4 Лексический анализ
- 11.5 Разбор (синтаксический анализ)
- 11.6 Семантический анализ и генерация кода
Загрузка…
-
12
Инженерия программного обеспечения
- 12.1 Требования
- 12.2 Архитектура и проектирование
- 12.3 Взаимодействие человека с компьютером и доступность
- 12.4 Контроль версий и командная работа
- 12.5 Тестирование и непрерывная интеграция
- 12.6 Безопасность и профессиональная этика
- 12.7 Командный проект
Загрузка…
-
13
Искусственный интеллект и машинное обучение
- 13.1 Поиск
- 13.2 Знания и рассуждения
- 13.3 Вероятностные модели
- 13.4 Регрессия и классификация
- 13.5 Оптимизация и обучение
- 13.6 Оценка и утечка
- 13.7 Справедливость и ограничения
Загрузка…