Правительство Российской Федерации
Государственное образовательное бюджетное учреждение высшего профессионального образования
Государственный университет -Высшая школа экономики
Факультет Бизнес Информатика
Программа дисциплины
"Программирование"
для направления 080700.62 «Бизнес-информатика» подготовки бакалавра
Автор программы доцент, к. т.н.
bpoklonov@*****
2010 г. |
Рекомендована секцией УМС по бизнес-информатике
Председатель
« » 2010 г.
Одобрена на заседании кафедры Архитектуры программных систем Зав. кафедрой
« »
Утверждена Ученым Советом факультета Бизнес-информатики
Ученый секретарь
« » 2010 г.
Москва
I. Пояснительная записка
Автор программы:
доцент, к. т.н.
Общие сведения об учебном курсе:
дисциплина читается студентам бакалавриата на факультете бизнес-информатики ГУ-ВШЭ. Она входит в блок общих математических и естественно-научных дисциплин и читается в первом, втором, третьем и четвёртом модулях первого курса обучения. Продолжительность курса составляет 144 аудиторных учебных часа (37 недель), в том числе: 72 часа лекционных занятий, 72 часа практических занятий, и 144 часов самостоятельной работы. Рубежный контроль - домашнее задание, 5 контрольных работ, зачеты по окончании первого и второго модуля, курсовая работа и письменный экзамен по окончании четвёртого модуля.
Требования к студентам:
освоение курса предполагает предварительное знакомство студентов с содержанием учебных дисциплин: "Математика".
Цель курса:
изучение дисциплин направлено на получение студентами теоретических знаний и практических навыков в программировании на основе процедурно-ориентированного и объектно-ориентированного подхода, позволяющих решать задачи обработки числовой и символьной информации в рамках прикладных и системных задач.
Аннотация:
курс построен на основе учебника Г. Шилдта. С#. Учебный курс. Предлагаемый курс ориентирован на ведение проектирования и разработки программных продуктов.
Учебные задачи курса:
в результате прохождения учебного курса студенты должны:
- получить углубленные знания в области методов и средств разработки
алгоритмов и программ для решения прикладных и системных задач,
средств описания данных и последовательности их обработки, приемов
процедурного и объектно-ориентированного программирования;
- иметь представление о современных методах и технологиях разработки
программных систем;
- освоить способы и средства тестирования и отладки программ;
приобрести навыки формализации предметной области и разработки
структуры программ, программирования на языках высокого уровня,
тестирования и отладки программ, имеющих модульную структуру.
II. Тематический план учебной дисциплины
№ | Название темы | Всего часов по дисциплине | Аудиторные часы | Самостоятельная работа | |
Лекции | Практические занятия | ||||
Первый модуль (48 часов) | |||||
1 | Введение | 6 | 2 | 4 | |
2 | Основные элементы программирования | 68 | 30 | 16 | 22 |
Второй мод: | улъ (32 час) | ||||
3 | Массивы | 34 | 8 | 8 | 18 |
4 | Программирование с использованием классов | 34 | 8 | 8 | 18 |
Третий мод] | улъ (24 час) | ||||
5 | Исключения и отладка | 10 | 2 | 2 | 6 |
6 | Событийное управление | 24 | 6 | 6 | 12 |
7 | Графический вывод. | 20 | 4 | 4 | 12 |
Четвёртый модуль (40 час) | |||||
8 | Ввод-вывод. | 26 | 4 | 8 | 14 |
9 | Интерфейсы и коллекции | 22 | 4 | 6 | 12 |
10 | Методы работы с файловой системой | 42 | 2 | 14 | 26 |
11 | Заключение | 2 | 2 | ||
Итого: | 288 | 72 | 72 | 144 |
III. Базовые учебники
Книги:
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002..
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003
• , Фролов проектирование приложений С#. М. Кудиц-
образ, 2003
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский дом
Другие источники:
• Секунов С#. С-Петербург. БХВ-Петербург, 2001.
• Ч. Петцольд. Программирование в тональности С#. М. Microsoft Press, 2004.
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОН Апринт, Киев. ВЕК, 2004.
• Жарков графика, мультимедиа и игры на Visual C#. M.
"Жарков Пресс", 2005
IV. Формы контроля
- промежуточный контроль: зачеты в конце 1-го и 2-го модуля;
- итоговый контроль: экзамен в конце 4-го модуля;
Текущий контроль предусмотрен по каждому модулю. Формы текущего контроля: 1 домашнее контрольное задание, 5 контрольных письменных работ и курсовая работа. Контрольное домашнее задание включает разработку, кодирование, тестирование и отладку программ решения нескольких задач из предметной области изучаемой темы. За одно контрольное домашнее задание выставляется одна оценка по десятибалльной шкале. Контрольная письменная работа предусматривает программную реализацию нескольких задач и выполняется на практических занятиях. На выполнение одной задачи в рамках практического занятия отводится 30-40 мин. учебного времени. За одну контрольную работу независимо от количества задач выставляется одна оценка по десятибалльной шкале.
Промежуточный контроль включает зачеты в конце 1-го и 2-го модуля. Зачёт в конце 1-го модуля выставляется по итогам проведения контрольных работ №1(Контроль 1) и №2(Контроль 2). Зачёт определяется как средневзвешенная оценка по десятибалльной системе О1 по формам контроля
Формы работы | Вклад в итоговую оценку (%) - |
Контроль 1 (К1) | 40 |
Контроль 2 (К2) | 60 |
О1=0,4*К1+0,6*К2
При выставлении зачёта за 1-й модуль средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого.
Зачёт в конце 2-го модуля выставляется по итогам проведения контрольных работы №3(Контроль 3) и №4(Контроль 2). Зачёт определяется как средневзвешенная оценка по десятибалльной системе О2 по формам контроля
Формы работы | Вклад в итоговую оценку (%) - |
Контроль 3 (К3) | 50 |
Контроль 4 (К4) | 50 |
О2=0,5*К3+0,5*К4
При выставлении зачёта за 2-й модуль средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого. При выставлении зачётов О1 и О2 по 5-балльной шкале используется решающее правило:
Таблица соответствия оценок по десятибалльной и пятибалльной системам
По десятибалльной шкале | По пятибалльной шкале |
1 - неудовлетворительно 2 - очень плохо 3 - плохо | не зачтено |
4 - удовлетворительно 5 - весьма удовлетворительно | зачтено |
6 - хорошо 7 - очень хорошо | |
8 - почти отлично 9 - отлично 10-блестяще |
Итоговый контроль включает 2 зачета и экзамен. Итоговая оценка по учебной дисциплине складывается из следующих элементов:
- Оценка итогового контроля по модулю 1, (Контроль 1).
- Оценка итогового контроля по модулю 2, (Контроль 2).
- Оценка итогового контроля по модулям 3,4 (Контроль 3)
- Письменный экзамен (120 мин)
Итоговая оценка по учебной дисциплине определяется как средневзвешенная оценка по десятибалльной шкале Оит по формам контроля:
Формы работы | Вклад в итоговую оценку (%) - |
Контроль 1 (К1) | 12 |
Контроль 2 (К2) | 13 |
Контроль 3 (К3) | 35 |
Экзамен (ЭКЗ) | 40 |
Оит = 0,12*К1 + 0,13*К2 + 0,35*К3+0,40*ЭКЗ
При выставлении итоговой оценки Оит за дисциплину средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого. При выставлении итоговой оценки Оит по 5-балльной шкале используется решающее правило:
Таблица соответствия оценок по десятибалльной и пятибалльной системам
По десятибалльной шкале | По пятибалльной шкале |
1 - неудовлетворительно 2 - очень плохо 3 - плохо | неудовлетворительно - 2 |
4 - удовлетворительно 5 - весьма удовлетворительно | удовлетворительно - 3 |
6 – хорошо 7 - очень хорошо | хорошо - 4 |
8 - почти отлично 9 - отлично 10-блестяще | отлично - 5 |
V. Содержание программы
Введение.
• Содержание темы:
• Задачи
• Цели
• Содержание и порядок прохождения дисциплины.
Тема 1: Основные элементы программирования
♦Содержание темы:
• Определение класса. Пространство имен. Статические поля и методы.
• Значимые и ссылочные типы. Базовые значимые типы: предельные значения,
свойства и методы.
• Константы, переменные, именованные константы.
• Арифметические операции и выражения.
• Проблема преобразования типов. Явное преобразование типов.
• Присваивание простое, составное, унарное. Проблема преобразования типов
при присваивании.
• Инициализация переменных.
• Логические операции и операции отношения. Логические выражения.
Условная операция.
• Первичное представление о строке символов. Операции присваивания,
сравнения и конкатенации.
• Преобразование строки в значение базового типа и преобразование значения
базового типа в строку
• Управляющие структуры. Блок операторов. Ветвление и сокращенное
ветвление. Вложенность управляющих структур. Множественное ветвление.
Использование строк в качестве переключателя.
• Циклы и средства управления итерациями.
• Понятие исключения и простейшие способы обработки исключений.
• Статические методы. Определение метода. Параметры метода и их
модификаторы. Вызов метода. Понятие сигнатуры метода. Перегрузка
методов.
♦ Основная литература
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.54-63. С.66-79. С.81-116.
С.138-146.С.148-164.
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский дом
"Вильяме", 2004. С.53-126
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.55-108.
♦ Дополнительная литература
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.44-114
• Секунов С#. С-Петербург. БХВ-Петербург, 2001. С.53-74
Тема 2: Массивы. ♦ Содержание темы:
• Одномерные массивы: объявление и инициализация.
• Доступ к элементу массива.
• Основные свойства и методы.
• Присваивание применительно к ссылкам. Проблема потери ссылок. Сборка
мусора.
• Строки. Форматирование строки. Методы обработки строк. Преобразование
строки в массив символов и обратное преобразование.
• Динамические строки. Преобразование строки в динамическую строку и
обратное преобразование
• Массив строк.
• Параметры метода Main.
• Двухмерные массивы.
• Массивы с индивидуальной длиной строки.
• Массив объектов object.
• Упаковка и распаковка значений. Динамическая идентификация типов.
• Динамические массивы.
♦ Основная литература
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.154-164
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С. 164-180.
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.225-231.
♦ Дополнительная литература:
• Секунов С#. С-Петербург. БХВ-Петербург, 2001. С.160-165
Тема 3: Программирование с использованием классов
♦ Содержание темы:
• Определение собственных классов. Статические поля и методы.
• Инкапсуляция полей и методов. Поля только для чтения. Конструктор класса.
Конструктор умолчания.
• Свойства классов Массив объектов классов, определяемых программистом.
• Отношение агрегации между классами.
• Конструктор копирования Отношение композиции. Структуры:
• Определение, объявление переменных, операции.
• Копирование полей при присваивании.
• Конструктор умолчания.
• Наследование. Переопределение методов.
• Виртуальные методы. Абстрактные классы
• Полиморфизм и его виды.
• Перегрузка операций
♦ Основная литература
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.288-360.
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.161-174.
С.250-279.
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.256-349
♦ Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.351-405
Тема 4: Событийное управление.
♦ Содержание темы:
• Понятие события. Генерация и обработка событий.
• Типовая структура приложения, управляемого по событиям.
• Визуальное программирование. Понятие формы и элементов управления
• Визуальное программирование формы. Стандартные элементы управления.
• Установка свойств формы и ее элементов. Связывание элементов формы со
стандартными обработчиками событий.
• Создание собственных обработчиков событий.
• Программное изменение свойств элементов.
• Многооконный интерфейс. Создание и отображение формы.
• Способы передачи данных между формами. Диалоговые окна.
♦ Основная литература:
• Г. Шилдт. Полный справочник по С#. М, С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.689-706
• , Фролов проектирование приложений С#. М.
Кудиц-образ, 2003, С.9-17, С.175-225
♦ Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.806-837
Тема 6: Ввод-вывод.
♦ Содержание темы:
• Понятие потока и хранилища данных.
• Символьные потоки. Открытие и закрытие потока.
• Кодирование символов в файле.
• Методы чтения и записи
• Двоичные потоки. Открытие и закрытие потока.
• Особенности представления строк в файле. Методы чтения и записи.
• Потоки, ориентированные на байты. Открытие и закрытие потока. Методы
чтения и записи.
• Понятие сериализации. Открытие потока. Определение объекта
форматирования. Двоичное форматирование и форматирование SOAP
♦ Основная литература:
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.386-419.
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.464-506.
♦ Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.531-536
Тема 7: Графический вывод.
♦ Содержание темы:
• Организация графического вывода.
• Контекст отображения.
• Рисование на форме и в окне элемента управления. Идентификатор окна.
Проблема перерисовки изображения и способы ее решения.
• Рисование графических примитивов: линии, прямоугольники и
многоугольники, эллипсы, сегменты, кривые, окрашенные фигуры.
• Растровые и векторные изображения. Буксировка, загрузка, рисование.
Инструменты рисования: перья, кисти, шрифты. Вывод текста
♦ Основная литература:
• , Фролов проектирование приложений С#. М.
Кудиц-образ, 2003, С.9-17, С.388-448
♦ Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.667-683
Тема 8: Интерфейсы и коллекции.
♦ Содержание темы:
• Понятие интерфейса, реализация интерфейса.
• Стандартные интерфейсы.
• Динамический массив, стек, очередь и их использование в программировании
• Хэш-таблицы и их и их использование в программировании
♦ Основная литература:
• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.334-354.
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.430-457.
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.610-633
♦ Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.351-405
Тема 9: Исключения и отладка.
♦ Содержание темы:
• Классические способы обработки ошибок.
• Предварительная проверка параметров. Проверка кодов возвратов методов.
• Исключения. Перехват исключения.
• Блок обработки исключения. Передача исключений во вложенных блоках.
Передача исключений между методами.
• Создание собственных исключений. Понятие объекта-исключения.
♦ Основная литература:
• ПШилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.360-381.
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.283-310.
• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.349-375
• Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004, С.426-453.
Тема 10: Методы работы с файловой системой.
• Содержание темы:
• Список логических дисков.
• Просмотр и выбор файла. Получение информации о файле.
• Просмотр и выбор каталога. Получение информации о каталоге. Проход по
дереву каталогов. Отслеживание изменений
• Основная литература:
• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.506-515.
• Дополнительная литература:
• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004, С.490-507.
Заключение.
• Содержание темы:
• Обзор дополнительных возможностей.
• Процессная и потоковая мультизадачность.
• Базы данных и WEB сервисы.
• Небезопасный код.
VI. Тематика заданий по различным формам текущего контроля
♦ Курсовая работа.
На выбор предлагаются следующие темы:
• Форматы денежных единиц и их преобразование.
• Форматы времени и их преобразование.
• Создание и обработка календарей.
• Средства ведения и обработки таблиц.
• Средства форматирования и обработки текстовой информации.
• Лексический анализ и преобразование формализованных потоков данных.
• Моделирование информационных процессов в экономике.
• Моделирование систем обслуживания.
• Моделирование распределения ресурсов в компьютерных системах
• Моделирование вычислительного процесса в вычислительных системах
• Создание, преобразование и обработка динамических структур данных.
• Интерпретатор вычислительного процесса.
• Преобразование файловых структур.
• Сжатие данных в компьютерных системах
• Кодирование данных в компьютерных системах
• Контроль целостности данных в компьютерных системах
• Методы сортировки данных
• Методы поиска данных
• Программная реализация детерминированных моделей бизнес процессов
• Программная реализация стохастических моделей бизнес-процессов
• Разработка и исследование датчиков случайных чисел
• Поиск путей в моделях на основе графов
Контрольная работа
• программирование ветвящихся и циклических алгоритмов на псевдокоде
• программирование ветвящихся алгоритмов
• программирование циклических алгоритмов
• программирование алгоритмов обработки данных в виде массивов
• использование методов, определяемых пользователем
• обработка данных, организованных в виде динамических массивов
• обработка исключений
• обработка массива объектов собственных классов
• обработка потоков ввода-вывода
Контрольное домашнее задание
• работа с массивами объектов
• работа с динамическими массивами объектов собственных классов
• разработка Windows приложения с развитым пользовательским интерфейсом и
графическим выводом
VII. Вопросы для оценки качества освоения дисциплины
• Перечислите стандартные типы данных и укажите форму их машинного
представления.
• Укажите правила образования имен переменных.
• Какими средствами регулируется очередность выполнения операций в выражении.
• Какими средствами объявляются именованные константы.
• Дайте определение составного оператора и укажите, в каких случаях он
применяется.
• Назовите операторы, с помощью которых можно управлять выполнением циклов.
• Укажите стандартные потоки ввода-вывода
• Дайте определение многомерного массива.
• Справедливо ли утверждение, что все строки являются объектами
• Каким образом можно получить значение длины строки
• Возможно ли непосредственное изменение элементов строки
• Объясните различие между строками и динамическими строками
• Справедливо ли утверждение, что статические методы вызываются через имя
класса
• Укажите различие между статическими и обычными полями.
• Укажите правила соответствия между формальными и фактическими параметрами.
• Перечислите способы передачи данных в методы и укажите их достоинства и
недостатки.
• Какими средствами могут обрабатываться ошибки времени исполнения программ
• В чем отличие исключения от прерывания
• Какими средствами поддерживается перехват исключений
• Что происходит в случае, если исключение не перехвачено
• К какой разновидности типов относятся массивы.
• Как назначаются номера элементам массива
• Можно ли элементу строки присвоить новое значение
• Что сравнивается при выполнении операций отношения применительно к массиву
• Сравните варианты реализации прямоугольной таблицы в виде двухмерного
массива и массива массивов с точки зрения расхода основной памяти
• Сравните варианты реализации прямоугольной таблицы в виде двухмерного
массива и массива массивов с точки зрения расхода времени доступа к элементу
таблицы
• В чем заключается отличие массива от динамического массива с точки зрения
изменения состава элементов
• Каким образом определить тип извлеченного из динамического массива элемента
• В чем заключается отличие объектов, создаваемых на базе классов и структур
• Объясните назначение конструктора и укажите отличие вызова конструктора от
вызова обычных методов
• Каким способом производится замена параметров при вызове метода, если
фактическим параметром является объект
• Может ли унаследованный класс получить доступ к закрытым членам базового
класса
• Каким образом из конструктора унаследованного класса вызывается конструктор
базового класса
• Можно ли получить доступ к скрытым переменным базового класса
• В каком порядке вызываются конструкторы в иерархии классов
• Какой принцип объектно-ориентированного программирования поддерживают
виртуальные методы
• Могут ли динамические массивы содержать в качестве элементов объекты
собственных классов
• В чем отличие событийного управления от директивного управления
• Какими средствами поддерживается механизм управления по событиям
• Что такое обработчик события
• Каким образом можно изменить свойства элементов управления
• Каким образом связываются элементы управления и обработчики событий
• Какими средствами можно организовать передачу данных в подчиненную форму
• Каким образом организовать прием данных из подчиненной формы
• Что понимается под потоком ввода-вывода
• Назовите типы потоков
• Какие потоки являются предопределенными
• Каким образом определяется конец потока ввода
• Для каких целей используется буферизация потоков ввода-вывода
• Укажите средства, с помощью которых выполняется перенаправление потоков
• Укажите особенности представления строк в символьных и двоичных потоках
• Что понимается под контекстом отображения
• Какими средствами можно получить контекст отображения
• На каких элементах формы можнр выполнять рисование
• Каким образом решается проблема перерисовки изображения стандартных
элементов управления
• Каким образом решается проблема перерисовки изображения, сформированного
программой
• Сформулируйте отличия растрового и векторного изображения
• Укажите типы шрифтов, используемых при графическом выводе
• Для чего предназначен интерфейс
• Какие элементы могут быть членами интерфейса
• Каким образом реализуются интерфейсы с помощью класса
• В чем отличие динамических структур данных от массивов
• Каким образом определить тип извлеченного из стека элемента
• Чем отличается стек от динамического массива
• Чем отличается очередь от динамического массива
• Что такое исключение
• Какими средствами могут обрабатываться ошибки времени исполнения программ
• Каким образом можно перехватывать все исключения
• Каким образом можно перехватить конкретное исключение
• Почему возникает необходимость в генерировании исключений самой программой
• Может ли исключение генерироваться повторно, после того, как оно было
перехвачено
• Каким образом отображается трассировка событий, предшествовавших
возникновению исключения
• Можно ли определить время изменения файла
• Укажите типовые атрибуты файла
• Какими средствами можно изменить атрибуты файла
• Укажите типовые атрибуты каталога
• Какими средствами можно изменить атрибуты каталога
• Что такое текущий каталог
• Можно ли изменить текущий каталог
♦ Экзамен
Экзамен проводится в письменной форме (120 мин)
Автор программы:


