Архитектура и эволюция ЭВМ.................................................................................. 3
Программа курса лекций (2 курс, 3 сем., 36 ч., экзамен).............................. 3
Литература................................................................................................................ 5
ЭВМ в планировании и обработке физического эксперимента (2 курс, 3 сем., 72 ч., диф. зачёт) 7
Программа курса лекций (36 часов)................................................................... 7
Программа практических занятий (36 часов).................................................. 8
Литература................................................................................................................ 9
Обьектно‑Ориентированное программирование (2 курс, 3 сем., 72 ч., диф. зачёт) 10
Программа курса лекций (36 часов)................................................................ 10
Программа практических занятий (36 часов)............................................... 14
Литература.............................................................................................................. 16
Обьектно‑Ориентированное программирование (2 курс, 4 сем., 64 ч., диф. зачёт) 18
Программа курса лекций (32 часа).................................................................. 18
Программа практических занятий (32 часа)................................................. 22
Литература.............................................................................................................. 24
Операционные системы............................................................................................. 25
Программа курса лекций (2 курс, 4 сем., 32 ч., экзамен)............................ 25
Литература.............................................................................................................. 26
Операционные системы Unix (3 курс, 5 сем., 108 ч., диф. зачёт).................... 27
Программа курса лекций (36 часов)................................................................ 27
Программа практических занятий (72 часа)................................................. 28
Задания практикума............................................................................................. 28
Литература.............................................................................................................. 40
Введение в системы автоматического проектирования радиоэлектронных устройств 41
Программа практических занятий (3 курс, 5 сем., 72 ч., диф. зачет)....... 41
Литература.............................................................................................................. 42
Аналоговая электроника........................................................................................... 43
Программа курса лекций (3 курс, 5 сем., 36 ч., экзамен)............................ 43
Литература.............................................................................................................. 44
Цифровые интегральные схемы............................................................................... 46
Программа курса лекций (3 курс, 5 сем., 36 ч., экзамен)............................ 46
Литература.............................................................................................................. 47
Объектно–ориентированный анализ и дизайн.................................................... 49
Программа курса лекций (3 курс, 6 сем., 64 ч., диф. зачет)........................ 49
Литература.............................................................................................................. 50
Архитектура и проектирование микроконтроллеров....................................... 51
Программа практических занятий (3 курс, 6 сем., 64 ч., диф. зачет)...... 51
Задания..................................................................................................................... 51
Литература.............................................................................................................. 52
Электроника детекторных систем.......................................................................... 53
Программа курса лекций (3 курс, 6сем., 32 ч., экзамен)............................. 53
Литература.............................................................................................................. 55
Микропроцессоры и микропроцессорные системы........................................... 56
Программа курса лекций (3 курс, 6 сем., 32 ч., экзамен)............................ 56
Литература.............................................................................................................. 58
Машинная графика (3 курс, 6 сем., 64 ч., диф. зачет)......................................... 59
Программа курса лекций (32 часа).................................................................. 59
Программа практических занятий (32 часа)................................................. 61
Задания..................................................................................................................... 61
Литература.............................................................................................................. 63
Динамическая 3D графика (4 курс, 7 сем., 72 ч., диф. зачет)........................... 65
Программа курса лекций (36 часов)................................................................ 65
Программа лабораторных занятий (36 часов)............................................. 66
Задания..................................................................................................................... 66
Литература.............................................................................................................. 68
Информационные сети и системы........................................................................... 70
Программа курса лекций (4 курс, 7 сем., 108 ч., диф. зачет)...................... 70
Литература.............................................................................................................. 72
Информационные сети и системы........................................................................... 73
Программа курса лекций (4 курс, 8 сем., 96 ч., диф. зачёт, экзамен)....... 73
Литература.............................................................................................................. 75
Программируемуе логические устройства........................................................... 76
Программа практических занятий (5 курс, 9-й сем., 36 ч., диф. зачёт).... 76
Практическое задание.......................................................................................... 77
Литература.............................................................................................................. 77
Новые информационные технологии..................................................................... 79
Литература.............................................................................................................. 80
Проблемы безопасности в информационных технологиях............................. 81
Программа курса лекций (5 курс, 10 сем., 32 ч., экзамен).......................... 81
Литература.............................................................................................................. 82
Объектно–ориентированный анализ и дизайн.................................................... 84
Программа курса лекций (6 курс, 11 сем., 64 ч., экзамен).......................... 84
Литература.............................................................................................................. 85
Архитектура и эволюция ЭВМ
Дубров
1. Булева Алгебра. Основные аксиомы и теоремы. Диаграммы Вейча. Карты Карно. Применение при проектировании и анализе работы ЭВМ.
2. Основные понятия об ЭВМ. Архитектура фон-Неймана, Гарвардская архитектура. Центральный процессор, память, внешние устройства. Понятие шины. Методы адресации памяти (прямая, непосредственная, регистровая, индексная, косвенная и т. д.). Методы доступа к периферийным устройствам.
3. Логическая организация памяти. Порядок младших/старших байт в многобайтовых словах (low endian, big endian). Страничная, сегментная адресация. Кэш-память, варианты кэш памяти (сквозная запись, с обратной записью). Расслоение физической памяти.
4. Методы ввода-вывода данных. Программный канал, ввод-вывод по прерываниям, прямой доступ в память.
5. Архитектура микроЭВМ на базе процессоров 8080/Z80. Строительные "кубики" фирмы Intel. Ограничения микроЭВМ на базе архитектуры 8080. Система команд, методы адресации. Методов адресации процессора 8080, дополнительные возможности процессора Z80. Сравнительный анализ архитектуры микроЭВМ на базе процессоров 8080, Z80 и M6800..
6. Однокристальные микроЭВМ семейства Intel 8048. Архитектура процессора, организация памяти данных и команд, регистры. Доступ к внешним устройствам. Ограничения. Поколение микроЭВМ улучшенной архитектуры - Intel 8051. Расширение возможностей 8051 (объем памяти, битовая обработка, прерывания, скорость выполнения).
7. Семейство PDP-11 (LSI-11). История и роль для всей отрасли компьютерной индустрии. Основные особенности PDP-11 – регистры общего назначения, «ортогональная» система команд, стек в ОЗУ. Слово состояния процессора. Асинхронная шина (Unibus и Q-bus). Достоинства и недостатки по сравнению с синхронной шиной, циклы чтения/записи, циклы прерывания, прямого доступа в память. Методы преодоления ограниченного адресного пространства - архитектура диспетчера памяти старших моделей PDP-11 и LSI-11. Предельный объем физической памяти, максимально возможный объем программы. Арифметические команды для чисел формата с плавающей запятой.
8. Семейство VAX. Супер-мини ЭВМ. Виртуальная память - основа построения мощных многопрограммных систем. Классический пример машины со сложным (CISC) набором команд. Организация физической, логической памяти, прерываний, ввода-вывода. Поддержка арифметики с плавающей запятой. Единица производительности - VUP.
9. Основные операционные системы семейств PDP-11 и LSI-11 (RT-11, RSX-11, TSX-11). Возможности, определяемые архитектурой ЭВМ (размер задач, количество пользователей, количество подключаемых периферийных устройств). Подкачка/выгрузка программ с диска/на диск в ОЗУ/из ОЗУ (swapping). Основы виртуальной памяти в RSX - путь к системе VAX/VMS.
10. Архитектура процессора i8086 и ЭВМ на его основе (IBM PC). Регистры, ориентация на экономию памяти. Методы адресации. Шина IBM PC, прерывания, прямой доступ к памяти. Подключение внешних устройств. Диски, флоппи-диски, порт RS232, параллельный порт. Карта памяти. Системный BIOS, BIOS-ы периферийных устройств - назначение и организация. Арифметический сопроцессор i8087, сопряжение с центральным процессором. Очередь команд.
11. Дальнейшее развитие архитектуры 8086 - процессор 80286. Персональный компьютер на основе 80286 - IBM PC AT. Попытка прорваться через одномегабайтный барьер ОЗУ. Два режима работы - реальный, защищенный. Карта памяти для каждого из них. Неудачные решения, заложенные в архитектуру процессора - барьер для построения надежно работающих операционных систем. Полезная ошибка при работе с сегментом с максимальным адресом. Развитие сегментного доступа к памяти - дескрипторные таблицы. Ограничения на объем сегментов.
12. Процессоры архитектуры 80386 и 80486. Три режима работы - реальный, защищенный, виртуальный 8086. Преодоление 16-ти разрядного барьера в размере сегментов, комбинация страничных и сегментных способов адресации. Кэш. Бремя совместимости со старыми моделями процессоров. Архитектурные преимущества при работе в системе MS DOS по сравнению с моделями 8086 и 80286. Использование преимуществ 32-х разрядной памяти. Плоская (flat) модель памяти. Многошинная структура современных PC. SCSI-интерфейс для подключения внешних устройств.
13. Основные операционные системы для машин с архитектурой PC - DOS, Windows, OS/2, Unix. Сетевая система Netware.
14. Противостояние и постепенное сближение машин с CISC и RISC архитектурой. (Pentium, Pentium Pro, P7 фирмы Intel). Основные представители RISC архитектуры - Alpha (DEC), PA-RISC (Hewlett Packard), SPARC (Sun), Power PC (IBM, Motorola, Apple), R4xxx, R8xxx, R10000 (MIPS Technology).
15. Архитектура мэйнфрэймов (main frames) на примере классических машин семейства IBM/370. Многопроцессорная архитектура, каналы и автономные процессоры ввода-вывода. Методы адресации операндов, PSW. Поддержка шести видов прерываний - обращение к супервизору, программные, ввода-вывода, внешние, повторного пуска и от схем контроля. Аппаратная поддержка режимов "супервизор" - "задача". Кэш память, расслоение памяти. Концептуальный и действительный порядок выполнения программ. Экологическая ниша классических "больших" ЭВМ в современных условиях.
16. Архитектура суперЭВМ. Классификация суперЭВМ (векторные, параллельные, SIMD, MIMD т. д.). "Перемалыватели" чисел для массово-параллельных задач (многопроцессорный суперкомпьютер Paragon фирмы Intel). CRAY, роль и влияние на сектор высокопроизводительных машин. Система команд, методы адресации. Использование преимуществ параллельных архитектур (параллельные языки программирования).
1. Принципы работы системы IBM/370. П/р . Москва, "Мир", 1975.
2. Компьтеры. Справочное руководство в трех томах. П/р Г. Хелмса. Т.1. Москва, "Мир", 1986.
3. Супер-ЭВМ. Аппаратная и программная реализация. П/р С. Фернбаха. Москва, "Радио и связь", 1991.
4. Р. Хокни, К. Джессхоуп. Параллельные ЭВМ. Архитектура, программирование и алгоритмы. Моска, "Радио и связь", 1986.
5. Э. Клингман. Проектирование микропроцессорных систем. Москва, "Мир", 1983 (?).
6. Э. Клингман. Проектирование специализированных микропроцессорных систем. Москва, "Мир", 1985.
7. , , . Проектирование цифровых устройств на однокристальных микроконтроллерах. Москва, "Энергоатомиздат", 1990.
8. Мини - и микро ЭВМ семейства "Электроника". Производственное издание. и др. Москва, "радио и связь", 1987.
9. М. Сингер. Мини-ЭВМ PDP-11: программирование на языке ассемблера и организация машины. Серия "Математическое обеспечение ЭВМ". Москва, "Мир", 1984.
10. Центральный процессор М2. ТО и инструкция по эксплуатации. ЦНИИ "Электроника", 1982.
11. Ю-Чжень Лю, Г. Гибсон. Микропроцессоры семейства 8086/8088. Москва, "Радио и связь", 1987.
12. , . Архитектура микропроцессора 80286. Москва, "Радио и связь", 1990.
13. . Архитектура микропроцессора 80486, в 4-х томах.
14. . Архитектура конвейерных ЭВМ. Москва, "Радио и связь", 1985.
15. Ч. Кэпс, Р. Стаффорд. VAX: программирование на языке ассемблера и архитектура. Москва, "Радио и связь", 1991.
16. Г. Майерс. Архитектура современных ЭВМ, в 2-х книгах. Москва, "Мир", 1985.
17. Э. Таненбаум. Многоуровневая организация ЭВМ. Москва, "Мир", 1979.
18. Э. Таненбаум. Архитектура компьютера. 4-ое издание. "Питер", 2002.
ЭВМ в планировании и обработке физического эксперимента
(2 курс, 3 сем., 72 ч., диф. зачёт)
Профессор, д. ф.-м. н. Александр Дмитриевич Букин
Занятия на практикуме предваряются вводными лекциями со следующей программой.
1. Структура большого вычислительного центра на примере ВЦ ИЯФ СО РАН: машины коллективного пользования, локальные сети машин, используемых в разных экспериментах. Пакетный и интерактивный режимы работы ЭВМ. Возможности использования ЭВМ типа VAX с терминалов локальной сети в ИЯФ. Библиотеки стандартных программ.
2. Принципы работы операционной системы VAX/VMS. Основные команды. Выполнение простой программы на Фортране.
3. Аналитические вычисления на ЭВМ. Система REDUCE. Простейшие операции с программой REDUCE: подстановки, дифференцирование, свертки. Особенности использования REDUCE на машине VAXINPZ в ИЯФ СО РАН.
4. Основные понятия Фортрана. Запись операторов, типы данных, простые и индексированные переменные, операции и выражения. Неисполняемые операторы: описания типа, DATA, END. Операторы присваивания, ввод-вывод, форматы.
5. Фортран. Операторы передачи управления, циклы, неявные циклы. Процедуры: подпрограммы, подпрограммы-функции, встроенные функции. Формальные и фактические параметры. Общие блоки, оператор EXTERNAL. Стиль программирования. Эффективность программ и алгоритмов.
6. Случайные величины, плотность вероятности и распределение случайной величины. Характеристики распределения: среднее, дисперсия. Некоторые часто встречающиеся распределения и их свойства: равномерное, пуассоновское, нормальное. Датчики случайных чисел.
7. Метод Монте-Карло. Получение произвольных распределений случайной величины: метод прямой выборки, метод Неймана, существенная выборка, композиционный метод. Гистограммы. Вычисление определенных интегралов.
8. Моделирование физических процессов и методов наблюдения методом Монте-Карло. Моделирование в ядерном эксперименте на примере регистрации событий в детекторе. Розыгрыш ливней и каскадов.
9. Численные методы минимизации функций нескольких переменных. Метод «золотого сечения» для одномерного случая. Эффективность алгоритма минимизации. Локальные минимумы, проблема глобального минимума. Критерий нахождения минимума.
10. Определение параметров модели по экспериментальным данным. Метод наименьших квадратов. Задача об усреднении результатов независимых экспериментов. Аппроксимация прямой линией.
11. Метод максимального правдоподобия. Определение параметров и их ошибок на примере подгонки резонансов. Доверительные интервалы, нахождение верхних пределов.
12. Проверка гипотез. Критерий согласия c2, число степеней свободы. Распределение Стьюдента и его применения.
Профессор, д. ф.-м. н., Александр Дмитриевич Букин
Практические задания состоят из шести задач, которые надо решить, написав программу на языке программирования Фортран (кроме задания с аналитическими вычислениями, где используется язык REDUCE). Каждая программа должна быть отлажена на предмет технических сбоев, должна выдавать правильный ответ, и для зачета еще требуется ответить на теоретические вопросы, решаемые в данной задаче. Каждому студенту предлагается отдельный вариант. Темы задач следующие:
1. Вычисление определенного интеграла методом трапеций.
2. Проведение простых аналитических вычислений, связанных с матричной алгеброй и дифференцированием. Применение дифференцирования для определения моментов функций распределения с помощью производящей функции моментов.
3. Разработка генератора случайных чисел для заданного распределения вероятностей.
4. Вычисление определенного интеграла от данной функции двух переменных методом Монте-Карло с оценкой точности вычисления. Интегрирование требуется выполнить двумя методами.
5. Минимизация функции двух переменных своей программой минимизации и программой MINUIT, разработанной в ЦЕРН.
6. Получение параметров f-резонанса по экспериментальным данным. Оценка статистической точности параметров.
1. , . ЭВМ в планировании и обработке эксперимента. Учебное пособие. Ред.-изд. отдел НГУ, Новосибирск, 1995, 87 стр.
2. , . ЭВМ в планировании и обработке эксперимента. Учебное пособие. Изд. 2-е, испр. И доп. Ред.-изд. отдел НГУ, Новосибирск, 2002, 114 стр.
3. Д. Мак-Кракен, У. Дорн. Численные методы и программирование на Фортране. «Мир», Москва, 1977.
4. Ч. Хьюз и др. Методы программирования: курс на основе Фортрана. «Мир», Москва, 1981.
5. Г. Катцан. Язык Фортран 77. «Мир», Москва, 1982.
6. Х. Гулд, Я. Тобочник. Компьютерное моделирование в физике. Часть вторая. М.: «Мир», 1990.
7. Г. Майерс. Искусство тестирования программ. «Финансы и статистика», Москва, 1982.
8. Д. Худсон. Статистика для физиков. «Мир», Москва, 1970.
9. . Искусство программирования для ЭВМ. Том 2. Получисленные алгоритмы. М.: Мир, 1977.
10. Д. Тернер. Вероятность, статистика и исследование операций. «Статистика», Москва, 1976.
11. . Численные методы Монте-Карло. «Наука», Москва, 1973.
12. , . Курс статистического моделирования. М.: «Наука», 1976.
13. Г. Корн и Т. Корн. Справочник по математике для научных работников и инженеров. М.: «Наука», 1973.
14. М. Аоки. Введение в методы оптимизации. «Наука», Москва, 1977.
15. Дж. Дайамендстоун и компания «И-Ар-Ай Трейнинг». Использование ОС VAX/VMS. «Мир», Москва, 1992.
16. , , . Аналитические вычисления на ЭВМ в приложении к физике и математике. Успехи физических наук, 1980, т.130, вып.1, с. 113-147.
17. и др. Язык аналитических вычислений REDUCE. М.: Издательство МГУ, 1983.
Обьектно‑Ориентированное программирование
(2 курс, 3 сем., 72 ч., диф. зачёт)
Рылов
Объектно-ориентированная модель
1. Основные принципы объектно-ориентированного программирования (4 часа)
1.1. Эволюция методологий программирования
1.1.1. Начало начал, или первое поколение языков программирования.
1.1.2. Развитие алгоритмических абстракций, или второе поколение языков программирования.
1.1.3. Модуль как единица построения программных систем, третье поколение языков программирования.
1.1.4. Зарождение объектной модели, четвертое поколение языков программирования.
1.1.5. Объектные языки программирования, объектно-ориентированные языки программирования, объектно-ориентированный анализ, дизайн и проектирование.
1.1.6. Парадигмы программирования.
1.2. Составные части объектного подхода
1.2.1. Абстрагирование
1.2.2. Инкапсуляция
1.2.3. Модульность
1.2.4. Иерархия
1.2.5. Типизация
1.2.6. Параллелизм
1.2.7. Сохраняемость
2. Объектно-ориентированная модель (2 часа)
2.1. Понятие объекта
2.2. Свойства, присущие объектам
2.2.1. Состояние
2.2.2. Поведение
2.2.3. Идентичность
2.3. Отношения между объектами
2.3.1. Типы отношений
2.3.2. Связь (ассоциация)
2.3.3. Агрегация
3. Классы (2 часа)
3.1. Природа классов.
3.2. UML – унифицированный язык моделирования. Четырехуровневая метамодель MOF
3.3. Отношения между классами.
3.3.1. Типы отношений
3.3.2. Ассоциация
3.3.3. Агрегация, Композиция.
3.3.4. Использование
3.3.5. Наследование
3.3.6. Инстанцирование
3.4. Отношения между классами и объектами
Инструментальные средства ООП языка программирования C++
4. Основные алгоритмические отличия C++ от C (2 часа)
4.1. Использование ссылок. Передача аргументов функции по ссылке.
4.2. Использование констант.
4.3. Логические тип и перечисления.
4.4. Операторы управления динамической памятью, инициализация массивов.
4.5. Структура программы, раздельная компиляция и особенности использования статической памяти.
4.6. Функциональный полиморфизм.
4.7. Пространства имен и исключения (краткий обзор)
4.8. Библиотека ввода вывода (краткий обзор iostream)
5. Средства объектного программирования языка C++ (6 часов)
5.1. Представление объектов и классов.
5.1.1. Реализация поведения объектов на примере добавления функций—членов в структуры. Структура как вырожденный класс.
5.1.2. Структура объявления класса.
5.1.3. Доступ к членам класса.
5.1.4. Поля данных класса как механизм реализации состояния объекта.
5.1.5. Функции члены класса как механизм реализации поведения объекта.
5.1.6. Спецификаторы доступа для обеспечения инкапсуляции.
5.1.7. Средства управления жизнью объекта. Конструирование и уничтожение объектов и массивов объектов.
5.1.8. Особенности использования конструктора копии, конструктора по умолчанию, оператора присваивания.
5.1.9. Описание селекторов и модификаторов.
5.1.10. Перегрузка операторов C++ как реализация поведения с предопределенным смыслом.
5.1.11. Дружественность как механизм нарушения инкапсуляции. Достоинства и недостатки механизма дружественности.
5.1.12. Статические поля и методы классов. Инициализация статических полей.
5.2. Реализация отношений между объектами и классами
5.2.1. Ассоциация и агрегация объектов и классов. Зависимость по времени жизни.
5.2.2. Использование и зависимость от интерфейсов.
5.2.3. Объекты при передаче параметров и возврате из методов.
5.2.4. Варианты реализации отношения клиент-сервер.
5.2.5. Внутренние классы.
6. Средства объектно-ориентированного программирования С++ (7 часов)
6.1. Наследование как средство организации иерархий классов. Принцип замещения Лисковой.
6.2. Одиночное наследование.
6.2.1. Понятие производного класса.
6.2.2. Управление доступом в производных классах.
6.2.3. Конструкторы и деструкторы, совмещение имен методов при наследовании, иерархии.
6.2.4. Абстрактные классы и виртуальные функции.
6.2.5. Виртуальный полиморфизм.
6.2.6. Информация о типе на этапе выполнения. RTTI.
6.3. Множественное наследование
6.3.1. Проблема множественного наследования. Виртуальное наследование как средство разрешения коллизий.
6.3.2. Порядок вызовов конструкторов и деструкторов при множественном наследовании.
6.3.3. Чистые виртуальные классы, понятие интерфейса.
6.3.4. Принципы дизайна иерархий классов. OCP, DIP, ISP.
6.4. Пространства имен.
6.4.1. Пространства имен как средство реализации модульности.
6.4.2. Поиск имен и разрешение конфликтов.
6.4.3. Объединение пространств имен.
6.4.4. Принципы дизайна пакетов.
6.5. Обработка исключений.
6.5.1. Обработка ошибок.
6.5.2. Группировка и перехват исключений.
6.5.3. Управление ресурсами.
6.5.4. Исключения и эффективность.
6.5.5. Альтернативные методы обработки ошибок.
6.5.6. Стандартные исключения.
7. Обобщенное программирование. (3 часа)
7.1. Шаблоны классов.
7.1.1. Определение шаблона.
7.1.2. Инстанцирование.
7.1.3. Параметры шаблонов и проверка типов.
7.2. Шаблоны функций.
7.3. Специализация.
7.4. Наследование и шаблоны.
8. Стандартная библиотека С++. (6 часов)
8.1. Библиотека стандартных шаблонов
8.1.1. Общие сведения (понятия контейнеров, итераторов и объектов-функций)
8.1.2. Контейнеры (виды контейнеров, последовательные и ассоциативные контейнеры, адаптеры)
8.1.3. Итераторы (итератор как обобщение указателя, классы итераторов)
8.1.4. Алгоритмы (примеры алгоритмов с использованием итераторов: алгоритмы сортировки, алгоритмы, не изменяющие содержание контейнера, алгоритмы, изменяющие содержание контейнера)
8.2. Библиотека ввода-вывода
8.2.1. Потоки вывода. Вывод типов определяемых пользователем.
8.2.2. Потоки ввода. Ввод типов определяемых пользователем.
8.2.3. Форматирование в потоках ввода-вывода.
8.2.4. Буферизация.
Рылов
1. Тема: Введение в объектное программирование на С++.
Продолжительность: 4 занятия.
Цель: Обобщить знания студентов в инструментальном языке Си, познакомиться с концепцией объектного подхода, используя только механизм структур языка C++, написать командный интерпретатор, который понадобиться для выполнения последующих заданий.
Практические задания: Написание программы обеспечивающей функциональность записной книжки с использованием средств языка С. Запрограммировать структуры Record, Command и функции операций над ними. Объединить функции манипуляции с данными структур в интерфейс структуры (сделать их функциями-членами). Обеспечить выполнение команд поиска, редактирования и сохранения содержимого записной книжки в файл.
2. Тема: Знакомство со структурой класса в языке С++.
Продолжительность: 1 занятие.
Цель: Выработать понимание студентами структуры класса в языке С++, функциональности и назначения функций конструктора, конструктора по умолчанию, конструктора копии, оператора присваивания, деструктора. Познакомить студентов с механизмом создания и удаления объектов и массивов объектов.
Практические задания: Написать программу и реализовать класс – контейнер с элементарным набором операций, манипулирующий объектами заданного типа. Реализовать набор конструкторов, оператор присваивания и деструктор для объектов класса контейнера.
3. Тема: Знакомство с операторами языка С++.
Продолжительность: 2 занятия.
Цель: Научить студентов механизму перегрузки стандартных операторов языка С++, выработать понимание принципов приведения аргументов. Закрепить навыки описания классов и управления механизмом создания/уничтожения объектов.
Практические задания: Запрограммировать классы Vector и Matrix фиксированных размеров для реализации вектора и матрицы. Обеспечить полный набор операций для каждого типа. Модифицировать полученные классы так, чтобы обеспечить операции в комплексном унитарном пространстве.
4. Тема: Реализация “copy on write” механизма.
Продолжительность: 1 занятие.
Цель: Развитие навыков реализации сложных композиционных отношений между объектами. Операции с большим множеством объектов. Работа с большими объемами памяти.
Практические задания: Реализуйте класс String классическим образом и с помощью механизма “copy on write”. Замерьте разницу в производительности при операциях с большими массивами строк реализованных с помощью данных механизмов. В качестве источника данных можно взять текстовый файл размером несколько десятков мегабайт.
5. Тема: Итераторы.
Продолжительность: 1 занятие.
Цель: Развитие навыков работы с итераторами.
Практические задания: Реализуйте класс Iterator как внутренний класс контейнера из задания №2. Обеспечьте доступ к элементам контейнера в прямом и обратном порядке.
6. Тема: Наследование. Виртуальные функции.
Продолжительность: 1 занятие.
Цель: Знакомство с механизмом одиночного и множественного наследования в C++. Изучение порядка инициализации и вызовов конструкторов. Знакомство с абстрактными классами и виртуальными функциями.
Практические задания: Напишите программу, демонстрирующую порядок вызовов конструкторов и деструкторов при создании объекта класса в иерархии классов. Напишите программу, которая вызовет чисто виртуальную функцию. Объясните, как она работает.
7. Тема: Шаблоны.
Продолжительность: 3 занятия.
Цель: Знакомство с шаблонами классов и функций.
Практические задания: Переделайте класс контейнера и итератора с использованием шаблонов. Реализуйте итератор с произвольным доступом. Напишите шаблон класса Comparator для осуществления операции сравнения двух объектов. Напишите шаблон функции sort, реализующей механизм быстрой сортировки для контейнера с использованием класса Comparator. Напишите тестовую программу, сортирующую контейнер объектов типа String из задания №4 в прямом и обратном порядке.
8. Тема: Иерархии классов и объектов.
Продолжительность: 3 занятия.
Цель: Написание программы с использованием иерархии классов и объектов. Отработка и закрепление основных методов объектно-ориентированного программирования.
Практические задания: Используя командный интерпретатор из задания №1, напишите диалоговую программу управления базой данных сотрудников небольшого предприятия. Постройте иерархию классов и выделите ключевые абстракции. Должны присутствовать такие абстракции, как PersonalRecord, Department, Employer, Manager, Developer, Salary, TermOfEmployment. Программа должна поддерживать сохранение данных на диске и быть легко расширяемой для добавления новых абстракций в систему.
9. Тема: Сдача заданий, самостоятельная работа.
1. Объектно-ориентированное программирование, анализ и дизайн. Учебное пособие. / , Рылов : ИМ СО РАН, 2002
2. Объектно ориентированный анализ и проектирование с примерами приложений на С++, 2-е изд./Буч Гр. Пер. с англ. – СПб.; М.: «Невский Диалект» – «Издательство БИНОМ», 1999.
3. Принципы объектно-ориентированной разработки программ. 2-е изд. /Элиенс Антон. Пер с англ. – М.: Издательский дом «Вильямс», 2002
4. Язык UML. Руководство пользователя/ : Пер. с англ. – М. ДМК, 2000.
5. Язык программирования C++, 3-е изд./ Пер. с англ. – СПб.; М.: «Невский Диалект» – «Издательство БИНОМ», 1999 г.
6. Дизайн и эволюция языка С++. / Пер. с англ. – М. ДМК, 2000
7. Правила программирования C & C++ / Под редакцией – М.: Восточная книжная компания. 1996
8. Эффективное использование С+рекомендаций по улучшению ваших программ и проектов / Пер. с англ. – М. ДМК, 2000
9. Наиболее эффективное использование С+новых рекомендаций по улучшению ваших программ и проектов. / Пер. с англ. – М. ДМК, 2000
10. Философия Java / Эйкель Брюс – СПб.: Питер, 2001
11. Java 2. Наиболее полное руководство / – СПб.: BHV, 2001
Обьектно‑Ориентированное программирование
(2 курс, 4 сем., 64 ч., диф. зачёт)
Рылов
Инструментальные средства ООП языка программирования Java
1. Виртуальная машина Java (2 часа)
1.1. История и предпосылки появления Java.
1.2. Понятие виртуальной машины. Среда исполнения и байт-код. Взаимодействие виртуальной машины с операционной системой.
1.3. Пространства классов. Структура приложений на Java. Загрузка классов и инициализация объектов.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


