Правительство Российской Федерации

Нижегородский филиал

Федерального государственного автономного образовательного учреждения высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"

Факультет бизнес-информатики и прикладной математики

Программа дисциплины «Программирование»

для направления 231000.62 – Программная инженерия

подготовки бакалавра

Автор программы: старший преподаватель

e-mail: *****@***ru

Одобрена на заседании кафедры «Базовая кафедра МЕРА» «___»____________ 2012 г

Зав. кафедрой

Рекомендована секцией УМС «Прикладная математика и информатика»

«___»____________ 2012 г

Председатель

Утверждена УМС НИУ ВШЭ – Нижний Новгород «___»_____________2012 г.

Председатель

Нижний Новгород, 2012 г.

Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы.

1  Область применения и нормативные ссылки

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

Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направлений подготовки 231000.62 «Программная инженерия» подготовки бакалавра, изучающих дисциплину «Программирование».

Программа разработана в соответствии с образовательным стандартом федерального государственного образовательного автономного учреждения высшего профессионального образования Высшей школы экономики.

2  Цели освоения дисциплины

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

3  Компетенции обучающегося, формируемые в результате освоения дисциплины

В результате освоения дисциплины студент должен:

·  знать основные факты, концепции, принципы и теории, связанные с информатикой;

·  уметь инсталлировать, тестировать, испытывать и использовать программные средства;

·  владеть языками процедурного программирования

В результате освоения дисциплины студент осваивает следующие компетенции:

Компетенция

Код по НИУ

Дескрипторы – основные признаки освоения (показатели достижения результата)

Формы и методы обучения, способствующие формированию и развитию компетенции

Владение культурой мышления, способность к обобщению, анализу, восприятию информации, постановке цели и выбору путей ее достижения

ОК-1

Студент распознает и анализирует взаимосвязи объектов, основываясь на знании их свойств, демонстрирует навыки формулирования цели исследования и выбора приемов её достижения

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

Понимание основных концепций, принципов, теорий и фактов, связанных с информатикой

ПК-1

Студент демонстрирует знание разных алгоритмов, техник, а также демонстрирует умение решать задачи с использованием оптимальных методов

Изучение лекционного материала и дополнительной литературы, разбор заданий на практических занятиях, самостоятельное выполнение домашних заданий

Умение применять основы информатики и программирования к проектированию, конструированию и тестированию программных продуктов

ПК-10

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

Подготовка практических заданий с применением современных вычислительных средств для разработки программного кода

4  Место дисциплины в структуре образовательной программы

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

5  Тематический план учебной дисциплины

Наименование тем

Всего часов

Аудиторные часы

Самостоятельная работа

Лекции

Практические занятия

Раздел 1. Основы языка Си

1.1.

Введение в программирование

2

2

1.2.

Переменные. Типы данных

6

2

2

2

1.3.

Операции и выражения

21

6

6

7

1.4.

Понятие оператора. Виды операторов

38

10

10

18

1.5.

Массивы

33

7

6

20

1.6.

Указатели.

33

6

7

20

1.7.

Функции.

42

6

6

30

Раздел 2. Работа с пользовательскими типами данных в Си

2.1.

Псевдонимы

2

1

1

2.2.

Перечисления

3

1

2

2.3.

Структуры.

47

5

12

30

2.4.

Объединения

6

1

1

4

2.5.

Поля битов

4

1

1

2

2.6.

Работа с динамической памятью

8

2

2

4

2.7.

Создание динамических списков

20

4

4

12

2.8.

Работа с деревьями

20

4

4

12

Раздел 3. Завершающие темы

3.1.

Препроцессор.

1

1

2

Классы памяти

1

1

3.3.

Компоновка программ.

3

2

1

Итого:

288

62

62

164

6  Формы контроля знаний студентов

Тип контроля

Форма контроля

1 год

Параметры

1

2

3

4

Текущий контроль

Домашнее задание.

*

*

*

80 минут на одно задание.

Контрольная работа

*

*

80 минут на одну контрольную работу.

Промежуточный

Зачёт

*

устная форма, 2 вопроса и 1 задача

Итоговый

Экзамен

*

устная форма 2 вопроса и 1 задача

Критерии оценки знаний, навыков

