Обучение
Курс знакомит студентов с основами программирования, базовыми алгоритмами и структурами данных, принципами работы с исходным кодом. В рамках курса студенты «с нуля» знакомятся с языком программирования Python 3, а также с его дополнительными модулями, наиболее применимыми для естественно-научных вычислений (библиотека SciPy и не только).
Компьютерная архитектура и организация
1. Архитектура фон Неймана
2. Гарвардская архитектура
3. Представление информации
4. Бинарная система
5. Отличия естественного языка и языка программирования (синтаксис)
Процессоры
1. Архитектура набора команд
2. Рост технологий и производительности (Закон Мура)
3. Структура современных процесоров
Манипуляция данными
1. Машинный код
2. Коммуникация с периферией
3. Иерархия памяти
Программирование
1. Трансляция программ и команд
2. Компиляция программного кода
3. Интерпретация
4. Динамическая компиляция
Вычислительные модели
1. Алгоритм
2. Машина с произвольным доступом к памяти
3. Машина с хранимой в памяти программой
4. Машина Тьюринга
5. λ-исчисление Чёрна
Декомпозиция, абстракции, функции
1. Структурирование программ
2. Функции
3. Спецификации
Итеративные и рекурсивные алгоритмы
1. Рекурсия и итерация
2. Анализ рекурсии
3. Списки и словари
Вычислительные алгоритмы
1. Дискретизация дифференциальных уравнений
2. Методы численного интегрирования
Парадигмы программирования
1. Функциональный подход
2. Объектно-ориентированный подход
Тестирование и отладка
1. Классификация тестов
2. Подходы к тестированию
3. Тестирование по стратегии черного ящика
4. Тестирование по стратегии белого ящика
5. Отладка
Эффективность программ
1. Что понимается под эффективностью программ
2. Как оценить эффективность
3. "О"нотация
4. Анализ вычислительной сложности
5. Классы вычислительной сложности
6. Примеры характерные для каждого класса