Министерство образования и науки Российской Федерации Учебно-методическое объединение вузов по образованию в области информационной безопасности сборник примерных программ учебных дисциплин по направлению подготовки (специальности)
Вид материала | Документы |
- Министерство образования и науки Российской Федерации Учебно-методическое, 3299.35kb.
- Ступности (государственной, воинской, транснациональной и иной) мы будем, 86.46kb.
- Лекция по теме № Условия конкретного преступления, 298.33kb.
- Расписание занятий на цикле сертификационного усовершенствования для интернов, 88.88kb.
- Министерство образования Российской Федерации Министерство путей сообщения Российской, 653.58kb.
- Министерство образования Российской Федерации Министерство путей сообщения Российской, 657.68kb.
- Общая характеристика работы Актуальность темы, 398.26kb.
- Рекомендации по организации профилактической работы, направленной на предупреждение, 1352.37kb.
- История исторической науки, 496.22kb.
- Министерство здравоохранения и социального развития Российской Федерации Государственное, 408.11kb.
Разработчики: УМО ИБ
УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЪЕДИНЕНИЕ ПО ОБРАЗОВАНИЮ
В ОБЛАСТИ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
ПРОЕКТ
ПРИМЕРНАЯ УЧЕБНАЯ ПРОГРАММА
Наименование дисциплины
«Языки программирования»
Рекомендуется для направления подготовки (специальности)
090302 Информационная безопасность телекоммуникационных систем
Квалификация (степень) выпускника
«Специалист»
МОСКВА 2011
1. Цели и задачи дисциплины
Целью изучения дисциплины «Языки программирования» является подготовка специалистов к деятельности, связанной с разработкой программного обеспечения для решения профессиональных задач.
Задачи дисциплины:
- ознакомление с теоретическими основами программирования;
- изучение основ алгоритмизации;
- изучение средств описания данных и средств описания действий языков программирования;
- овладение навыками программирования;
- освоение современных сред создания программных продуктов.
2. Место дисциплины в структуре ООП
Дисциплина «Языки программирования» относится к числу дисциплин базовой части математического и естественно-научного цикла.
Для успешного усвоения данной дисциплины необходимо, чтобы студент владел знаниями, умениями и навыками, сформированными в процессе изучения дисциплин:
«Математический анализ» – владеть навыками использования методов математического анализа к решению прикладных задач;
«Алгебра и геометрия» – владеть методами линейной алгебры;
«Информатика» – уметь пользоваться сетевыми средствами для обмена данными, в том числе с использованием глобальной информационной сети Интернет; владеть навыками работы с офисными приложениями;
«Английский язык» – владеть иностранным языком в объеме, необходимом для получения и изложения информации по профессиональной тематике.
Дисциплина «Языки программирования» является предшествующей для изучения следующих базовых дисциплин: «Методы программирования», «Информационные технологии», «Программно-аппаратные средства обеспечения информационной безопасности».
3. Требования к результатам освоения дисциплины
Процесс изучения дисциплины направлен на формирование следующих компетенций:
способность к логически-правильному мышлению, обобщению, анализу, критическому осмыслению информации, систематизации, прогнозированию, постановке исследовательских задач и выбору путей их решения на основании принципов научного познания (ОК-9);
способность применять математический аппарат, в том числе с использованием вычислительной техники, для решения профессиональных задач (ПК-2);
способность использовать языки, системы и инструментальные средства программирования в профессиональной деятельности (ПК-4);
способность применять основные методы, способы и средства получения, хранения, переработки и передачи информации (ПК-10);
способность применять современные методы исследования с использованием компьютерной техники (ПК-12).
В результате изучения дисциплины студент должен
знать:
- области и особенности применения языков программирования высокого уровня;
- язык программирования высокого уровня (объектно-ориентированное программирование);
уметь:
- работать с интегрированной средой разработки программного обеспечения;
- реализовывать на языке высокого уровня алгоритмы решения профессиональных задач, в том числе задач обработки битовых потоков;
владеть:
- навыками разработки, документирования, тестирования и отладки программ.
4. Объём дисциплины и виды учебной работы
Вид учебной работы | Всего часов | Семестры | ||
2 | 3 | |||
Аудиторные занятия (всего) | 106 | 52 | 54 | |
В том числе: | | | | |
Лекции (Л) | 52 | 26 | 26 | |
Практические занятия (ПЗ) | 50 | 24 | 26 | |
Семинары (С) | - | - | - | |
Лабораторные работы (ЛР) | - | - | - | |
Контрольные работы (КР) | 4 | 2 | 2 | |
Самостоятельная работа (всего) | 108 | 54 | 54 | |
В том числе: | | | | |
Курсовой проект (работа) | - | - | - | |
Расчётно-графические работы | - | - | - | |
Коллоквиум | - | - | - | |
Реферат | - | - | - | |
Домашнее задание | 40 | 20 | 20 | |
Другие виды самостоятельной работы (подготовка к занятиям, зачету) | 68 | 34 | 34 | |
Вид промежуточной аттестации и его трудоемкость | 38 | Зачет (2) | Экзамен (36) | |
Общая трудоёмкость | часов | 252 | 108 | 144 |
зачетных единиц | 7 | 3 | 4 |
5. Содержание дисциплины
5.1. Содержание разделов (тем) дисциплины
Раздел 1. Основы языков программирования высокого уровня. Язык С/С++
Тема 1. Общая характеристика языков программирования
Начальные сведения о языках программирования. Роль языков программирования. Характеристики и свойства языков программирования. История развития языков программирования. Поколения языков. Основные элементы языков программирования. Инструментальные средства разработки программ на языках высокого уровня в различных операционных системах.
Тема 2. Базовые понятия языка
Алфавит, идентификаторы, служебные слова, константы, комментарии. Структура программы. Этапы создания исполняемой программы. Типизация языка. Определение типа. Контроль типов. Уровни типизации. Эквивалентность типов. Простые типы данных. Переменные. Классы памяти. Операции, выражения, операторы.
Тема 3. Указатели, ссылки, массивы
Указатели. Ссылки. Одномерные и многомерные массивы. Строки. Связь указателей и массивов. Динамические массивы.
Тема 4. Функции
Определение, описание и вызов функции. Способы передачи параметров в функцию. Рекурсивные функции. Подставляемые функции. Перегрузка функций. Шаблоны функций. Указатели на функции. Аргументы по умолчанию. Передача массивов в функции.
Тема 5. Типы данных, определяемые пользователем
Структуры, объединения, битовые поля. Переименование типов. Перечисления.
Тема 6. Ввод –вывод. Работа с файлами
Ввод-вывод данных. Функции для работы с файлами и директориями.
Тема 7. Препроцессорные средства
Стадии препроцессорной обработки. Директивы. Макроподстановки. Условная компиляция.
Тема 8. Операции с разрядами
Поразрядные логические операции и операции сдвига, области их применения. Использование битовых полей. Битовые поля и поразрядные операции.
Раздел 2. Введение в объектно-ориентированное программирование. Язык С++
Тема 9. Основные принципы объектно-ориентированного программирования
Основные понятия объектно-ориентированного программирования (ООП). Отличия ООП от процедурного программирования. Принцип инкапсуляции. Понятия наследования и полиморфизма.
Тема 10. Классы и объекты
Конструкторы и деструкторы. Дружественные классы и функции. Статические элементы класса. Константные методы и объекты. Указатель this. Указатели и ссылки на объекты, массивы объектов.
Раздел 3. Основы объектно-ориентированного программирования. Язык С++
Тема 11. Перегрузка операций
Концепция и основные правила перегрузки операций. Перегрузка операций методами класса, дружественными и обычными функциями. Перегрузка различных операций.
Тема 12. Наследование
Механизм наследования. Базовые и производные классы. Типы наследования. Правила наследования различных методов. Множественное наследование.
Тема 13. Виртуальные функции и полиморфизм
Полиморфизм. Виртуальные и чистые виртуальные функции. Абстрактные классы. Статическое и динамическое связывание. Механизм динамического связывания. Виртуальные деструкторы.
Тема 14. Шаблоны классов
Определение шаблона класса. Использование шаблона класса. Правила описания шаблонов. Специализация шаблона класса.
Тема 15. Потоковый ввод-вывод
Иерархия классов потокового ввода-вывода. Принципы организация потоков. Стандартные потоки. Работа с файлами. Форматирование ввода-вывода. Строковые потоки. Перегрузка операций ввода-вывода.
Тема 16. Обработка исключительных ситуаций
Принципы обработки исключений. Классы и исключения. Стандартные исключения.
Тема 17. Стандартная библиотека шаблонов (STL)
Общие принципы функционирования STL. Контейнеры. Итераторы. Алгоритмы. Функторы.
Тема 18. Приложения с графическим интерфейсом пользователя
Принципы программирования для операционной системы на языке С/С++ с применением API. Взаимодействие операционной системы и приложений. Создание графического интерфейса пользователя.
5.2. Разделы (темы) дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами
№ п/п | Наименование обеспечиваемых (последующих) дисциплин | № разделов (тем) данной дисциплины, необходимых для изучения обеспечиваемых (последующих) дисциплин | ||
| 1 | 2 | 3 | |
1. | Методы программирования | + | + | + |
2. | Информационные технологии | + | + | + |
5.3. Разделы (темы) дисциплины и виды занятий
№ п/п | Наименование раздела (темы) дисциплины | Лекц., час | Практ. зан., час | Лаб. раб., час | Семин., час | СР, час | Всего, час |
1 | Основы языков программирования высокого уровня. Язык С/С++ | 20 | 20 | - | - | 46 | 86 |
2 | Введение в объектно-ориентированное программирование. Язык С++ | 6 | 4 | - | - | 8 | 18 |
3 | Основы объектно-ориентированного программирования. Язык С++ | 26 | 26 | - | - | 54 | 106 |
6. Лабораторный практикум
Лабораторный практикум не предусмотрен
7. Примерная тематика курсовых проектов (работ)
Курсовой проект (работа) не предусмотрен.
8. Учебно-методическое и информационное обеспечение дисциплины
8.1. Основная литература
- Лаптев В.В. С++. Объектно-ориентированное программирование: Учебное пособие. – СПб.: Питер, 2008. – 464 с.
- Павловская Т.А. С/С++. Программирование на языке высокого уровня. Учебник. – СПб.: Питер, 2010. – 460 с.
- Подбельский В. В., Фомин С. С. Программирование на языке Си. Учебное пособие для ВУЗов : – М. : Финансы и статистика, 2009. – 600 с.
- Подбельский В.В. Стандартный Си++. Учебное пособие. – М.: Финансы и статистика, 2008. – 688 с.
- Шилдт Г. C++ : базовый курс. : Пер. с англ. – М.: Издательский дом «Вильямс», 2010. – 624 с.: ил.
8.2. Дополнительная литература
- Гриффитс А. GCC. Настольная книга пользователей, программистов и системных администраторов. – К.: ООО «ТИД ДС», 2004. – 624 с.
- Дейтел Х.М., Дейтел П.Дж. Как программировать на С++. – 4-е изд. М.: Бином-Пресс, 2010. – 1456 с.
- Лафоре Р. Объектно-ориентированное программирование в C++. : Пер. с англ. – 4-е изд. – СПб. : Издательство «Питер», 2004. – 924 с.
- Мюссер Д.Р., Дердж Ж.Дж., Сейни А. С++ и STL: справочное руководство. – М. : Издательский дом «Вильямс», 2010. – 432 с.
- Павловская Т.А., Щупак Ю.А. С/С++. Структурное и объектно-ориентированное программирование. Практикум. – СПб.: Питер, 2010. – 352 с.
- Подбельский В. В. Практикум по программированию на языке Си. – М.: Финансы и статистика, 2004. – 575 с.
- Прата С. Язык программирования С. Лекции и упражнения.- М. : Издательский дом Вильямс, 2006. – 960 с.
- Себеста Р.У. Основные концепции языков программирования – М. : Издательский дом Вильямс, 2001. – 668 с.
- Страуструп Б. Программирование: принципы и практика использования C++ : Пер. с англ. – М. : Издательский дом «Вильямс», 2010. – 1248 с.: ил.
- Хортон А. Visual C++ 2010. Полный курс. – М. : Диалектика, 2010. – 1216 с.
8.3. Программное обеспечение
- Операционные системы: семейства Windows (не ниже Windows XP), Linux.
- Среды программирования, например, Microsoft Visual C++ Express Edition, MonoDevelop или иные; компилятор gcc (для ОС Linux), редактор Emacs или иной; справочная система Microsoft Development Network или иная.
8.4. Базы данных, информационно-справочные и поисковые системы
Не требуется.
9. Материально-техническое обеспечение дисциплины
Для проведения всех видов занятий необходимо презентационное оборудование (мультимедийный проектор, ноутбук, экран) – 1 комплект.
Для проведения практических занятий необходимо наличие компьютерных классов оборудованных современной вычислительной техникой из расчета одно рабочее место на одного обучаемого.
Для эффективной работы в рамках дисциплины рекомендуется иметь возможность работать с исходными текстами программ, сохраненными на съемных накопителях информации.
10. Методические рекомендации по организации изучения дисциплины
Цель обучения достигается сочетанием применения традиционных и инновационных педагогических технологий.
При проведении лекционных занятий целесообразно широко применять такую форму как лекция-визуализация, сопровождая изложение теоретического материала презентациями, при этом желательно заблаговременно обеспечить студентов раздаточным материалом.
Основной упор в методике проведения практических занятий должен быть сделан на отработке и закреплении учебного материала в процессе выполнения заданий с применением ПЭВМ в компьютерном классе. Особое внимание при этом должно быть уделено применению элементов проблемного и контекстного обучения, опережающей самостоятельной работе студентов.
Для эффективной работы студентов на практических занятиях целесообразно формировать подгруппы численностью не более 12 человек.
При изучении дисциплины студенты должны выполнить два домашних задания (по одному в семестре), призванных обучить студентов решению конкретной практической задачи, начиная с ее постановки и формализации, последующих алгоритмизации и реализации на языке программирования, и заканчивая анализом полученных результатов и оформлением необходимой документации.
Текущий контроль усвоения знаний студентами осуществляется путём выполнения двух контрольных работ (одна во втором и одна в третьем семестрах), подготовки и сдачи отчётов по итогам выполнения долгосрочных домашних заданий, проверки выполнения текущих заданий, опросов на практических занятиях. По решению вуза возможно проведение отдельных форм текущего контроля в виде тестирования.
Примерным учебным планом на изучение дисциплины отводятся два (второй и третий) семестра. В конце второго семестра предусматривается в качестве итогового контроля зачёт, а в конце третьего – итоговая отчетность по дисциплине – экзамен. Целесообразно осуществлять проведение экзамена в форме устного опроса по билетам, а зачёта – как в форме устного опроса по билетам, так и в форме тестирования.
В соответствии со спецификой ВУЗа в процессе преподавании дисциплины методически целесообразно в каждом разделе выделить наиболее важные темы и рассмотреть их на конкретных примерах.
Примерный перечень тем домашних заданий:
Перегруженные и шаблонные функции различной обработки одномерных и двумерных массивов, хранящихся в файлах.
Средствами языка С/С++ провести моделирование некоторой предметной области с объектами – структурами и операциями над ними в виде функций. Разработать интерфейс – диалог в виде меню.
Реализация в виде шаблонного класса динамической структуры данных (например, линейный список, стек, очередь, дек) и работа с объектами этого класса.
Создать приложение, реализующее иерархию наследуемых классов (для некоторой предметной области) и использующее механизм виртуальных функций.
Провести моделирование заданной предметной области и обработку данных с использованием STL.
Примерный перечень вопросов для контрольных работ:
Реализация на языке С/С++ обработки данных с использованием функций.
Реализация абстрактного типа данных на объектно-ориентированном языке программирования С++.
Примерный перечень вопросов для опросов на практических занятиях:
Какие функции используются в языке Си для работы с динамической памятью?
В чем заключаются отличия макросов от функций?
Сколько конструкторов и деструкторов может быть в классе? Допускается ли их перегрузка?
Сформулируйте основные правила, используемые при перегрузке функций.
Чем открытое наследование классов отличается от закрытого и защищенного?
Какие типы параметров шаблона класса допускаются?
Перечислите средства объектно-ориентированного языка, используемые для форматирования при вводе-выводе.
С помощью какого механизма в С++ реализуется динамический полиморфизм?