Текущий контроль осуществляется в виде еженедельных мини-контрольных работ, соответствующих домашнему заданию. Итоговый контроль: 2 контрольных работы на 16 и 27 неделях, зачёт на 8 неделе, экзамен на последней неделе. Учитываются результаты домашней работы (ДР) и выполнение контрольных заданий (КЗ). Оценка определяется в соответствии с п. 10.

НЕ нашли? Не то? Что вы ищете?

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

7  Содержание дисциплины

Раздел 1. Основы языка Си

Тема 1.1. Введение в программирование

Классификация языков программирования. Свойства языков программирования. История и назначения языка Си. Основные парадигмы программирования.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 1.2. Переменные. Типы данных.

Понятие переменной. Атрибуты переменной. Встроенные типы данных. Представление данных. Размер встроенных типов данных.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 1.3. Операции и выражения.

Операции и выражения. Унарные, бинарные, тернарная операции. Приоритет операций. Ассоциативность операций.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 1.4. Понятие оператора.

Понятие оператора. Пустой оператор. Оператор-выражение. Простой оператор. Составной оператор. Оператор условия. Оператор множественного выбора. Операторы цикла. Операторы управления

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Язык Си. Руководство для начинающих. – М.: Мир, 1988

Оригинал: The Annotated C++ Reference Manual.

Тема 1.5. Массивы.

Определение и объявление массивов. Размещение массивов в памяти. Работа с массивами. Многомерные массивы. Представление многомерных массивов в памяти.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 1.6. Указатели.

Понятие указателя. Объявление и инициализация указателей. Операции с указателями. Взаимосвязь указателей и массивов. Указатели на массивы и массивы указателей

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 1.7. Функции.

Определения функций. Прототип функций. Формальные и фактические параметры. Возвращаемые значения Рекурсия. Передача массивов в функции. Указатели на функции

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Раздел 2. Работа с пользовательскими типами данных в Си.

Тема 2.1. Псевдонимы.

Создание псевдонимов. Варианты использования псевдонимов.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.2. Перечисления

Понятие перечисления. Создание перечислений. Связь перечисления с массивом строк.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.3. Структуры.

Определение структур. Доступ к элементам структур. Инициализация структур. Передача структур в функции. Структуры как члены других структур. Присваивание структур.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.4. Объединения.

Понятие объединения. Выделение памяти под экземпляр объединения. Безымянные объединения.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.5. Поля битов.

Понятие поля битов. Создание полей битов Особенности работы с полями битов.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.6. Работа с динамической памятью.

Функции для работы с динамической памятью. Основные проблемы, связанные с динамической памятью. Свойства динамической памяти. Выделение памяти под одномерные массивы. Выделение памяти под многомерные массивы.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.7. Создание динамических списков

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

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 2.8. Работа с деревьями.

Понятие дерева. Создание бинарного дерева поиска. Создание дерева каталогов.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Раздел 3. Завершающие темы.

Тема 3.1. Препроцессор.

Понятие препроцессора. Директивы препроцессора.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 3.2. Классы памяти.

Классы памяти. Автоматические переменные. Регистровые переменные. Статические переменные. Внешние переменные. Volatile. Время жизни переменных.

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

Тема 3.3. Компоновка программ.

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

Основная литература:

Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

8  Образовательные технологии

Методические рекомендации преподавателю

Темы индивидуальных заданий для проведения практических занятий должны являться уникальными для каждого нового учебного года

Методические указания студентам

Рекомендуется подготовка к каждому занятию по заданиям, озвученным преподавателем на предыдущем занятии.

Для более глубокого усвоения курса предполагается использование студентами дополнительной литературы, работа в библиотеке, поиск информации в сети Интернет

9  Оценочные средства для текущего контроля и аттестации студента

Тематика заданий текущего контроля

Примеры домашних заданий

1.  Если p и q - простые числа и q = p+2, то они называются простыми сдвоенными числами или “близнецами” (twin primes). Например, 3 и 5 - такие простые числа. Распечатать все простые сдвоенные числа, меньшие N

2.  Имеется телефонный справочник в текстовом формате. В каждой строке файла указаны фамилия, имя, адрес, телефон, дата рождения. Поля разделены пробелом. Записать в новый текстовый файл все данные о людях, живущих на указанной пользователем улице. Имена всех файлов задаются в командной строке

3.  В прямоугольной матрице определить количество строк, содержащих хотя бы один нулевой элемент

4.  Найти количество локальных минимумов в квадратной матрице. Локальный минимум – это элемент, который строго меньше своих соседей

