Модуль 2. - Учебно-методические комплексы

advertisement
РОССИЙСКАЯ ФЕДЕРАЦИЯ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики, естественных наук и информационных технологий
Кафедра программного обеспечения
ГАЛКИН В.Ю.
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ
Учебно-методический комплекс.
Рабочая программа для студентов очной формы обучения,
направления 010500.62 «Математическое обеспечение и
администрирование информационных систем»,
профили подготовки «Технологии программирования»,
«Параллельное программирование»
Тюменский государственный университет
2011
Галкин В.Ю. Системное программирование. Учебно-методический
комплекс. Рабочая программа для студентов очной формы обучения, направления
010500.62 «Математическое обеспечение и администрирование информационных
систем»,
профили
подготовки
«Технологии
программирования»,
«Параллельное программирование». Тюмень. 2011, 15 стр.
Рабочая программа составлена в соответствии с требованиями ФГОС ВПО с
учетом рекомендаций и ПрООП ВПО по направлению и профилю подготовки.
Рабочая программа дисциплины опубликована на сайте ТюмГУ: Системное
программирование
[электронный
ресурс]
/
Режим
доступа:
http://www.umk3.utmn.ru., свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
Утверждено проректором по учебной работе Тюменского государственного
университета.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор.
© Тюменский государственный университет, 2011.
© Галкин В.Ю., 2011.
2
1. Пояснительная записка:
1.1.Цели и задачи дисциплины
Целью преподавания дисциплины "Системное программирование" является
развитие у обучаемых знаний умений и навыков в области выбора,
проектирования, реализации, оценки качества и анализа эффективности
программного обеспечения для решения задач в различных предметных областях.
В результате изучения дисциплины студент должен освоить основные понятия,
методы и технологии, необходимые для решения задач системного
программирования, уметь применять на практике методы и подходы
информационных технологий.
Задачи дисциплины:
 обучение студентов основным подходам к проектированию, разработке
и использованию системных программ;
 дать обучающимся знание технологий системного программирования с
использованием универсальных языков программирования;
 рассмотреть использование объектно-ориентированного подхода в
программировании системных программ;
 получение практических навыков использования технологию
обобщенного
программирования,
использования
стандартных
библиотек классов и шаблонов.
 ознакомить студентов с принципами функционирования и управления
специальными средствами WINDOWS–программирования (реализация
многозадачности и многопоточности, работа с файловой системой).
1.2. Место дисциплины в структуре ООП бакалавриата.
Дисциплина «Системное программирование» входит в вариативную часть
профессионального
цикла
дисциплин
Федерального
государственного
образовательного стандарта высшего профессионального образования (ФГОС
ВПО) по направлению «Математическое обеспечение и администрирование
информационных систем».
Для изучения и освоения дисциплины нужны первоначальные знания из
курсов Информатика, Основы программирования, Технологии программирования,
Структуры и алгоритмы компьютерной обработки данных, Архитектура
вычислительных систем и компьютерных сетей, Объектно-ориентированное
программирование.
3
Знания и умения, практические навыки, приобретенные студентами в
результате изучения дисциплины, будут использоваться при изучении курсов
«Проблемно-ориентированные программные комплексы», «Технологии разработки
программного обеспечения», «Алгоритмы и технологии параллельного
программирования». Кроме того, студент может использовать приобретённые
компетенции при выполнении курсовых и дипломных работ.
1.3. Компетенции выпускника ООП бакалавриата, формируемые в
результате освоения данной ООП ВПО.
В результате изучения дисциплины “системное программирование” цикла
профессиональных дисциплин вариативной части по направлению подготовки
010500.62 “Математическое обеспечение и администрирование информационных
систем” с квалификацией (степенью) “бакалавр” в соответствии с целями основной
образовательной программы и задачами профессиональной деятельности,
указанными в ФГОС ВПО, выпускник должен обладать следующими
компетенциями:
Общекультурными компетенциями:
 способность учиться (ОК 7);







Профессиональными компетенциями:
демонстрировать знание принципов обеспечения условий безопасности
жизнедеятельности при эксплуатации аппаратуры и систем различного
назначения (ПК 22);
знать проблемы и направления развития технологий программирования
(ПК 23);
знать основные методы и средства автоматизации проектирования,
производства, испытаний и оценки качества программного обеспечения
(ПК 24);
знать направления развития компьютеров с традиционной (нетрадиционной)
архитектурой; тенденции развития функций и архитектур проблемноориентированных программных систем и комплексов (ПК 25);
знать проблемы и тенденции развития рынка программного обеспечения
(ПК 26);
знать основные концептуальные положения функционального, логического,
объектно-ориентированного и визуального направлений программирования,
методы, способы и средства разработки программ в рамках этих направлений
(ПК 27);
знать методы проектирования и производства программного продукта,
принципы построения, структуры и приемы работы с инструментальными
средствами, поддерживающими создание программного обеспечения (ПО)
(ПК 28);
4
 знать методы организации работы в коллективах разработчиков ПО,
