Министерство образования и науки Российской Федерации

Южно-Уральский государственный университет

Кафедра системного программирования

 

 

РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ

Компьютерные науки

для студентов направления 010100 "Математика"

1-5 семестр

Распределение часов: лекции – 176 час., практические – 176 час.

Контрольные мероприятия: зачет – 1, 2, 4 семестр, экзамен – 3, 5 семестр

 

Составители:

Л.Б. Соколинский, д-р физ.-мат. наук, профессор

М.Л. Цымблер, канд. физ.-мат. наук, доцент

 

Целью дисциплины является введение в проблематику, связанную с обработкой информации с помощью компьютеров и освоение базовых алгоритмических и современных программных и аппаратных средств информационных технологий.

Курс охватывает следующие разделы компьютерных наук: языки программирования, методы трансляции, технология программирования, теория алгоритмов, операционные системы, системы баз данных.

1.       Введение в компьютерные науки

Понятие информации. Виды и свойства информации. Измерение информации. Понятия информационного процесса и информационной технологии. Эволюция информационных технологий. Понятия аппаратного, программного и алгоритмического обеспечения. Понятие архитектуры компьютера. Структура компьютера, принципы Фон-Неймана. Эволюция компьютеров. Классификация компьютеров.

2.       Языки программирования

Введение в проблематику языков программирования. Понятие языка программирования. Методы описания синтаксических конструкций языков программирования. Эволюция языков программирования. Классификация языков программирования. Понятие системы программирования.

Базовые концепции языков программирования. Лексемы. Константы. Типы данных. Эквивалентность и совместимость типов. Приоритет операций. Выражения. Совместимость по присваиванию. Операторы, реализующие следование, ветвление и повторение. Понятие структурного программирования. Польза и вред оператора безусловного перехода. Область действия декларации. Правила видимости. Локальные и глобальные переменные. Подпрограммы и др. средства обеспечения модульности. Передача параметров в подпрограмму. Понятие модульного программирования. Файловые типы данных. Ссылочные типы и указатели.

Парадигма в языке программирования. Понятие парадигмы. Парадигма объектно-ориентированного программирования. Понятия раннего и позднего связывания. Парадигмы функционального и логического программирования и примеры языков программирования, реализующих данные парадигмы.

Методы трансляции. Понятие языкового процессора. Интерпретаторы, компиляторы, ассемблеры. Упрощенная модель компилятора. Синтаксическое дерево. Классификация формальных языков Хомского. Лексический анализ. Синтаксический анализ. Генерация и оптимизация кода.

3.       Технология программирования

Основная проблема программирования. Понятия технологии программирования и жизненного цикла программного обеспечения. Основные проблемы, с которыми сталкиваются разработчики при создании программного обеспечения.

4.       Теория алгоритмов

Введение в теорию алгоритмов. Интуитивное понятие алгоритма. Свойства алгоритмов. Понятие исполнителя алгоритма. Точное понятие алгоритма. Машины Тьюринга. Нормальные алгорифмы Маркова. Понятие алгоритмической неразрешимости. Методы разработки алгоритмов.

Рекурсивные алгоритмы. Понятие рекурсии. Реализация механизма рекурсии. Рекурсия и итерация.

Структуры данных. Логическая и физическая структура данных. Классификация структур данных.

Списки. Последовательные списки: стек, очередь, дек. Связные списки: однонаправленный список, двунаправленный список, циклический список.

Бинарные деревья. Деревья и бинарные деревья. Представление дерева в виде бинарного дерева. Обход бинарного дерева. Алгоритмы уничтожения дерева, вставки информации в дерево, удаления вершины из дерева, слияния двух деревьев.

Графы. Способы представления графов: матрица смежностей, матрицы инцидентности и др. Алгоритмы основных операций на графах: просмотр графа, поиск вершины в графе, добавление вершин и дуг в граф, удаление вершин и дуг из графа, уничтожение графа.

Сложность алгоритмов и задач. Понятие сложности алгоритма. Основные методы анализа сложности. Разрешимые и неразрешимые задачи. Классы сложности P и NP. NP‑полнота.

Сортировка. Классификация алгоритмов сортировки.

Внутренняя сортировка. Основные алгоритмы сортировки: сортировка вставками, выбором, слиянием и обменами, быстрая сортировка. Оценки сложности алгоритмов внутренней сортировки.