5.  Есть двумерный массив, хранящий информацию о проданных билетах в театр. Количество рядов в театре – 34, количество мест в одном ряду -20. Если место продано, то ячейка заполнена 1, если не продано – 0. Составить программу продажи билетов в театре. Возможна одновременная продажа нескольких соседних мест. Если нужного числа мест нет, необходимо предложить пользователю места в разных концах зала

6.  Разработать структуру для хранения данных о работнике предприятия. Предусмотреть поля Фамилия, Имя, Отчество, Должность, Зарплата, Дата приема на работу. Данные о сотрудниках хранятся в текстовом файле. В программе сформировать список сотрудников, отсортированный по Зарплате. Создать очередь из сотрудников, получающих зарплату выше указанной пользователем. Первым пяти из очереди увеличить зарплату на 20%, остальным – на 15%

7.  Найти в бинарном дереве поиска самое «низкое» поддерево, где корень кратен числу, введенному пользователем, и вывести его на экран

Вопросы для оценки качества освоения дисциплины

Примерный перечень вопросов к зачету (экзамену) по всему курсу или к каждому промежуточному и итоговому контролю для самопроверки студентов

I.  Основы языка С.

-----

1.  Классификация языков программирования. Свойства языков программирования

2.  История и назначение языка С/С++

3.  Основные парадигмы программирования

4.  Понятие переменной. Встроенные типы данных и объявление переменных. Константные переменные.

5.  Операции и выражения

6.  Понятие оператора. Пустой оператор. Оператор return

7.  Оператор if (ЕСЛИ)

8.  Оператор while (ПОКА)

9.  Оператор do/while (ВЫПОЛНЯТЬ/ПОКА)

10.  Оператор for (ЦИКЛ)

11.  Оператор множественного выбора switch

12.  Определение массива. Объявления и инициализация массивов в программе

13.  Многомерные массивы

14.  Объявления и инициализация переменных указателей

15.  Операции над указателями

16.  Выражения и арифметические действия с указателями

17.  Использование спецификатора const с указателями

18.  Взаимосвязи между указателями и массивами

19.  Массивы указателей

20.  Указатели на массивы

21.  Определения функций

22.  Рекурсия

23.  Передача массивов в функции

24.  Указатель на функцию

II.  Работа с пользовательскими типами данных

-----

1.  Псевдонимы

2.  Перечисления

3.  Определение структур. Доступ к элементам структур

4.  Использование структур

5.  Объединения

6.  Функции для работы с динамической памятью

7.  Выделение памяти под массивы.

8.  Построение связных списков на основе структур с самоадресацией

9.  Деревья

III. Завершающие темы

-----

1.  Препроцессор.

2.  Классы памяти.

3.  Компоновка программ.

Примеры заданий промежуточного /итогового контроля

Практические задания к экзамену:

Задача 1. Составить структуру «Конверт». Предусмотреть поля Адрес, Обратный адрес, поле для определения пустой ли конверт. Написать функции для работы с Конвертом. Предусмотреть функции для задания адреса, закрытия конверта, отправки конверта. Написать пример работы со структурой.

Задача 2. Составить структуру «Студент». Предусмотреть поля Фамилия, Имя, Отчество, Группа, Факультет, Средний балл. Создать массив студентов курса. Написать функции поиска студента на курсе по фамилии и по среднему баллу. Написать пример работы.

Задача 3. Дан символьный файл f. Определить, количество вхождений каждого символа в файл.

Задача 4. Составить функцию, позволяющую определить позицию самого правого вхождения заданного символа в исходную строку. Если строка не содержит символа, результатом работы функции должна быть -1

Задача 5. Составить функцию «сжатия» исходной последовательности символов: каждая подпоследовательность, состоящая из нескольких вхождений одного и того же символа, заменяется на текст x(k), где х—символ, a k—строка являющаяся записью числа вхождений символа х в исходную последовательность

10  Порядок формирования оценок по дисциплине

Контроль знаний студентов включает формы текущего и итогового контроля. Текущий контроль осуществляется в течение четырех модулей. В рамках учебного курса предусмотрены различные формы текущего контроля знаний и работы студентов на практических занятиях: домашние задания (после каждого практического занятия, каждое по 80 минут), 2 контрольных работ (каждая по 80 мин.). Каждая форма текущего контроля оценивается по 10-балльной шкале, оценка выставляется в рабочую ведомость преподавателя. По результатам текущего контроля организуются индивидуальные консультации в рамках второй половины рабочего дня преподавателя. Формы итогового контроля – экзамен по окончании четвертого модуля. Каждая форма итогового контроля оценивается так же по 10-балльной шкале.