направления развития методов и программных средств коллективной
разработки ПО (ПК 29);
 знать архитектуру, алгоритмы функционирования систем реального времени и
методы проектирования их программного обеспечения (ПК 30);
 иметь навыки использования современных системных программных средств:
операционных систем, операционных и сетевых
оболочек, сервисных
программ (ПК 31);
 иметь навыки использования метода системного моделирования при
исследовании и проектировании программных систем (ПК 32);
 иметь навыки разработки моделирующих алгоритмов и реализации их на базе
языков и пакетов прикладных программ моделирования (ПК 33).
 иметь навыки использования основных моделей информационных технологий
и способов их применения для решения задач в предметных областях (ПК 34);
 иметь навыки выбора архитектуры и комплексирования современных
компьютеров, систем, комплексов и сетей системного администрирования
(ПК 35);
 иметь навыки выбора, проектирования, реализации, оценки качества и анализа
эффективности программного обеспечения для решения задач в различных
предметных областях (ПК 36).
В результате освоения дисциплины обучающийся должен:
 Знать: типы проблемно-ориентированных комплексов, методы и технологии их
создания, принципы использования объектно-ориентированных технологий и
стандартных библиотек классов при создании проблемно-ориентированных
программных комплексов.
 Уметь: использовать универсальные языки программирования при создании
системных программ, применять стандартные библиотеки классов и шаблонов
при их разработке, тестировать и отлаживать программное обеспечение.
 Владеть: навыками применения технологий объектно-ориентированного и
обобщенного программирования при создании системных программ,
тестирования и отладки программного обеспечения, использования
стандартных библиотек шаблонов и классов.
5
2. Структура и трудоемкость дисциплины.
Вид учебной работы
Всего
часов
108
36
36
Аудиторные занятия (всего)
В том числе:
Лекции
Лабораторные работы (ЛР)
Самостоятельная работа (всего)
36
Контрольные работы
Вид промежуточной аттестации (зачет, экзамен)
Общая трудоемкость 108 час., 3 зач. ед.
3.
Таблица 1.
Семестры
5
108
36
36
36
+
зачет
Тематический план.
Таблица 2.
Тематический план
1. Т1. Общая характеристика
языка С++, Достоинства языка
как основного языка
системного
программирования.
Самостоятельная
работа*
2
Модуль 1.
Использование языка
программирования С++ в
системном программировании
Лабораторные
занятия*
1
Итого Из них в
часов интеракт
по теме
ивной
форме
Лекции*
Тема
Виды учебной
работы и
самостоятельная
работа, в час.
недели семестра
№
3
4
5
6
7
1
2
2
4
8
6
8
Итого
количество
баллов
9
0-3
2. Т2. Типы данных, операторы и
управляющие конструкции.
Массивы, указатели и
структуры
4. Т3. Использование функций
стандартной библиотеки (вводвывод, работа с динамической
памятью и др.)
Всего
Модуль 2.
Библиотека STL
1. Т1. Назначение и область
применения библиотеки STL.
Структура STL. Простые
примеры использования STL.
2. Т2. Шаблоны контейнеров в
STL
3. Т3. Шаблоны алгоритмов в
STL
2
2
2
2
6
2
0-7
3-4
4
4
2
10
2
0-10
8
8
4
24
4
0-20
5-6
4
4
4
12
2
0-10
7-9
4
4
4
12
4
0-10
10-12
4
4
4
12
4
0-10
12
12
12
36
10
0-30
2
0-15
Всего
Модуль 3.
Системное программирование
1. Т1. Понятие и виды
системного
программирования. Понятия
процесса и потока. Обзор API
Win32
13-15
4
4
4
2. Т2. Реализация
многозадачности и
многопоточности. Объекты
синхронизации в API Win32
16-17
6
6
6
18
4
0-15
18
6
6
6
18
4
0-20
16
16
16
48
10
0-50
36
36
36
108
3. Т3. Виртуальная память.
Технология отображения
файлов в память.
Всего
Итого (часов, баллов) за
семестр:
Итого в интерактивной форме
Итого часов
36
7
36
36
12
108
0–100
24
24
Т1
Т2
Т3
Всего
0-1
0-2
0-4
0-7
0-2
0-2
0-4
Т1
Т2
Т3
Всего
0-6
0-4
0-4
0-14
0-2
0-2
0-2
0-6
Т1
Т2
Т3
Всего
Итого за 5
семестр
0-6
0-6
0-10
0-21
0-42
0-3
0-3
0-4
0-11
0-21
Модуль 1
0-1
0-1
0-1
0-3
Модуль 2
0-1
0-1
0-2
0-4
Модуль 3
0-3
0-3
0-3
0-9
0-16
0-1
0-2
0-3
0-6
0-3
0-7
0-10
0-20
0-1
0-3
0-2
0-6
0-10
0-10
0-10
0-30
0-3
0-3
0-3
0-9
0-21
0-15
0-15
0-20
0-50
0 – 100
Планирование самостоятельной работы студентов
По всем темам дисциплины предусмотрены следующие
самостоятельной работы студентов.
Обязательные:
 конспектирование материала на лекционных занятиях;
 выполнение заданий лабораторных работ;
 выполнение тестовых и контрольных работ.
