Главная
|
страница 1
Программа курса ПРОГРАММИРОВАНИЕ
(Пятый и шестой семестры)
Лектор: Соловьев Сергей Юрьевич
Преподаватель практических занятий: Соловьев Сергей Юрьевич
Описание курса:
«Программирование» – годовой курс для студентов 3-го года обучения факультета математики ГУ-ВШЭ. Это – базовый курс программирования на языках высокого уровня для студентов, специализирующихся в области математики. Его пререквизиты – курсы дискретной математики, линейной алгебры и математического анализа. Курс преподается на русском языке.
Акцент в курсе делается на практическом освоении программирования на языке С++. Основные конструкции языка иллюстрируются на примерах классических вычислительных задач. Кроме того, значительное внимание в курсе уделяется технологиям программирования, вообще, и объектно-ориентированному программированию в частности.
Цели курса:
Студенты должны получить знания и навыки в области практического программирования на языке C++. Они должны уметь применять полученные знания в индивидуальном и коллективном программировании, а также должны понимать методы, идеи, результаты и выводы, встречаемые в большинстве вычислительных задач экономического содержания. В данном курсе студенты должны освоить традиционные методы программирования, предназначенные в основном для решения отдельны вычислительных задач. Студенты должны знать и уметь практически применять основные технологии программирования и отладки программ. Рассматриваемые методы и технологии должны быть освоены на практике с использованием реальных массивов данных.
Методы:
В курсе используются следующие методы и формы работы:
-
лекции (2 часа в неделю)
-
практические занятия в компьютерном классе (2 часа в неделю, выполняются задания на компьютерах и обсуждаются основные вопросы домашних заданий);
-
контрольные работы (4 шт.);
-
домашние задания (2 шт.);
-
консультации преподавателя;
-
самостоятельная работа в компьютерном классе, в том числе в Интернет;
-
самостоятельная работа с литературой;
-
сдача зачетов (2 шт.) и экзаменов (2 шт.).
В целом курс включает 72 часа лекций и 72 часа практических занятий. Выполняются контрольные работы и домашние задания.
Основная литература:
-
Страуструп Б. Язык программирования С++. Специальное издание. – СПб.: Бином, Невский диалект, 2008.
-
Фридман А.Л. Основы объектно-ориентированного программирования на языке Си++. – М.: Горячая линия – Телеком, Радио и связь, 1999.
-
Форд А.Р., Теори Т.Дж. Практическая отладка в С++. – М.: КУДИЦ-ОБРАЗ, 2002.
Дополнительная литература:
-
Страуструп Б. Дизайн и эволюция С++. – СПб.: ДМК-Пресс, 2006.
-
Тан К.Ш., Стиб В.-Х., Харди Й. Символьный С++: Введение в компьютерную алгебру с использованием объектно-ориентированного программирования. – М.: Мир, 2001.
-
Топп У., Форд У. Структуры данных в С++. – М.: ЗАО “Издательство БИНОМ”, 2000.
-
Давыдов В.Г. Технологии программирования. С++. – СПб.: БХВ-Петербург, 2005.
-
Березин И.С., Житков Н.П. Методы вычислений. т.1,2 - М.: Гос. изд-во физ-мат литературы, 1962.
-
Кристофидес Н. Теория графов. Алгоритмический подход. – М.: Мир, 1978.
Принципы оценки работы студентов:
В рамках данного курса предусмотрено проведение 4 контрольных работ и сдача 2 домашних заданий. Основная форма контроля – два зачета и два экзамена. Необходимым условием отличной оценки на экзаменах является отлично выполненные контрольные работы (25% итоговой оценки), сдача всех домашних заданий, а также заданий практикума в течение семестра (20% итоговой оценки), полное владение теоретическим материалом, продемонстрированное на экзамене (55% итоговой оценки). Необходимым условием хорошей оценки на экзамене является уверенное знание основ курса, сдача всех заданий, хорошо выполненные контрольные работы.
Содержание курса:
1. Введение в программирование
-
Устройство компьютера: схема, устройства ввода и вывода, внутренняя и внешняя память, центральный процессор.
-
Оперативная память: ячейки, адреса ячеек, размер ячеек.
-
Машинное представление данных: представление целых и вещественных чисел, точность представления целых и вещественных чисел, представление символьной информации.
-
Машинная программа: смысл и формат команд, система команд.
2. Введение в язык программирования C++
-
Язык C++: история, назначение, области применения, стандарт языка.
-
Программы на языке С++: запись программ, имена, переменные и константы, стиль записи программ.
-
Вывод на экран, ввод с клавиатуры.
-
Практикум:
-
Среда программирования.
-
Компилирование и выполнение программ.
-
Программа «Hello World».
3. Вычисления на языке C++
-
Арифметические и логические операции.
-
Операция присваивания.
-
Отношения.
-
Условный оператор if-else.
-
Битовые и адресные операции.
-
Приоритеты и ассоциативность операций.
-
Практикум:
-
Вычисления по формулам.
-
Программа вычисления корней квадратного уравнения.
-
Тестирование программ.
4. Итерационные вычисления на языке C++
-
Операторы цикла: while и do-while.
-
Составной оператор
-
Операторы break, continue и return.
-
Практикум:
-
Программа решения уравнений методом касательных.
-
Программа решения уравнений методом хорд.
5. Матричные и векторные вычисления на языке C++
-
Массивы: определение и размещение в памяти, индексация элементов массива.
-
Оператор цикла for
-
Практикум:
-
Алгоритмы суммирования, поиска и сортировки.
-
Алгоритмы решения систем линейных уравнений.
-
Алгоритмы вычисления собственных значений.
-
Алгоритмы вычисления обратной матрицы.
6. Обзор операторов языка С++
-
Оператор/операция присваивания: ++, += и т.д.
-
Оператор-выражение vs. Cоставной оператор.
-
Метки.
-
Управляющие операторы goto и switch.
-
[повт] Условный оператор if-else.
-
[повт] Операторы цикла while, do-while и for.
-
[повт] Операторы break, continue и return.
-
Структурное программирование.
7. Функции в языке С++
-
Объявление функции: имя функции, аргументы функции, тип результата.
-
Вызов функции.
-
Необязательные аргументы функции, значения по умолчанию.
-
Определение функции: заголовок функции, тело функции, оператор return.
-
Стандартные функции языка С++.
-
Рекурсивные функции.
-
Практикум:
-
Схема Горнера для вычисления значения полинома.
-
Алгоритм численного интегрирования методом прямоугольников.
-
Алгоритм численного интегрирования методом трапеций.
-
Рекурсивная функция sin(x).
8. Производные типы данных
-
[повт] Массивы.
-
Структуры; битовые поля.
-
Объединения.
-
Указатели: массивы и указатели, адресная арифметика, бестиповый указатель, нулевой указатель.
-
Строки и литералы.
-
Распределение памяти: автоматическое, статическое, динамическое.
-
Ссылки: распределение памяти при передаче аргументов функции, правила передачи аргументов.
-
Практикум:
-
Структуры данных для представления бинарных деревьев поиска.
9. Сложность алгоритмов.
-
Оценка сложности алгоритмов в худшем случае и в среднем.
-
Операции поиска, вставки и удаления в деревьях поиска.
-
Сложность операции поиска в деревьях поиска.
-
Построение дерева поиска.
-
Сбалансированные деревья поиска; сложность операций вставки и удаления.
-
AVL-деревья; сложность операций вставки и удаления.
-
Практикум:
-
Алгоритм построения дерева поиска.
-
Алгоритм поиска в дереве поиска.
-
Алгоритм построения AVL-дерева.
10. Принципы объектно-ориентированного программирования
-
Понятие объекта: имя объекта, данные и методы.
-
Конструкторы и деструкторы.
-
Принципы объектно-ориентированного программирования:
-
Инкапсуляция - совмещение / сокрытие в одном объекте данных и методов их обработки.
-
Наследование – создание новых объектов, автоматически приобретающих данные и методы определённых ранее объектов.
-
Полиморфизм – переопределение семантики операций в иерархии объектов.
-
Средства поддержки инкапсуляции.
-
Средства поддержки наследования.
-
Средства поддержки полиморфизма.
-
Практикум:
-
Объект для представления комплексных чисел.
11. Объектно-ориентированное программирование в языке C++
-
Класс, тип и объект в языке C++.
-
Контроль доступа к объекту; доступ по чтению и по записи.
-
Оптимизация записи простых методов.
-
Переопределение операций.
-
Производные классы, наследование: виртуальные методы, преобразование базового и производного классов, внутреннее и защищенное наследование.
-
Абстрактные классы.
-
Инициализация объектов.
-
Множественное наследование; виртуальное наследование.
-
Практикум:
-
Система объектов для геометрических фигур.
12. Управление объектами в языке С++
-
Операции new и delete.
-
Преобразования типов: явные преобразования типов, стандартные преобразования типов, преобразования указателей и ссылок, преобразования типов, определенных в программе.
-
Динамическое определение типов.
-
Указатели на элементы класса.
-
Практикум:
-
Вычисления на графах.
13. Ввод-вывод в языке С++
-
Потоки; манипуляторы и форматирование ввода-вывода.
-
Строковые потоки.
-
Ввод-вывод файлов.
-
Практикум:
-
Алгоритмы обработки текстовых файлов.
14. Шаблоны в языке С++
-
Функции-шаблоны.
-
Шаблоны классов; задание свойств класса.
-
Практикум:
-
Программирование для баз данных.
15. Библиотеки классов в языке С++
-
Многократное использование функций и классов.
-
Принципы построения библиотеки классов.
-
Библиотека классов Tools.h++
-
Стандартная библиотека шаблонов STL: коллекции и алгоритмы, итераторы, моделирование концепций.
-
Стандартная библиотека языка Си++.
-
Классы исключительных ситуаций.
-
Стандартная библиотека ввода-вывода потоков.
-
Практикум:
-
Программирование веб-приложений.
Распределение часов курса по темам и видам работ:
№
п/п
|
Наименование
тем и разделов
|
ВСЕГО
(часов)
|
Аудиторные занятия
|
в том числе
|
Лекции
|
Практические занятия
|
1.
|
Введение в программирование
|
4
|
4
|
|
2.
|
Введение
в язык программирования C++
|
6
|
2
|
4
|
Контрольная работа
|
2
|
|
2
|
3.
|
Вычисления на языке C++
|
12
|
6
|
6
|
4.
|
Итерационные вычисления на языке C++
|
12
|
6
|
6
| Зачет |
|
|
|
5.
|
Матричные и векторные вычисления на языке C++
|
6
|
2
|
4
|
6.
|
Обзор операторов языка С++
|
8
|
4
|
4
|
Контрольная работа
|
2
|
|
2
|
7.
|
Функции в языке С++
|
10
|
6
|
4
|
8.
|
Производные типы данных
|
10
|
6
|
4
|
Экзамен
|
|
|
|
9.
|
Сложность алгоритмов
|
6
|
2
|
4
|
10.
|
Принципы
объектно-ориентированного программирования
|
8
|
4
|
4
|
Контрольная работа
|
2
|
|
2
|
11.
|
Объектно-ориентированное программирование в языке C++
|
10
|
6
|
4
|
12.
|
Управление объектами
в языке С++
|
10
|
6
|
4
|
Зачет
|
|
|
|
13.
|
Ввод-вывод в языке С++
|
6
|
2
|
4
|
14.
|
Шаблоны в языке С++
|
10
|
6
|
4
|
Контрольная работа
|
2
|
|
2
|
15.
|
Библиотеки классов в языке С++
|
18
|
10
|
8
|
Экзамен
|
|
|
|
|
ИТОГО:
|
144
|
72
|
72
|
Смотрите также:
1. Программа курса «теория вероятностей и математическая статистика» Раздел I. Теория вероятностей. Тема Основные понятия теории вероятностей. Предмет курса
1432.57kb.
5 стр.
Рабочая программа лекционного курса «Программирование и алгоритмические языки»
64.07kb.
1 стр.
Вопросы к экзамену по дисциплине «Программирование»
44.17kb.
1 стр.
Программа курса «Программирование на языке С++»
31.04kb.
1 стр.
Рабочая программа дисциплины программирование на языке C# Направление (специальность) подготовки
97.36kb.
1 стр.
Программа курса программирование
137.1kb.
1 стр.
Программа по дисциплине «web-программирование» для студентов, обучающихся по специальности 220400 «Программное обеспечение вычислительной техники и автоматизированных систем»
20.54kb.
1 стр.
Экзаменационные вопросы по операционным системам и средам
16.83kb.
1 стр.
Программа курса для специальности №020900 Искусствоведение москва 2004 история садово-паркового искусства программа курса
220.32kb.
1 стр.
Программа дисциплины «Программирование и основы алгоритмизации» для направления 220400. 62 «Управление в технических системах»
165.47kb.
1 стр.
Б. Н. Ельцина Кафедра «Электронное машиностроение» Программирование контроллера Simatic S7-300 Программирование панели человеко-машинного интерфейса tp-177a методические указания
264.74kb.
1 стр.
Программирование 3 История развития программирования 4
382.12kb.
2 стр.
|
|