Домашнее задание:

оценка в 10 баллов проставляется в исключительных случаях самостоятельно проведенной работы, результаты которой могут в дальнейшем использоваться в учебном процессе или в исследовательской работе студента;

оценка в 8-9 баллов проставляется при самостоятельно разработанном или удачно адаптированном и отлично представленном исследовании по выбранной тематике;

оценка в 6-7 баллов проставляется при своевременно выполненном и самостоятельно представленном исследовании по выбранной тематике;

оценка в 4-5 баллов проставляется при частичном, несамостоятельном участии в выполнении работ над заданием;

оценка в 2-3 балла проставляется, когда студент не может самостоятельно представить работу или когда работа носит явные признаки заимствований (работу предлагается переделать);

оценка в 1 балл проставляется при наличии каких-либо демонстративных проявлений безграмотности и неэтичного отношения к работе.

Контрольная работа:

высшая оценка в 9 баллов (10 баллов только в исключительных случаях) проставляется при полностью правильных ответах на вопросы и отличном выполнении заданий (правильном решении задачи, четком и исчерпывающем ее представлении);

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

оценка в 7 баллов проставляется при правильных ответах на вопросы и правильном решении задачи, но при наличии отдельных неточностей в ответах на вопросы;

оценка в 6 баллов проставляется при наличии отдельных неточностей в ответах на вопросы (включая грамматические ошибки) или неточностях в решении задачи непринципиального характера (описки и случайные ошибки);

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

оценка в 4 балла проставляется при наличии серьезных ошибок в ответах на вопросы и в решении задачи, что свидетельствует о наличии пробелов в знании изучаемой дисциплины;

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

оценка в 2 балла проставляется при полном отсутствии положительных моментов в ответах на вопросы и в решении задачи и, как правило, ведет к повторному написанию контрольной работы в целом;

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

Зачет или экзамен:

На зачете (экзамене), представляющем собой письменные ответы на вопросы и решение задачи с последующим собеседованием, оценка проставляется следующим образом:

высшая оценка в 9 баллов (10 баллов только в исключительных случаях) проставляется при отличном выполнении заданий (полных, с примерами и возможными обобщениями ответах на вопросы, при правильном решении задачи и детальном ее представлении);

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

оценка в 7 баллов проставляется при правильных ответах на вопросы и правильном решении задачи, но при отсутствии пояснений и обобщений, а также детального представления решаемой задачи;

оценка в 6 баллов проставляется при наличии отдельных неточностей в ответах на вопросы или неточностях в решении задачи непринципиального характера (описки и случайные ошибки);

оценка в 4-5 баллов проставляется в случаях, когда в ответах на вопросы и в решении задачи имеются существенные неточности и ошибки, свидетельствующие о недостаточном понимании изучаемой дисциплины;

оценка в 2-3 балла проставляется при наличии лишь отдельных положительных моментов в ответах на вопросы и в решении задачи;

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

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

Вначале формируется промежуточная оценка.

Опромежуточная = 0,5.* Озачет + 0,5* Онакопленная1

Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: Онакопленная1 = Од/з1

Далее формируется накопленная текущая оценка второго периода Онакопленная2

Онакопленная2 = 0,2*·Ок/р1 + 0,2*·Ок/р2 + 0,3*Од/з2 + 0,3*·Од/з3

Онакопленная Итоговая=промежуточная + Онакопленная2):2

Орезульт = 0,6*Онакопленная Итоговая. + 0,4*·Оитоговый экзамен

11  Учебно-методическое и информационное обеспечение дисциплины

Основная литература:

1. Полный справочник по Си.– С.-Пб.:Вильямс, 2007.

Оригинал: C: The Complete Reference.

Дополнительная литература:

1. Язык программирования Си.– С.-Пб.: Вильямс, 2012

Оригинал: The C Programming Language.

12  Материально-техническое обеспечение дисциплины

Мультимедийное оборудование – ноутбук, экран, проектор.

Используется ПО в компьютерном классе НИИТ. В НИУ ВШЭ – Нижний Новгород студентам предоставляется возможность самостоятельной работы с электронными ресурсами информации, периодической литературой.

В компьютерном классе (НИИТ) доступ on-line

Автор