Дополнительные:
 написание дополнительных программ;
 изучение дополнительной литературы.
8
Итого количество баллов
Информационные
системы и
технологии
электронный
практикумы
контрольная
работа
№ темы
лабораторная
работа
Письменные работы
Технические
формы
контроля
программы
компьютерного
тестирования
Таблица 3.
Виды и формы оценочных средств в период текущего контроля
виды
Кроме того, по отдельным темам предусмотрены специальные виды
самостоятельной работы студентов:
Модуль 1. Использование языка программирования С++ в системном
программировании.
Т2: Работа с учебной литературой.
Т3: Работа с учебной литературой. Изучение примеров работы с массивами и
указателями.
Модуль 2. Библиотека STL
Т1: Работа с источниками в Internet. Обзор практики использования библиотеки.
Т2: Работа с учебной литературой. Изучение алгоритмов построения
контейнеров.
Т3: Работа с учебной литературой. Изучение алгоритмов построения
контейнеров
Модуль 3. Системное программирование.
Т1: Работа с учебной литературой. Исследование процессов и потоков на
практических примерах.
Т2: Работа с учебной литературой. Накопление опыта разработки
многопоточных и многозадачных программных решений.
Т3: Работа с источниками в Internet. Изучение технологии работы с виртуальной
памятью
4.
Разделы дисциплины и междисциплинарные связи с обеспечиваемыми
(последующими) дисциплинами
Таблица 4.
Темы дисциплины, необходимые для изучения обеспечиваемых
(последующих) дисциплин
№
п/п
1.
2.
3
5.
Наименование обеспечиваемых
(последующих) дисциплин
Модули
«Проблемно-ориентированные
программные комплексы»
«Технологии разработки программного
обеспечения»
«Алгоритмы и технологии
параллельного программирования»
Содержание дисциплины.
9
1
2
3
T1, T2, T3
T1, T2, T3
T1, T2
T2, T3
T1, T2
T2, T3
T1, T2, T3
T1, T2, T3
Модуль 1. Использования языка программирования С++ в системном
программировании
Тема 1. Общая характеристика языка С++, Достоинства языка как
основного языка системного программирования. Рассмотрение основных
свойств языка С++. Обзор известных системный продуктов написанных на языке
Си.
Тема 2. Типы данных, операторы и управляющие. Основные встроенные
типы данных языка С++. Операторы их назначение, свойства, приоритет и
примеры использования. Особенности управляющих конструкций языка С++.
Одномерные и двумерные массивы. Указатели, адресная арифметика, операции * и
&. Связь указателей и массивов, массивы указателей и указатели на массивы.
Структуры, описание и обращение к полям, указатели на структуры. Ссылки.
Тема 3. Использование функций стандартной библиотеки. Классификация
функций
стандартной
библиотеки.
Функции
ввода-вывода,
потоки,
форматированный ввод-вывод. Работа с текстовыми и бинарными файлами.
Функции работа с динамической памятью. Обработка строк и блоков памяти.
Модуль 2. Библиотека STL
Тема 1. Назначение и область применения библиотеки. Основные
особенности и характерные черты библиотеки STL. Обзор функциональных
возможностей и основных областей применения библиотеки. Рассмотрение групп
шаблонов библиотеки с краткой характеристикой назначения и возможностей
каждой из групп.
Тема 2. Шаблоны контейнеров в STL. Назначение и область применения
контейнеров библиотеки STL. Принципы построения шаблонов контейнеров.
Особенности применения итераторов и распределения памяти. Основные
контейнеры библиотеки STL (включая динамический массив, строка, множество,
хеш-таблица, очередь, стек и др.)
Тема 3. Шаблоны алгоритмов в STL. Назначение и область применения
алгоритмов библиотеки STL. Классификация алгоритмов. Принципы построения
использования алгоритмов. Особенности применения итераторов и распределения
памяти. Основные алгоритмы библиотеки STL.
Модуль 3. Системное программирование
Тема 1. Понятие и виды системного программирования.
Понятия
процесса и потока. Обзор API Win32. Изучение понятий процесс и поток.
Особенности распределения памяти для процессов и потоков. Создание
разделяемых объектов.
10
Тема 2. Реализация многозадачности и многопоточности. Объекты
синхронизации в API Win32. Обзор задач, при решении которых разумно
использовать многопоточное или многозадачное программирование. Сходство и
различие этих технологий. Способы обмена информацией между потоками и
процессами.
Тема 3. Виртуальная память. Технология отображения файлов в память.
Организация виртуальной памяти. Отображение виртуальной памяти в
физическую. Работа с файловой системой и обмен данными между процессами
посредством технологии отображения файла в память.
6. Планы семинарских занятий.
Не планируется.
7.
Темы лабораторных работ (Лабораторный практикум).
Задания лабораторного практикума выполняются с использованием системы
программирования Microsoft Visual Studio.
Тема 1.1. Рассмотрение примеров проблемно-ориентированных программных
комплексов и классификация программных комплексов.
Тема 1.2. Знакомство со специализированными инструментальными
средствами и универсальными языками программирования, используемыми для
разработки проблемно-ориентированных программных комплексов.
Тема 1.3. Разработка простейших программ на языке С++ демонстрирующих
использование основных встроенных типов данных и управляющих конструкций
языка. Разработка консольных приложений использующих одномерные и
двумерные статические массивы.
Демонстрация работы с указателями и
структурами данных на примере простейших учебных программ обработки
структурированной информации.
Тема 2.1. Создание простых пользовательских классов для иллюстрации
механизма инкапсуляции и закрепления синтаксиса описания класса. Написание
интерактивной программы демонстрирующей работу с объектами созданного
класса.
Тема 2.2. Создание набора пользовательских классов с применение механизма
наследования. Демонстрация особенностей множественного наследования.
Написание интерактивной программы, использующей созданные классы, для
решения прикладной задачи.
Тема 2.3. Разработка набора пользовательских классов с применение
виртуальных функций и механизма полиморфизма. Написание интерактивной
программы, использующей созданные классы, для решения прикладной задачи.
11
Тема 3.1. Разработка программы для демонстрации возможностей
использования шаблонов контейнеров при разработке прикладного программного
обеспечения. Сравнение эффективности использования различных шаблонов
контейнеров в зависимости от типа обрабатываемых данных и используемых
алгоритмов обработки.
Тема 3.2. Создание комплексной программы для демонстрации возможностей
использования шаблонов потоков при разработке проблемно-ориентированных
программных комплексов.
Тема 3.3. Создание комплексной программы для демонстрации возможностей
использования шаблонов потоков при разработке проблемно-ориентированных
программных комплексов. Выработка рекомендаций по выбору шаблонов в
зависимости от типа обрабатываемых данных и используемых алгоритмов
обработки.
8.
Примерная тематика курсовых работ
Не планируются.
9. Учебно-методическое обеспечение самостоятельной работы студентов.
Оценочные средства для текущего контроля успеваемости, промежуточной
аттестации по итогам освоения дисциплины (модуля).
Контроль качества подготовки осуществляется путем проверки
теоретических знаний и практических навыков с использованием
a) Текущей аттестации:
проверка промежуточных контрольных работ и прием лабораторных
работ.
b) Промежуточной аттестации:
Тестирование по разделам дисциплины.
Зачёт в конце 5-го семестра (к зачёту допускаются студенты после
сдачи всех лабораторных работ, решения всех задач контрольных работ
и выполнения тестовых заданий, предусмотренных содержанием
учебных Модулей 1-5).
Текущий и промежуточный контроль освоения и усвоения материала
дисциплины осуществляется в рамках рейтинговой (100-бальной) системы оценок.
Пример тестового задания по теме 1.2: «Типы данных, операторы и
управляющие»:
Какой класс является абстрактным?
1. Имеющий виртуальные методы.
2*. Имеющий чисто виртуальные методы.
3. Не имеющий полей.
4. Не имеющий методов.
12
Пример лабораторного задания по теме 3.1 «Разработка собственных
шаблонов функций и типов».
Шаблоны и исключительные ситуации
I . Спроектировать и реализовать шаблон для одного из следующих
контейнеров:
1. Дерево поиска.
2. Стек (на списке).
3. Список.
4. Динамический массив (массив с динамическим изменением количества
элементов).
5. Ассоциативный массив (хеш-таблица);
6. Очередь (на списке).
7. Множество.
8. Строка.
Параметрами шаблонов является типы элементов контейнера. Корректно
определить все необходимые методы контейнеров (вставка, удаление, поиск и т.д.)
набор методов существенно зависит от типа контейнера. Реализация шаблонов
должна быть достаточно универсальна, например, необходимо учесть, что
шаблоны можно копировать передавать как параметры функций и т.д. Особое
внимание уделить корректному выделению и освобождению памяти.
II . Реализовать корректную обработку ошибок (переполнение, неверные
параметры, нехватка памяти и т.д.) с использованием исключительных ситуаций.
III . Написать программу для демонстрации работы контейнера с двумя
различными типами.
Пример задания контрольной работы в 5 семестре
Дан текстовый файл. В каждой строке файла содержится информация,
соответствующая вашему заданию. Например, если в задании говорится о
значениях «Фамилия», «Имя», «Возраст», то строка во входном файле может иметь
вид: Иванов Андрей 25
1. Загрузить данные из входного файла в память. Для хранения информации
использовать массив указателей на структуру.
2. Выполнить задание соответствующее вашему варианту.
3. Вывести полученный результат в выходной текстовый файл.
Данные:
Фамилия, дата рождения
Задание:
Найти список однофамильцев. Однофамильцами считаются люди с
одинаковой фамилией и разной датой рождения. Должен быть получен список
фамилий, с указанием количества однофамильцев с этой фамилией. Список
отсортировать по алфавиту.
13
10. Образовательные технологии
Сочетание традиционных образовательных технологий в форме лекций,
компьютерных лабораторных работ и проведение контрольных мероприятий
(контрольных работ, промежуточного тестирования, экзамена).
аудиторные занятия:
лекционные и компьютерные лабораторные занятия; на
лабораторных занятиях контроль осуществляется при сдаче
лабораторного задания в виде программы (на одном из
используемых языков программирования) и пояснительной
записки к задаче. В течение семестров студенты выполняют
задачи, указанные преподавателем к каждому занятию.
активные и интерактивные формы
компьютерное моделирование и анализ результатов при
выполнении лабораторных работ
внеаудиторные занятия:
выполнение дополнительных заданий разного типа и уровня
сложности при выполнении лабораторных работ, подготовка к
аудиторным занятиям, изучение отдельных тем и вопросов
учебной дисциплины в соответствии с учебно-тематическим
планом, составлении конспектов. Подготовка индивидуальных
заданий: выполнение самостоятельных и контрольных работ,
подготовка ко всем видам контрольных испытаний: текущему
контролю
успеваемости
и
промежуточной
аттестации;
индивидуальные консультации.
11. Учебно-методическое и информационное обеспечение дисциплины.
Основная литература:
1. Грекул В. И., Денищенко Г. Н., Коровкина Н. Л. Проектирование
информационных систем / Москва: Бином, 2008. – 304 с.
2. Шильд Г. Полный справочник по C++/Москва: Вильямс, 2007. – 800 c.
3. Страуструп Б. Язык программирования C++/Москва: Бином, 2011. – 1136 c.
4. Захаров А.А., Захарова И.Г. Языки и среды программирования. Учебное
пособие. Тюмень: Изд. ТюмГУ, 2006. – 288 с.
5. Иванова Г. С. Объектно-ориентированное программирование : учеб. для
студ. / Москва: Изд-во МГТУ им. Н. Э. Баумана, 2003 .-368 c.
Дополнительная литература:
6. Костюкова Н. И. Язык Си и особенности работы с ним : учеб. пособие/ Москва:
Интернет-Университет
Информационных
Технологий:
БИНОМ, 2006 .- 207 с.
7. Павловская Т.А. С/C++. Программирование на языке высокого уровня. /
Т.А. Павловская. - СПб.: Питер, 2002. - 464 с.: ил.
14
8. Павловская Т.А, Щупак Ю. С/С++. Объектно-ориентированное
программирование: Практикум. – СПб.: Питер, 2004 – 265 с.
9. Седжвик, Роберт, Фундаментальные алгоритмы на С++ / Санкт-Петербург :
ДиаСофтЮП. – 2002.-688 c.
12. Технические средства и материально-техническое обеспечение
дисциплины (модуля).
При освоении дисциплины для проведения лекционных занятий требуются
учебные аудитории, оснащённые мультимедийным оборудованием. Для
выполнения лабораторных работ необходимы классы персональных компьютеров с
набором базового программного обеспечения разработчика – системы
программирования на языке С++.
15
Download