Внешняя сортировка. Алгоритмы многофазного и каскадного слияния.

Поиск. Линейный и бинарный поиск. Хеш-таблицы. Метод цепочек и повторного хеширования для разрешения коллизий. Алгоритмы поиска в глубину и в ширину на графах.

5.       Системное и прикладное программное обеспечение

Классификация программного обеспечения. Обзор современного программного обеспечения.

Операционные системы. Понятие операционной системы. Функции операционной системы. Эволюция операционных систем. Подходы к построению операционных систем. Понятие процесса. Планирование процессов. Организация взаимодействия процессов. Синхронизация процессов, обработка тупиковых ситуаций. Страничная организация внешней памяти. Буферизация. Организация виртуальной памяти. Стратегии замещения страниц. Физическая организация внешней памяти. Методы выделения дискового пространства. Файловая подсистема. Фрагментация файлов. Организация ввода-вывода. Сетевые операционные системы. Защита данных в операционных системах.

Системы баз данных. Понятия базы данных, системы баз данных, СУБД. Структура системы баз данных. Функции СУБД. Понятие модели данных. Реляционная модель данных. Понятия домена, кортежа, отношения, ключа. Реляционная алгебра. Проектирование базы данных. Модель "Сущность-Связь". Нормальные формы. Язык SQL. Централизованная архитектура и архитектура "клиент-сервер" систем баз данных. Понятие транзакции. АСИД-транзакции. Безопасность и целостность данных. История развития СУБД, обзор современных СУБД.

ЛИТЕРАТУРА

К разделу "Введение в компьютерные науки"

1.      Акулов О.А., Медведев Н.В. Информатика: базовый курс. –М.: Омега, 2004. –551 с.

2.      Бройдо В.Л., Матвеев Л.А., Макарова Н.В. Информатика. –М.: Финансы и статистика, 2001. –768 с.

К разделу "Языки программирования"

3.      Ахо А., Ульман Д., Сети Р. Компиляторы: принципы, технологии, инструментарий. –М.: Вильямс, 2001. –768 с.

4.      Бен-Ари М. Языки программирования. Практический сравнительный анализ. –М.: Мир, 2000. –366 с.

5.      Себеста У. Основные концепции языков программирования. –М.: Вильямс, 2001. –672 с.

К разделу "Технология программирования"

6.      Брукс Ф. Мифический человеко-месяц, или Как создаются программные системы. –М.: Символ-Плюс, 2001. –304 с.

7.      Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. ‑М.: Мир, 1985. ‑281 с.

8.      Вельбицкий И.В. Технология программирования. ‑Киев: Технiка, 1984. ‑250 с.

9.      Соммервил И. Инженерия программного обеспечения. –М.: Вильямс, 2002. –624 с.

К разделу "Теория алгоритмов"

10.  Кнут Д.Э. Искусство программирования, т. 1. Основные алгоритмы, 3-е изд. ‑М.: Вильямс, 2000. ‑720 с.

11.  Кнут Д.Э. Искусство программирования, т. 3. Сортировка и поиск, 2-е изд. ‑М.: Вильямс, 2000. ‑832 с.

12.  Миков А.И., Королев Л.Н. Информатика. Введение в компьютерные науки. –М: Высшая школа, 2003. –341 с.

13.  Ульман Д., Хопкрофт Д., Ахо А. Структуры данных и алгоритмы. –М.: Вильямс, 2000. –384 с.

К разделу "Системное и прикладное программное обеспечение"

14.  Гордеев А.В. Операционные системы. Учебник для ВУЗов. –М. Питер, 2004. –416 с.

15.  Дейтел Г. Введение в операционные системы. В 2-х томах. –М.: Мир, 1987.

16.  Когаловский М.Р. Перспективные технологии информационных систем. –М.: ДМК Пресс, 2003. –284 с.

17. Корнеев В.В., Гареев А.Ф., Васютин С.В., Райх В.В. Базы данных. Интеллектуальная обработка информации. 2-е издание. –М.: Нолидж, 2001. –496 с.

18.  Ульман Д., Уидом Д. Введение в системы баз данных. –М.: ЛОРИ, 1999. –374 с.

 


Изменено 24.09.2016

© М.Л. Цымблер