Кафедра Автономных Информационных и Управляющих Систем "утверждаю" Декан автф в. В. Губарев " " 2006 г рабочая программа
Вид материала | Рабочая программа |
- Факультет Информационных Систем и Технологий Кафедра вычислительной техники утверждаю, 107.03kb.
- Томский Политехнический Университет Утверждаю Декан автф ю. С. Мельников 2000 г. Системное, 63.53kb.
- Рабочая программа по дисциплине «Статистическая теория помехоустойчивости автономных, 253.65kb.
- Рабочая программа учебной дисциплины «Схемотехническое проектирование автономных информационных, 220.77kb.
- Московский Государственный Горный Университет утверждаю председатель умк по направлению, 97.48kb.
- М. А. Бонч-Бруевича утверждаю согласовано проректор по ур декан гф томашевич С. В.,, 185.28kb.
- В. В. Губарев " " 20 г. Рабочая программа, 201.89kb.
- Учебной дисциплины ф тпу 1-21/01 утверждаю: Декан факультета авт с. А. Гайворонский, 69.43kb.
- Рабочая программа и задание на курсовой проект для студентов Vкурса специальности, 92.59kb.
- Х. М. Бербекова "Утверждаю" Декан биологического факультета Паритов А. Ю. " " 2010., 185.59kb.
новосибирский государственный технический университет
Факультет Автоматики и Вычислительной Техники
Кафедра Автономных Информационных и Управляющих Систем
"УТВЕРЖДАЮ"
Декан АВТФ
__________В.В. Губарев
"____" ____________2006 г.
РАБОЧАЯ ПРОГРАММА
ООП [ОПД.Ф.07 Программирование, бакалавр техники и технологий] по направлению 220200 «Автоматизация и управление»
Факультет Автоматики и Вычислительной Техники
Курс 2, семестр 3¸ 4
Лекции 68 (34 час в 3-м семестре, 34 часа в 4-ом семестре)
Практических занятий нет
Лабораторные работы 51 час (17 часов в 3-м семестре, 34 часа в 4-ом семестре)
Курсовая работа 3 семестр
Курсовой проект 4 семестр
Самостоятельная работа 109 часов
Экзамен 3 – 4 семестр
Всего 228 часов
Новосибирск 2006
Рабочая программа составлена на основании Государственного образовательного стандарта высшего профессионального образования по специальности 220200 «Автоматизация и управление»
Регистрационный номер 24 тех/бак от 10.03.2000 г.
Шифр дисциплины в ГОС ОПД.Ф.07, дисциплина «Программирование» относится к циклу общепрофессиональным дисциплинам федерального компонента. [Шифр дисциплины по учебному плану: ОПД (федеральный компонент)]
Рабочая программа обсуждена на заседании кафедры «Автономных информационных и управляющих систем» протокол № 2 от 21.02.06
Программу разработал старший преподаватель Кропачев Юрий Умвольдович
Заведующий кафедрой д.т.н. доцент Легкий В.Н.
Ответственный за основную образовательную программу д.т.н., профессор кафедры АВТ Востриков А.С.
1. ВНЕШНИЕ ТРЕБОВАНИЯ
Дисциплина «Программирование» в соответствии с требованиями ГОС ВПО включает в себя изучение следующих вопросов:
Таблица 1
-
Шифр дисц.
Содержание учебной дисциплины
Часы
ОПД.Ф.07
Основные виды, этапы проектирования и жизненный цикл программных продуктов; синтаксис и семантика алгоритмического языка программирования; структурное и модульное программирование; типизация и структуризация программных данных; статические и динамические данные; сложные структуры данных (списки, деревья, сети); потоки ввода-вывода; файлы; проектирование программных алгоритмов (основные принципы и подходы); классы алгоритмов; методы частных целей, подъемы ветвей и границ, эвристика; рекурсия и итерация; сортировка и поиск; методы и средства объектно-ориентированного программирования; стандарты на разработку прикладных программных средств; Документирование, сопровождение и эксплуатация программных средств.
228
2. ОСОБЕННОСТИ ПОСТРОЕНИЯ ДИСЦИПЛИНЫ
Таблица 2
Особенность | Содержание |
Основание для введения дисциплины в учебный план специальности | Дисциплина относится к циклу дисциплин федерального компонента, включенных в учебный план подготовки бакалавров по направлению 220200 «Автоматизация и управление». Основанием для введения в учебный план являются требования ГОС. |
Адресат курса | Дисциплина преподается на кафедре АИУС и предназначена для студентов, обучающихся по направлению 220200 «Автоматизация и управление» |
Компетенции, которые может повысить обучающийся | Основная задача преподавания дисциплины "Программирование" в третьем семестре - Получение базового уровня по программированию на языке "С" с использованием простых и агрегатированных типов данных; Приобретение навыков использования базового набора фрагментов алгоритмов в процессе разработки программ, навыков анализа и "чтения" программ; Изучение основ технологии программирования и методов решения вычислительных задач и задач обработки символьных данных. Знакомство с основными принципами организации хранения и поиска данных, алгоритмами сортировки и поиска, понятием трудоемкости алгоритма. В четвертом семестре - основная задача преподавания дисциплины "Программирование" - освоение принципиально новой технологии объектно-ориентированного программирования (ООП) на основе знаний, полученных в результате изучения курса "Программирование" на III семестре. Это касается как представлений и знаний, так и умений и навыков. |
Ядро дисциплины | Ядром дисциплины «Программирование» является проектирование и жизненный цикл программных продуктов, структурное и модульное программирование, типизация и структуризация программных данных, проектирование программных алгоритмов (основные принципы и подходы), методы и средства объектно-ориентированного программирования |
Связь с другими учебными дисциплинами ООП | Дисциплина «Программирование» связана с математикой через теорию математического моделирования, дискретную математику, математическую логику и теорию алгоритмов. С ней связано прогрессивное увеличение возможностей компьютерной техники, развитие информационных сетей, создание новых информационных технологий, которые приводят к значительным изменениям во всех сферах общества: производстве, науке, образовании и т.д. |
Требования к первоначальному уровню подготовки | Студент должен знать высшую математику, теорию вероятностей, физику, информатику. |
Особенности организации учебного процесса | Изучаемая дисциплина является основой для изучения дисциплин: «Вычислительные машины, системы и сети», «Моделирование систем», «Программно-аппаратные средства защиты информации». |
3. ЦЕЛИ УЧЕБНОЙ ДИСЦИПЛИНЫ
После изучения дисциплины студент
Таблица 3
Будет иметь представление: | |
1. | Об общих принципах взаимоотношений алгоритма и данных в традиционной и объектно-ориентированной технологиях; |
2. | Язык и среда программирования С и С++; |
3. | Технологии программирования применительно к типам данных, структурам данных и организации программы; |
Знать: | |
4. | Концептуальные основы структурного программирования; |
5. | Значение и применение функций время жизни и область видимости; |
6. | Использование простых и агрегатированных данных; |
7. | Использование адресной арифметики; |
8. | Принципиальные отличия "C++" от "С"; |
9. | Концептуальные основы объектно-ориентированного программирования, понятия класса, объекта, метода, закрытости, доступа, конструирования объектов; |
10. | Синтаксис определения классов, методов и объектов, особенности работы с объектами, содержащими динамические данные и связанные ресурсы, основные виды конвейерной обработки объектов в операциях - по значению, по ссылке, по указателю; |
11. | Принципы переопределения операций, особенности переопределения отдельных операций; |
12. | Понятия наследования и полиморфизма, сущность "развития" класса от базового к производному, принципы проектирования программы "от класса к классу", основные варианты использования виртуальной функции; принципы организации объектно-ориентированной библиотеки и работы с ней; |
13. | Способы организации объектов в программе, принцип событийного программирования с использованием объектов. |
Уметь: | |
14. | Разрабатывать программы различной сложности с использованием простых и агрегатированных данных; |
15. | Разрабатывать программы сортировки по различным алгоритмам. Создание и ведение списков; |
16. | Разрабатывать отдельные классы для внедрения в "C++" собственных типов данных; |
17. | Разрабатывать программы в виде системы классов и взаимодействующих объектов; |
18 | Разрабатывать классы структур данных и шаблонов структур данных, а также использования аналогичных стандартных средств. |
Иметь опыт: | |
19. | Использования стандартных объектно-ориентированных библиотек для разработки собственных приложений; |
4. СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ
Учебным планом по дисциплине «Программирование» предусматривается проведение лекционных занятий в объеме 68 часов (34 час в 3 семестре, 34 часа в 4 семестре), проведение лабораторных работ в объеме 51 час (17 часов 3 семестр, 34 часа 4 семестр). Проведение практических занятий учебным планом не предусмотрено.
Таблица 4
-
Блок, модуль, раздел, тема лекционных занятий
Часы
Ссылка на цели
3 семестр
Описание языка Си. Элементы языка Си. Используемые символы. Константы. Идентификатор. Ключевые слова. Использование комментариев в тексте программы. Типы данных и их объявление.
2
Категории типов данных. Целый тип данных. Данные плавающего типа. Указатели. Переменные перечисленного типа. Массивы. Структуры. Объединения (смеси). Поля битов. Переменные с изменяемой структурой. Определение объектов и типов.
2
Инициализация данных. Выражения и присваивания. Операнды и операции. Преобразования при вычислении выражений. Операции отрицания и дополнения. Операции разадресации и адреса. Операция sizeof. Мультипликативные операции. Аддитивные операции. Операции сдвига. Поразрядные операции. Логические операции. Операции последовательного вычисления. Условная операция. Операции увеличения и уменьшения. Простое присваивание. Составное присваивание. Приоритеты операций и порядок вычислений. Побочные эффекты. Преобразование типов.
6
Операторы. Оператор выражение. Пустой оператор. Составной оператор. Оператор if. Оператор switch. Оператор break. Оператор for. Оператор while. Оператор do while. Оператор continue. Оператор return. Оператор goto.
2
Функции. Определение и вызов функций. Вызов функций с переменным числом параметров. Передача параметров функции main. Структура программы и классы памяти. Исходные файлы и объявление переменных. Объявления функций. Время жизни и область видимости программных объектов. Инициализация глобальных и локальных переменных.
2
Указатели и адресная арифметика. Методы доступа к элементам массивов. Указатели на много мерные массивы. Операции с указателями. Массивы указателей. Динамическое размещение массивов.
2
Директивы препроцессора. Директива #include. Директива # define. Директива #undef.
2
Организация списков и их обработка. Линейные списки. Методы организации и хранения линейных списков. Операции со списками при последовательном хранении. Операции со списками при связанном хранении. Организация двусвязных списков. Стеки и очереди. Сжатое и индексное хранение линейных списков. Сортировка и слияние списков.
2
Сортировка вставкой. Сортировка посредством выбора. Слияние списков. Сортировка списков путем слияния. Быстрая и распределяющая сортировки.
4
Поиск и выбор в линейных списках. Последовательный поиск. Бинарный поиск. М-блочный поиск.
4
Методы вычисления адреса. Выбор в линейных списках. Рекурсия.
3
Стандарты на разработку прикладных программных средств.
3
Семестр 4
Что такое объектно-ориентированное программирование? Инкапсуляция. Полиморфизм. Наследование. Две версии C++. Новые заголовки в программах на C++. Пространства имен. Консольный ввод и вывод в C++. Комментарии в C++.
2
Классы. Первое знакомство. Некоторые отличия языков С и C++. Введение в перегрузку функций. Ключевые слова C++. Введение в классы. Конструкторы и деструкторы. Конструкторы с параметрами. Подробное изучение классов. Присваивание объектов. Передача объектов функциям. Объекты в качестве возвращаемого значения функций. Дружественные функции: обзор. Массивы, указатели и ссылки. Массивы объектов.
4
Введение в наследование. Указатели на объекты. Указатель this. Операторы new и delete. Классы, структуры и объединения. Встраиваемые функции. Встраиваемые функции в объявлении класса. Управление доступом к базовому классу. Защищенные члены класса. Конструкторы, деструкторы и наследование. Множественное наследование. Виртуальные базовые классы.
4
Введение в систему ввода/вывода C++. Некоторые базовые положения системы ввода/вывода C++. Форматируемый ввод/вывод. Функции width(), precision() и fill(). Манипуляторы ввода/вывода. Пользовательские функции вывода. Пользовательские функции ввода.
4
Перегрузка функций. Перегрузка конструкторов. Создание и использование конструкторов копий. Устаревшее ключевое слово overload. Аргументы по умолчанию. Перегрузка и неоднозначность. Определение адреса перегруженной функции. Введение в перегрузку операторов. Основы перегрузки операторов. Перегрузка, бинарных операторов. Перегрузка операторов отношения и логических операторов. Перегрузка унарных операторов. Дружественные оператор-функции. Особенности использования оператора присваивания. Перегрузка оператора индекса массива [].
2
Виртуальные функции. Указатели на производные классы. Знакомство с виртуальными функциями. Дополнительные сведения о виртуальных функциях. Применение полиморфизма. Шаблоны и обработка исключительных ситуаций. Родовые функции. Родовые классы. Обработка исключительных ситуаций. Дополнительная информация об обработке исключительных ситуаций. Обработка исключительных ситуаций, возбуждаемых оператором new. Передача ссылок на объекты. Ссылка в качестве возвращаемого значения функции. Независимые ссылки и ограничения на применение ссылок.
8
Динамическая идентификация и приведение типов. Понятие о динамической идентификации типа. Оператор dynamic_cast. Операторы const_cast, reinterpret_cast и static_cast. Пространства имен и другие темы. Пространства имен. Функции преобразования. Статические члены класса. Постоянные и модифицируемые члены класса. Заключительный обзор конструкторов. Спецификаторы сборки и ключевое слово asm. Массивы в качестве объектов ввода/вывода.
4
Библиотека стандартных шаблонов. Знакомство с библиотекой стандартных шаблонов. Классы-контейнеры. Векторы. Списки. Ассоциативные списки. Алгоритмы. Строковый класс.
3
Документирование, сопровождение и эксплуатация программных средств.
3
ОПИСАНИЕ ЛАБОРАТОРНЫХ РАБОТ
Таблица 5
-
Блок, модуль, раздел, тема практических занятий
Учебная деятельность
Часы
Ссылка на цели
3-й семестр
Вводная: «Знакомство и получение начальных навыков работы с компилятором
Borland C++ v.5.02 »
Лабораторная работа № 1
4
«Разработка прикладных программ с использованием стандартных библиотек ввода-вывода и работа с потоками ввода-вывода »
Лабораторная работа № 2
4
«Разработка прикладных программ с использованием базовых типов данных »
Лабораторная работа № 3
4
«Разработка прикладных программ с использованием операций и выражений »
Лабораторная работа № 4
4
«Разработка прикладных программ для обработки символьных данных»
Лабораторная работа № 5
1
Семестр 4
«Разработка прикладных программ с максимальным использованием диапазона возможностей функций»
Лабораторная работа № 1
4
«Разработка прикладных программ с использованием итерационных циклов»
Лабораторная работа № 2
4
«Разработка прикладных программ с использованием наиболее популярных алгоритмов сортировки»
Лабораторная работа № 3
4
«Получение начальных навыков работы с проектами в среде Borland C++ v.5.02 »
Лабораторная работа № 4
4
«Разработка программ с использованием классов»
Лабораторная работа № 5
4
«Переопределение операций»
Лабораторная работа № 6
4
«Производные классы»
Лабораторная работа № 7
4
«Виртуальные классы»
Лабораторная работа № 8
4
«(Заключительное занятие) Ввод-вывод в потоки»
Лабораторная работа № 9
2
5.УЧЕБНАЯ ДЕЯТЕЛЬНОСТЬ
Учебным планом по дисциплине предусмотрена курсовая работа в третьем семестре и курсовой проект в четвертом семестре. На самостоятельную работу студента отводится 109 часов. Студентам предлагается изучить лекционный, учебно-методический материал, обратив особое внимание на:
Студентам могут быть предложены по выбору различные темы курсовых работ и курсовых проектов различной сложности в соответствии с содержанием дисциплины, темами лекционных занятий.
ПРИМЕРНЫЕ ТЕМЫ КУРСОВЫХ РАБОТ
1.Определите функцию, присваивающую вещественные псевдослучайные значения из диапазона от 0 до 1 элементам прямоугольной матрицы Х={хy). Напишите функцию печати (вывода на дисплей) значений элементов прямоугольной матрицы. Размеры матрицы (n и m), а также двумерный массив элементов матрицы должны служить параметрами функций. Задав с помощью препроцессорных идентификаторов N и М размеры матрицы, определите в основной программе соответствующий массив ее элементов. Заполните матрицу и распечатайте значения ее элементов, используя вышеназванные функции.
2.Определите макрос для вывода на экран дисплея изображения и значения арифметического выражения с возможностью задания спецификации преобразования, выведите на экран предельные значения разных арифметических типов, определенные в заголовочных файлах
3.Напишите макрос, обеспечивающий последовательный ввод (из стандартного входного потока) и суммирование вещественных чисел. Цикл чтения заканчивайте при вводе нулевого значения. В основной программе получите и выведите сумму вводимых чисел. Проверьте, что взаимное размещение макроопределений CYCLE() и READF() не влияет на результат препроцессорных подстановок, лишь бы обращение к макросу CYCLE() размещалось в исходном тексте программы ниже определений CYCLE() и READF().
4.Напишите макрос для вывода значений элементов одномерного целочисленного массива. Выводимые значения сопровождайте обозначениями индексированных элементов массива. Информацию размещайте в три колонки. В основной определите массив и, используя макрос, распечатайте значения его элементов. Удалите из макроопределения первый параметр задающий количество элементов массива. Заголовок цикла» строке замещения этого макроса может быть таким:
for(_i = 0; i < sizeof (ARRAY) /sizeof(ARRAY[0]; _i++). В отличие от макроса ARRAY_PRINT новый макрос можно использовать только с именем массива в качестве параметра. Указатель на массив или его часть недопустим в качестве его аргумента.
5. Напишите и используйте макрос для суммирования значений элементов одномерного массива (array) данного количества (n) элементов. В основной программе определите целочисленный массив и вычислите сумму его элементов.
6.Сформируйте массив, значениями N первых элементов которого служат N членов последовательности Фибоначчи. Первые два элемента последовательности Е1 и Е2 нужно ввести как исходные данные. N задано на препроцессорам уровне. Необходимо напечатать все N элементов, затем подсчитать их сумму и вывести на печать ее значение.
7. Напишите макроопределение для вычисления значения квадратичной функции f(x)=ax2+bx+c.
Используйте макроопределения QUADR() и DISPLAY() для вычисления и печати значения квадратичной функции f(x)=2x2+x+3 при х, равном значению выражения 5-5. (Правильный результат : f(5-5) равно 3.)
8. Напишите программу, формирующую и печатающую по строкам верхнюю треугольную целочисленную матрицу, каждый ненулевой элемент которой равен сумме номеров его строки и столбца. Размер матрицы nRow вводите с клавиатуры, ограничив его препроцессорной константой N_MAX.
9.Определите в виде макроса шаблон функций для суммирования значений элементов одномерного массива. Параметр макроопределения должен определять тип элементов суммируемого массива и, естественно, тип возвращаемого функцией значения суммы. Параметры формируемой макроопределением функции - одномерный массив и количество суммируемых элементов этого массива. Используя в макрообращениях имена разных типов, получите формируемые препроцессором тексты определений функций.
10. Напишите макроопределение шаблона функций для перестановки (обмена) значений переменных, адресуемых фактическими параметрами создаваемой функции. Тип параметров создаваемой шаблоном функции задается параметром макроса. Используя в макровызовах имена разных типов, получите формируемые препроцессором тексты определений функций.
11. Для иллюстрации возможностей предложенного макроопределения шаблона функций для обмена значений переменных определите переменные типа double и перемет типа long и обменяйте их значения с
помощью обращения к соответствующим функциям, сформированным макроопределением.
12. Определите структурный тип "банковский счет", включив в него элементы: номер счета (тип long), фамилию вкладчика (тип char[40), дату открытия (в формате "dd-i-yy"), сумму на счете (тип int), дату последней операции по чету ("dd-mm-yy"). Определите и инициализируйте конкретную структуру этого типа. Выведите на печать значения элементов структуры, размеры участков памяти, занимаемых ими, и размер памяти, выделенной для всей структуры.
13. Определите структурный тип "сведения об: экзамене " с элементами: фамилия преподавателя (char teachName[26]); название дисциплины (указатель subject на строку, определенную в программе); дата экзамена ("dd-mm-yy"); фамилия студента (char studName[26); оценка (тип int). Определите и частично инициализируйте конкретную структуру, указав при инициализации только фамилию преподавателя и название дисциплины,; Определите еще одну структуру того же типа и присвойте ей значение инициализированной структуры. Введите недостающие данные в обе структуры и напечатайте значения элементов второй из них. (Печатать строку, адресованную указателем subject) Для структурного типа struct exam вычислите размеры структуры и ее элементов.
14. Определите структурный тип "материальная точка". Определите две структуры этого типа. Значение элементов одной из структур задайте с помощью инициализации. Введите с клавиатуры значения элементов второй структуры и вычислите центр масс системы из этих двух точек
15. Определите структурный тип "город" с элементами "название" и "число жителей". Определите структурный тип "государство" с элементами "название страны", "столица", "площадь территории", "численность населения" В структуре "государство" сведения о столице представляйте ей помощью структуры "город". В основной программе определите структуру "государство". Инициализируйте ее сведениями о Бразилии до 1960 г.: Brazil (название страны), Rio de Janeiro (столица), 8500000 (площадь страны, км2), 109000000 (население страны), 4900000 (число жителей столицы). Введите с клавиатуры сведения о новой столице (с 1960 г.): Brasilia (название города), 272000 (число его жителей). Напечатайте все сведения о Бразилии с новой столицей.
ПРИМЕРНЫЕ ТЕМЫ КУРСОВЫХ ПРОЕКТОВ
Моделирование работы лифта
- Моделирование работы перекрестка автомобильных магистралей, управляемого светофором
- Моделирование пешеходного перехода, управляемого светофором
- Моделирование паромной переправы
- Моделирование производственного конвейера
- Моделирование работы междугородной АТС
- Моделирование работы провайдера Интернета
- Моделирование работы аэропорта с учетом метеоусловий (взлеты и посадки самолетов – задача авиадиспетчера)
- Моделирование работы аэропорта с учетом метеоусловий (обслуживание пассажиров – задача службы авиаперевозок)
- Моделирование работы автовокзала
- Моделирование работы линии метрополитена (на примере трех станций)
- Моделирование работы остановки городского транспорта
- Моделирование работы кафе с официантами
- Моделирование работы прачечной
- Моделирование работы станции автосервиса
6. ПРАВИЛА АТТЕСТАЦИИ СТУДЕНТА ПО УЧЕБНОЙ ДИСЦИПЛИНЕ
Оценка знаний и умений студентов проводится с помощью вопросов по основным проблемам дисциплины.
Для оценки деятельности студента используются зачетные задания в виде 2-х теоретических вопросов и одного практического задания (задачи).
Теоретические вопросы формулируются в строгом соответствии с темами лекционных занятий.
7. СПИСОК ЛИТЕРАТУРЫ
- Керниган Б., Ритчи Д Язык программирования С: Пер. с англ. - М.: Финансы и статистика, 1992. - 272 с.
- American National Standard for Programming Languages - С Language. ANSI/ISO 9899-1990. - NY: ANSI, 1992. - 219 pp.
- Подбельский В.В., Фомин С.С. Программирование на языке С. - М: Финансы и статистика, 2003. - 600 с.
- Керниган Б., Пайк Р. Практика программирования: Пер. с англ. - СПб.: Невский диалект, 2001. - 381с.
- Шилдт Г. Полный справочник по С. - 4-е изд.: Пер. с англ. - М.: Издат. дом "Вильяме", 2002. - 704 с.
- Тондо К, Гимпел С. Язык Си. - Кн. ответов: Пер. с англ. - М.: Финансы и статистика, 1994, - 160 с.
- Кэмпбел-Келли М. Введение в макросы: Пер. с англ. - М.: Сов. радио, 1978.-152 с.
- Браун П. Макропроцессоры и мобильность программного обеспечения: Пер. с англ. - М.: Мир , 1977. - 254 с.
- Жешке Рекс. Толковый словарь стандарта языка С: Пер. с англ. - СПб.: Питер, 1994.-222 с.
- Джехани Н. Программирование на языке С: Пер. с англ. - М.: Радио и связь, 1988. - 272 с.
- Уинер Р. Язык Турбо С: Пер. с англ. - М.: Мир, 1991. - 380 с.
- Кнут Д. Искусство программирования для ЭВМ. - Т. 3. Сортировка и поиск: Пер. с англ. - М.: Мир, 1978. - 844 с.
- Абрамов С.А., Зима КВ. Начала информатики. - М.: Наука, 1989. - 256 с.
- Керниган Б. и др. Язык программирования С; Задачи по языку Си/Б.Керниган, Д.Ритчи, А.Фьюэр: Пер. с англ. — М.: Финансы и статистика, 1985. -279 с.
- Касаткин Л.И. Профессиональное программирование на языке Си. Управление ресурсами.: Справ, пособие. - Минск: Высш. шк., 1992.-432 с.
- Дал У. и др. Структурное программирование/ У.Дал, Э.Дейкстра, К.Хоор: Пер. с англ. - М.: Мир, 1975. - 248 с.
- Страуструп Б. Язык программирования C++. - 3-е изд.: Пер. с англ. - СПб.- М.: Невский диалект - Издательство БИНОМ, 1999. - 991 с.
- Флорес И. Структуры и управление данными: Пер. с англ. - М.: Финансы и статистика, 1982. - 319 с.
- Трамбле Ж, Соренсон П. Введение в структуры данных: Пер. с англ. - М.: Машиностроение, 1982. -784 с.
- Хэзфилд Р., Кирби Л. Искусство программирования на С. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста. - Киев: ДиаСофт, 2001. - 736 с.
- Харбисон СП., Стил Г.Л. Язык программирования С: Пер. с англ.- М.: ООО Бином-Пресс, 2004. - 528 с.
- Г. Шилдт Теория и практика С++ пер. с англ. – СПб.: BHV – Санкт – Петербург1999.- 416 с. Ил.
- КОНТРОЛИРУЮЩИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