ПРОГРАММА лекционного курса «Информатика» (2-3-й семестры, 51+36 часов)

advertisement
РАБОЧАЯ ПРОГРАММА лекционного курса
«Информатика»
(2-3-й семестры, 51+36 часов)
ЦЕЛЬ И ЗАДАЧИ КУРСА. Цель курса - ввести в круг
понятий и задач информатики, связанных с проблемами
информационного моделирования объектов предметной области
средствами языков программирования и обработки данных с
помощью вычислительных машин. Задача курса состоит в
выработке у студентов навыков использования структур
данных и методов разработки алгоритмов на примере
классических алгоритмов обработки данных, ввести понятия
о формальном представлении алгоритмов, их сложности и об
ЭВМ как исполнителях алгоритмов.
Курс
поддерживается
соответствующей
учебной
(аудиторной) практикой и практикумом на ЭВМ.
От составителей.
Также как и в программе лекционного курса «Программирование и
алгоритмические языки», составители отмечают особую важность вопросов
о мотивации курса в целом и порядка изложения материала в частности.
Надежной основой мотивации курса представляется систематическая
трактовка деятельности программистов как практической математической
деятельности людей для людей. Представляется важным что, будучи
основой
внутренней
логики
изложения
материала,
эта
установка
мотивирует и прагматическую необходимость владения понятиями и
материалом других математических курсов.
Составители ни в коей мере не считают, что насыщенность
формализмами и методологическими концепциями «украшают» курс. Однако,
с другой стороны, «утилитарный практицизм» тоже не считают приемлемой
основой курса. Составители исходят из того, что содержание курса это понятия, средства и методы практического программирования в
конкретно и доступно изложенном контексте методологических концепций
и математического инструментария разработки программ.
Также
как
и
раньше,
составители
полагают,
что
лектор
самостоятельно определяет, в каком порядке разворачивать материал
курса и как мотивировать уровень и порядок изложения.
Введение.
Предметная
область
и
информационное
моделирование. Объекты предметной области, их строение и
поведение,
и
их
моделирование
математическими
структурами. Модель предметной области и уровни её
спецификации, внешние и внутренние спецификации.
Технология программирования. Разработка программы как
процесс, включающий:
 разработку
структур
представления
данных
и
алгоритма, их описание на подходящем математическом
языке, обоснование правильности алгоритма и анализ
его характеристик;
 перевод описания алгоритма на язык программирования
с сохранением правильности;
 оптимизацию
программы
с
сохранением
ее
функциональной эквивалентности исходной.
1
Абстракция
данных
и
действий
как
инструмент
проектирования
информационных
моделей
и
программных
систем. Уровни абстракции в разработке программ и в
языках программирования, от машин Тьюринга и классической
архитектуры
ЭВМ
до
декларативных
языков
и
машин
логических
выводов.
Императивная
(процедурная),
функциональная, объектно-ориентированная, логическая и
алгебраическая парадигмы (стили) в технологии и языках
программирования.
1. Математические структуры в разработке алгоритмов. 34ч.
Абстрактные структуры данных. 10ч.
Абстрактные типы. Линейные типы - стек, очередь и
список. Нелинейные типы - дерево и граф. Структура и
основные операции над данными этих типов. Рекурсивное
определение типов. Классификация по способам доступа.
Статические и динамические типы. Строки, массивы и файлы
как динамические типы данных.
Понятие
о
моделировании
типов.
Представление
(реализация) абстрактных типов, моделирование статических
версий
динамических
типов,
процедурная
реализация
рекурсивных определений. Ссылочные типы данных
как
аппарат моделирования абстрактных динамических типов.
Структура процессов обработки данных. 14ч.
Рекуррентные определения и метод последовательного
уточнения решения.
Решение задач как процесс поиска решения. Словарный
(лексикографический)
порядок
на
последовательностях.
Метод перебора и его вариант – перебор с возвратами.
Рекурсивные
определения
и
метод
сведения
к
подзадачам.
Автоматы. Метод конечных состояний и его обобщения в
моделировании процессов и спецификации содержательной
структуры обрабатываемых данных.
Основные алгоритмы на деревьях и графах. 10ч.
Порождение, обходы «в глубину» (с использованием
стека) и «в ширину» (с использованием очереди). Поисковые
деревья.
Деревья
(арифметических)
выражений.
Префиксная,
инфиксная
и
постфиксная
формы
линейной
записи,
содержательная
структура
и
формы
ее
представления.
Вычисление
и
синтаксический
анализ
выражений,
преобразование форм линейной записи и форм представления.
2. Объектная модель в программировании. 17 ч.
Объектно-ориентированные средства языка ObjectPascal2.
Понятие
модуля.
Локальные
и
глобальные,
инкапсулированные
и
интерфейсные
языковые
объекты
(переменные, типы...). Описания, области действия и
правила видимости.
2
Понятие объектно-ориентированного анализа. Классы и
объекты. Поля и свойства, методы и события, конструкторы
и деструкторы. Базовая семантика классов как абстрактных
типов данных. Инкапсуляция, наследование и полиморфизм.
3. Логико-алгебраическая модель в программировании. 12 ч.
Базы данных как аппарат информационного моделирования.
Модель данных как расширение концепции абстрактного типа.
Основные понятия реляционной модели данных – таблицы
(поля, строки, колонки и их типы), ключи таблицы,
отношения
между
таблицами,
ограничения
целостности
(условия
правильности)
базы
данных
и
операции
манипулирования данными.
Язык структурированных запросов SQL.
Средства определения данных. Базовые типы данных.
Оператор
CREATE
TABLE,
определение
типа
колонок,
первичного ключа и ограничений целостности по строкам,
колонкам и межтабличным связям.
Средства манипулирования данными. Базовые предикаты.
Операторы SELECT, INSERT, DELETE и UPDATE. Объединение и
соединение таблиц, группировка и групповые (агрегатные)
функции, предикаты с подзапросами.
4. Рекурсивное программирование. 12 ч.
Рекурсивные определения как уравнения. Рекурсивные
вычисления
–
дерево
подзадач,
построение
плана
и
вычисление по плану.
Рекурсивный анализ - параметризация задачи, поиск
базового случая и его решения, декомпозиция общего случая
и обоснование конечного завершения.
Применение рекурсивных алгоритмов при решении задач.
Сравнение рекурсивных и итеративных алгоритмов. Рекурсия
как структура управления и структура данных.
5. Машинно-ориентированное программирование. 6 ч.
Базовая
модель
вычислителя,
оператор
перехода
и
помеченные операторы. Декомпозиция выражений, структур
данных
и
структур
управления.
Представление
данных
базового типа, ссылочное именование (адресация) данных и
действий-команд. Структура вычислительной машины и ход
процессов.
6. Теоретическая и практическая реализуемость алгоритмов.
6 час.
Понятие об алгоритмической полноте и алгоритмической
неразрешимости.
Фундаментальные
примеры
неразрешимых
проблем.
Понятие вычислительной сложности по времени и памяти.
Верхние, средние и нижние (асимптотические) оценки.
Анализ сложности на примере классических алгоритмов
сортировки и поиска. P и NP классы сложности.
3
ЛИТЕРАТУРА.
1. Вирт Н. Систематическое программирование. Введение.
М.: Мир, 1977. - 183 с.
2. Вирт Н. Алгоритмы+структуры данных = программы. М.:
Мир, 1985. Алгоритмы и структуры данных. М: Мир,
1989. – 360 с.
3. М. Грабер. SQL. Справочное руководство. М.: Лори,
1998. - 292 с.; 2001. - 354 с.
4. Дейт К. Руководство по pеляционной СУБД DB2. М.:
Финансы и статистика, 1988. - 320 с.
5. Задачи для программирования по теме «Сортировка
данных».
Задачи
для
программирования
по
теме
«Списки». Методические разработки под ред. В.С.
Кугуракова. Казань, КГУ, 1987.
6. Марченко А.И. Программирование на языке Object Pascal
2.0. - К., ЮНИОР, 1998. - 304 с.
ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА.
1. С.А. Абрамов.
Математические
построения
и
программирование. М.: Наука ГРФМЛ, 1978.- 192.
2. А.В. Ахо, Дж.Д. Хопкрофт, Дж.Д. Ульман.
Структуры
данных и алгоритмы. М.: Вильямс, 2001. - 384 с.
3. А. Ахо, Дж. Хопкрофт, Дж. Ульман. Построение и анализ
вычислительных алгоритмов. М.: Мир, 1979. - 536 с.
4. Гудман С., Хидетниеми С. Введение в разработку и
анализ алгоритмов. М.: Мир, 1981.
5. У. Дал, Э. Дейкстра, К. Хоор.
Структурное
программирование. М.: Мир, 1975. - 248 с.
6. М. Зелковиц и др. Принципы разработки программного
обеспечения. М.: Мир, 1982. - 368 с.
7. Зиглер К. Методы проектирования программных систем.
Мир, 1985.
8. К. Кормен, Ч. Лейзерсон, Р. Ривест.
Алгоритмы:
построение и анализ. М.: НЦНМО, 2001. - 960 с.
9. С. Лавров. Программирование. Математические основы,
средства, теория. СПб.: БХВ-Петербург, 2001. - 320 с.
10. Б. Мейер, К. Бодуен. Методы программирования. т1-2.
М.: Мир, 1982.
11. Структуры и базы данных. М., Мир. 1986.- 198 с.
12. Холл П.
Вычислительные
структуры.
Введение
в
нечисленное программирование. М.: Мир, 1978.
Составители доц. Бухараев Н.Р., ст.пр. Самитов Р.К.
Обсуждена на заседании кафедры теоретической кибернетики.
4
Download