Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Московский институт электроники и математики Национального исследовательского университета "Высшая школа экономики" Факультет прикладной математики и кибернетики. Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность подготовки специалиста Автор программы: Лебедев Андрей Сергеевич, кандидат технических наук Одобрена на заседании кафедры Компьютерной безопасности «05» сентября 2012 г Зав. кафедрой А.Б. Лось Рекомендована секцией УМС ФПМиК Председатель А.Ю. Истратов «___»____________ 20 г Москва, 2013 Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста 1. Цели и задачи дисциплины Целью изучения дисциплины «Языки программирования» является подготовка специалистов к деятельности, связанной с разработкой программного обеспечения для решения профессиональных задач. Задачи дисциплины: изучение общих принципов построения и использования современных языков программирования; изучение основ алгоритмизации; изучение средств описания данных и средств описания действий языков программирования высокого уровня; изучение объектно-ориентированного программирования; изучение языка ассемблера персонального компьютера; овладение навыками программирования; освоение современных сред создания программных продуктов. 2. Место дисциплины в структуре ООП Дисциплина «Языки программирования» относится к базовой части профессионального цикла. Для успешного усвоения данной дисциплины необходимо, чтобы студент владел знаниями, умениями и навыками, сформированными в процессе изучения дисциплин: «Математический анализ», «Алгебра», «Геометрия» – знать основные понятия и методы математического анализа, алгебры, геометрии; уметь решать задачи теории пределов функций, дифференцирования, интегрирования и разложения функций в ряды; владеть навыками использования стандартных методов и моделей математического анализа и их применения к решению прикладных задач; «Информатика» – знать состав, назначение функциональных компонентов и программного обеспечения персонального компьютера; уметь применять персональные компьютеры для обработки различных видов информации; «Аппаратные средства вычислительной техники» – знать структуру и принципы работы современных и перспективных микропроцессоров; «Английский язык» – знать лексический и грамматический минимум в объеме, необходимом для работы с текстами профессиональной направленности на иностранном языке; владеть иностранным языком в объёме, необходимом для получения и изложения информации по профессиональной тематике. Дисциплина «Языки программирования» является предшествующей для изучения следующих базовых дисциплин: «Методы программирования», «Операционные системы», «Вычислительные сети», «Системы управления базами данных», «Защита в операционных системах», «Защита программ и данных», «Криптографические методы защиты информации». Знания и практические навыки, полученные в результате освоения дисциплины «Языки программирования», используются студентами при разработке курсовых и дипломных работ, в научно-исследовательской работе. 3. Требования к результатам освоения дисциплины Процесс изучения дисциплины направлен на формирование следующих компетенций: способность к логически-правильному мышлению, обобщению, анализу, критическому осмыслению информации, систематизации, прогнозированию, постановке исследовательских задач и выбору путей их решения на основании принципов научного познания (ОК9); способность применять математический аппарат, в том числе с использованием вы- Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста числительной техники, для решения профессиональных задач (ПК-2); способность работать с программными средствами прикладного, системного и специального назначения (ПК-8); способность использовать языки и системы программирования, инструментальные средства для решения различных профессиональных, исследовательских и прикладных задач (ПК-9); способность обосновывать правильность выбранной модели решения профессиональной задачи, сопоставлять экспериментальные данные и теоретические решения (ПК-28); В результате изучения дисциплины студент должен: знать: общие принципы построения и использования современных языков программирования высокого уровня; язык программирования высокого уровня (объектно-ориентированное программирование); язык ассемблера персонального компьютера; особенности взаимодействия языков высокого и низкого уровня, организации работы с данными в скриптовых языках; уметь: формализовать поставленную задачу; работать с интегрированными средами разработки программного обеспечения; владеть: навыками разработки, документирования, тестирования и отладки программ; web-технологиями, изучаемыми в процессе программирования на скриптовом языке PHP. навыками использования инструментальных средств отладки и дизассемблирования программного кода; 4. Объём дисциплины и виды учебной работы Вид учебной работы Аудиторные занятия (всего) В том числе: Лекции (Л) Практические занятия (ПЗ) Семинары (С) Лабораторные работы (ЛР) Контрольные работы (КР) Самостоятельная работа (всего) В том числе: Курсовой проект (работа) Расчётно-графические работы Коллоквиум Реферат Домашнее задание Другие виды самостоятельной работы (подготовка к занятиям, зачёту) Вид промежуточной аттестации и её трудоёмкость Всего ча- Семестры сов 1 2 216 72 72 3 72 108 36 36 36 144 54 54 36 Зачет Зачет Экзамен Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Общая трудоёмкость зачётных единиц часов 360 10 126 3.5 126 3.5 108 3 5. Содержание дисциплины 5.1. Содержание разделов (тем) дисциплины Раздел 1. Основы языков программирования высокого уровня. Языки С и C++ Тема № 1. Общая характеристика языков программирования Начальные сведения о языках программирования. Роль языков программирования. Характеристики и свойства языков программирования. История развития языков программирования. Поколения языков. Основные элементы языков программирования. Инструментальные средства разработки программ на языках высокого уровня в различных операционных системах. Тема № 2. Средства описания данных и средства описания действий Типизация языка. Определение типа. Контроль типов. Уровни типизации. Эквивалентность типов. Классы памяти. Простые типы данных. Перечислимые типы. Структурные типы данных: массивы, структуры, объединения, битовые поля. Указатели и ссылочные типы данных. Семантика средств описания действий. Операции, выражения и операторы действия. Операторы управления. Операторы последовательного выполнения, условные операторы, операторы цикла. Тема № 3. Дополнительные возможности языков программирования. Реализация различных алгоритмов обработки данных Блоки. Функции. Передача параметров в функции. Рекурсивные вызовы. Ввод-вывод данных. Обработка массивов и строк. Организация работы с динамической памятью. Реализация простейших алгоритмов и динамических структур данных на языке программирования высокого уровня. Перегрузка функций. Шаблоны функций. Препроцессорные средства. Макроподстановки. Раздел 2. Объектно-ориентированное программирование. Язык C++ Тема № 4. Основные принципы объектно-ориентированного программирования Основные понятия объектно-ориентированного программирования (ООП). Отличия ООП от процедурного программирования. Атрибуты объектов и пространства имен. Принцип инкапсуляции. Понятия наследования и полиморфизма. Тема № 5. Механизмы реализации объектно-ориентированного программирования в языке высокого уровня Описание абстрактных типов данных, доступ к компонентам класса. Методы класса. Конструкторы и деструкторы. Статические компоненты класса. Дружественные функции и классы. Перегрузка операций. Наследование и динамический полиморфизм. Абстрактные классы. Потоковые средства ввода/вывода данных. Тема № 6. Параметризация Шаблоны классов. Стандартная библиотека шаблонов STL: общие принципы функционирования; контейнеры; итераторы; алгоритмы; функторы. Тема № 7. Обработка исключительных ситуаций Механизм обработки исключений. Классы исключений. Стандартные исключения. Раздел 3. Создание приложений с графическим интерфейсом Тема № 8. Основные концепции визуального программирования Принципы программирования для операционной системы на языках С, С++ с применением API. Взаимодействие операционной системы и приложений. Архитектура приложений. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Тема № 9. Графический интерфейс пользователя Средства и методы для создания приложения с графическим интерфейсом пользователя. Приложения, основанные на диалоге. Приложения с однодокументным и многодокументным интерфейсами. Обработка командных сообщений. Элементы управления. Работа с графикой. Работа с файловой системой. Ресурсы приложения. Библиотеки динамической компоновки DLL. Раздел 4. Язык программирования Java Тема № 10. Основы программирования на языке Java Структура программы на языке Java. Алфавит языка, идентификаторы. Простые типы данных. Переменные. Операции, выражения, операторы. Классы. Переменные и методы Спецификаторы доступа к членам класса. Конструкторы. Наследование в Java. Переопределение методов. Абстрактные классы и методы. Класс Object. Пакеты и интерфейсы. Многопоточное программирование. Форматированный вводвывод, файлы произвольного доступа. Классы File, System и Properties. Тема № 11. Исключения в Java Обработка исключений. Иерархия исключений. Класс исключений времени выполнения. Создание собственных исключений. Использование исключений для отладки. Тема № 12. Структуры данных Массивы в Java. Работа со строками, классы String и StringBuffer. Классы коллекций LinkedList, Vector, Stack, Dictionary, Hashtable. Доступ к коллекции через итератор. Сериализация структур данных. Тема № 13. Понятие Java-апплета Класс Applet. Методы init и destroy. Получение и преобразование параметров в апплетах. Анимация апплета. Отладка и размещение Java-апплетов. Тема № 14. Применение языка для создания развитых приложений Компоненты пользовательского интерфейса Java. Обработка событий. Основы оконной графики. Взаимодействие языков Java и С/C++. Раздел 5. Скриптовый язык программирования PHP Тема № 14. Основы программирования на PHP Характеристика PHP. Переменные константы, типы данных. Выражения и операции. Управляющие конструкции языка. Тема № 15. Работа с массивами в PHP Сортировка различных типов массивов по ключам и по значениям, объединение массивов, «переворачивание» массивов, случайное перемешивание элементов списков. Теоретико-множественные операции. Тема № 16. Ассоциативные массивы Массивы: ассоциативный и список. Многомерный массив. Перебор ключей и значений массива. Заполнение массива и удаление элементов массива. Тема № 17. Работа со строками в PHP Строковые функции: конкатенация, сравнение строк, разбиение и склеивание строк, поиск в строке, поиск подстроки, обрезка строки, преобразование регистра, удаление символов, функция форматного преобразования sprintf(), замена подстрок. Тема № 18. Работа с данными формы Передача параметров в PHP-сценарии. Формы. Обработка данных, приходящих из форм. Массивы $_GET, $_POST, $_REQUEST Тема № 19. Управление сессиями Сохранение промежуточных значений. Сеансы(сессии). Инициализация сессии, сохранение и удаление сессионных переменных, разрушение сессии. Cookies. Тема № 20. Работа с файловой системой в PHP Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Создание файла/открытие/чтение/запись/ удаление. Исключительная и разделяемая блокировки. Проверка существования файла изменение атрибутов файла. Работа с директориями, просмотр директории. Функция GLOB, рекурсивный поиск файла, получение списка всех директорий. Проверка, является ли объект файлом либо директорией. Тема № 21. Работа с датой и временем Функции для работы с датой и временем. Формат timestamp. Построение времени в формате timestamp и преобразование в строчный формат. Тема № 22. Основы регулярных выражений (в формате PCRE) Регулярные выражения в формате PCRE. Предназначение. Синтаксис PCRE: ограничители, классы символов, перечисления, кванторы, карманы, модификаторы. Тема № 23. Функции и области видимости Функции в PHP. Области видимости переменных, глобальные переменные. Передача параметров по ссылке, по значению, предопределенные параметры. Рекурсия. Тема № 24. Организация библиотек Создание библиотеки. Подключение библиотеки, Разрешение конфликтов имен. Свойства и методы, статические свойства и методы. Использование библиотеки. Соглашения об именовании различных элементов библиотеки. 5.2. Разделы (темы) дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами № разделов данной дисциплины, необходи№ Наименование обеспечиваемых (по- мых для изучения обеспечиваемых (последующих) дисциплин п/п следующих) дисциплин 1 2 3 4 5 6 1 Методы программирования + + + + + 2 Операционные системы + + + 3 Вычислительные сети + + + 4 Системы управления базами данных + + + + + 5 Защита в операционных системах + + 6 Защита программ и данных + + + + + + Криптографические методы защиты + + 7 информации 5.3. Разделы (темы) дисциплины и виды занятий № Лекции, Раздел дисциплины п/п час Основы языков программирова1 ния высокого уровня. Языки С и C++ Объектно-ориентированное про2 граммирование. Язык C++ Создание приложений с графи3 ческим интерфейсом 4 Язык программирования Java Скриптовый язык программиро5 вания PHP ПЗ, час ЛР, час С, час СР, час Всего, час Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста 6. Формы контроля знаний студентов Тип контроля Текущий (неделя) Форма контроля Контрольная работа Эссе Реферат Коллоквиум Домашнее задание Промежу Зачет точный Экзамен 1 * 1 год 2 3 4 1 2 год 2 3 Кафедра Параметры ** 4 Например: письменная работа 60 минут Например: 3-4 тыс. слов Например: письменный экзамен 90 мин. Итоговы Зачет/ й Экзамен [Оставьте нужное] [Удалите соответствующие строки, если какой-либо контроль не предусмотрен в РУП. Удалите колонку "2 год", если дисциплина преподается в течение 1 года или удалите колонки с лишними номерами модулей/ семестров. Удалите колонку "Кафедра", если это НЕ межкафедральная дисциплина. * - Для текущего контроля указывается неделя модуля/ семестра, на которой проводится контроль, для промежуточного и итогового - отметка, в каком модуле/ семестре проводится. ** В графе Параметры указывается регламент (cвод постоянных или временных правил, регулирующих внутреннюю организацию и формы деятельности) проведения контроля (заполняется для каждого контроля соответственно): формат работы (письменная, устная, тест, тест в компьютерной программе и другое), время, отведенное на аудиторные работы, количество дней проведения контроля, количество дней оценки результатов контроля (только для итогового контроля), объем письменных работ для домашних работ, сроки сдачи письменных работ (число), время на самостоятельную подготовку письменных работ и другая информация, носящая регламентирующий характер.] Критерии оценки знаний, навыков [Укажите для каждого контроля, что должен продемонстрировать студент на текущем, промежуточном или итоговом контроле, чтобы получить оценку. Требования к ответу студента должны соотноситься с компетенциями (раздел 3), которые формируются у студента] Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале. [Если оценки выставляются по другой шкале, необходимо указать таблицу соответствия оценок по предложенной шкале и 10-ти балльной шкале. Если проводится тестирования, то приводится шкала интервальных баллов, соответствующая оценке за работу по 10-балльной шкале] По желанию автора программы, укажите особенности проведения контроля (образовательные технологии) При наличии, укажите, какая дистанционная поддержка осуществляется при проведении контроля (выдача заданий, проверка работ и др.). Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Порядок формирования оценок по дисциплине (подробные методические рекомендации по формированию оценок по дисциплине приведены в приложении) [Укажите, какую работу студента оценивает преподаватель, что влияет на оценку за промежуточный или итоговый контроль.] Преподаватель оценивает работу студентов на семинарских и практических занятиях: [Укажите, каким образом и что оценивается на семинарских и практических занятиях, например, активность студентов в деловых играх, дискуссиях, правильность решения задач на семинаре и т.д.]. Оценки за работу на семинарских и практических занятиях преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за работу на семинарских и практических занятиях определяется перед промежуточным или итоговым контролем - Оаудиторная. Преподаватель оценивает самостоятельную работу студентов: [Укажите, каким образом оценивается самостоятельная работа, например, правильность выполнения домашних работ, задания для которых выдаются на семинарских занятиях (имеются ввиду домашние работы, которые не включаются в РУП, это не форма текущего контроля "Домашнее задание"), полнота освещения темы, которую студент готовит для выступления с докладом на занятиидискуссии и т.д.]. Оценки за самостоятельную работу студента преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за самостоятельную работу определяется перед промежуточным или итоговым контролем – Осам. работа. Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: Онакопленная= k1* Отекущий + k2* Оауд + k3* Осам.работа где Отекущий рассчитывается как взвешенная сумма всех форм текущего контроля, предусмотренных в РУП Отекущий = n1·Оэссе + n2·Ок/р + n3·Ореф + n4·Окол + n5·Одз ; [Оставьте те формы текущего контроля, которые предусмотрены в РУП. сумма удельных весов должна быть равна единице: ∑ni = 1] Способ округления накопленной оценки текущего контроля: [указывается способ – арифметический, в пользу студента, другое]. Результирующая оценка за дисциплину рассчитывается следующим образом: 1. Если дисциплина преподается один модуль: Орезульт = k1* Онакопл + k *·Оэкз/зач Способ округления накопленной оценки промежуточного (итогового) контроля в форме зачета: [указывается способ – арифметический, в пользу студента, другое]. 2. Если дисциплина преподается несколько модулей (например, 3): Опромежуточная i = m1·Отекущая i этапа + m2·Опромежуточный зачет/экзамен Где Отекущая i этапа рассчитывается по приведенной выше формуле Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Онакопленная Итоговая= (Опромежуточная 1+ Опромежуточная 2+ Онакопленная 3):на число модулей где Опромежуточная 1+ Опромежуточная 2 – промежуточные оценки этапов 1 и 2, а Онакопленная 3 – накопленная оценка последнего этапа перед итоговым зачетом/экзаменом Способ округления накопленной оценки промежуточного (итогового) контроля в форме экзамена: [указывается способ – арифметический, в пользу студента, другое]. [Сумма удельных весов должна быть равна единице: ∑mi = 1, при этом, 0,2 ≤ m1 ≤ 0,8 (согласно Положению об организации контроля знаний, утвержденному УС НИУ ВШЭ от 29. 06.2012,протокол №38, приказ "О введении в действие новой редакции Положения об организации контроля знаний" № 6.18.1-06/2307-03 от 23.07.2012 г.)] [Далее, по желанию автора, определите, может ли студент получить возможность пересдать низкие результаты за текущий контроль или работу на занятиях, самостоятельную работу] На пересдаче студенту не предоставляется возможность получить дополнительный балл для компенсации оценки за текущий контроль. На зачете студент может получить дополнительный вопрос (дополнительную практическую задачу, решить к пересдаче домашнее задание), ответ на который оценивается в 1 балл. На экзамене студент может получить дополнительный вопрос (дополнительную практическую задачу, решить к пересдаче домашнее задание), ответ на который оценивается в 1 балл. [Оставьте те оценки, которые учитываются при выставлении результирующей оценки за промежуточный или итоговый контроль. Сумма удельных весов должна быть равна единице: ∑ki = 1, при этом, 0,2 ≤ k1 ≤ 0,8 После всех формул в обязательном порядке приводится способ округления полученного результата.] [Только для многомодульных дисциплин, по которым предусмотрен промежуточный контроль, укажите один из предложенных вариантов формирования оценки, которая идет в диплом] В диплом выставляет результирующая оценка по учебной дисциплине, которая формируется по следующей формуле: Орезульт = k1·Онакопл + k2·Оитоговый Способ округления результирующей оценки по учебной дисциплине: [указывается способ – арифметический, в пользу студента, другое]. ВНИМАНИЕ: оценка за итоговый контроль блокирующая, при неудовлетворительной итоговой оценке она равна результирующей. 7. Примерная тематика курсовых проектов (работ) Курсовой проект (работа) не предусмотрен. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста 8. Учебно-методическое и информационное обеспечение дисциплины 8.1. Основная литература 1. Котеров Д., Костарев А. PHP 5 в подлиннике. – СПб.: БХВ-Петербург, 2006. – 1120 с.: ил. 2. Ноутон П., Шилдт Г. Java 2. Наиболее полное руководство: В подлиннике: – СПб.: Издательство «БХВ-Петербург», 2008. – 1072 с.: ил. 3. Павловская Т.А. С/С++. Программирование на языке высокого уровня. Учебник. – СПб.: Питер, 2010. – 460 с. 4. Подбельский В. В., Фомин С. С. Программирование на языке Си. – М.: Издательство «Финансы и статистика», 2005. – 600 с. 5. Подбельский В.В. Стандартный Си++. Учебное пособие. – М.: Финансы и статистика, 2008. – 688 с. 6. Страуструп Б. Программирование: принципы и практика использования C++. / Пер. с англ. – М.: Издательский дом «Вильямс», 2010. – 1248 с.: ил. 7. Шилдт Г. C++ : базовый курс. / Пер. с англ. – М.: Издательский дом «Вильямс», 2010. – 624 с.: ил. 8. Юров В.И. Assembler. Учебник для вузов. 2-е изд. – СПб.: Питер, 2011. – 637 с.: ил. 8.2. Дополнительная литература 1. Вайсфельд М. Объектно-ориентированный подход: Java, .Net, C++. 2-е изд. / Пер. с англ. – М.: КУДИЦ-ОБРАЗ, 2005. – 336 с. 2. Веллинг Л., Томсон Л. Разработка web-приложений с помощью PHP и MySQL – М.: Издательский дом «Вильямс», 2007. – 880 с. 3. Гриффитс А. GCC. Настольная книга пользователей, программистов и системных администраторов. – К.: ООО «ТИД ДС», 2004. – 624 с. 4. Дейтел Х.М., Дейтел П.Дж. Как программировать на С++. 4-е изд. – М.: БиномПресс, 2010. – 1456 с. 5. Лаптев В.В. С++. Объектно-ориентированное программирование: Учебное пособие. – СПб.: Питер, 2008. – 464 с. 6. Лафоре Р. Объектно-ориентированное программирование в C++. 4-е изд. / Пер. с англ. – СПб.: Издательство «Питер», 2004. – 924 с. 7. Мюссер Д.Р., Дердж Ж.Дж., Сейни А. С++ и STL: справочное руководство. – М.: Издательский дом «Вильямс», 2010. – 432 с. 8. Павловская Т.А., Щупак Ю.А. С/С++. Структурное и объектно-ориентированное программирование. Практикум. – СПб.: Питер, 2010. – 352 с. 9. Прата С. Язык программирования С. Лекции и упражнения. – М.: Издательский дом Вильямс, 2006. – 960 с. 10. Себеста Р.У. Основные концепции языков программирования – М.: Издательский дом Вильямс, 2001. – 668 с. 11. Хорстман К.С., Корнелл Г. Библиотека профессионала. Java 2. Том 1. Основы. – М.: Издательский дом «Вильямс», 2004. – 848 с. 12. Хорстман К.С., Корнелл Г. Библиотека профессионала. Java 2. Том 2. Тонкости программирования. – М.: Издательский дом «Вильямс», 2004. – 1120 с. 13. Хортон А. Visual C++ 2010. Полный курс. – М.: Диалектика, 2010. – 1216 с. 8.3. Программное обеспечение 1. Операционные системы: семейства Windows (не ниже Windows XP), Linux. 2. Среды программирования, например, Microsoft Visual C++ Express Edition, JDK, Netbeans, Microsoft Visual C#, Express Edition, MonoDevelop или иные; компилятор gcc (для ОС Linux), редактор Emacs или иной; справочная система Microsoft Development Network или иная; Apache web-сервер; PHP 5; текстовый редактор или среда разработки программ на язы- Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста ке ассемблера с подсветкой синтаксиса языка; трансляторы языка ассемблера, например, TASM, MASM, FASM или иные; отладчик, например, Turbo Debugger, или иной. 8.4. Базы данных, информационно-справочные и поисковые системы − вузовская электронно-библиотечная система учебной литературы http://miem.edu/ru/ − база научно-технической информации (ВИНИТИ РАН) Электронно-библиотечная система обеспечивает возможность индивидуального доступа для каждого обучающегося из любой точки, в которой имеется доступ к сети Интернет. 9. Материально-техническое обеспечение дисциплины Для проведения всех видов занятий необходимо презентационное оборудование (мультимедийный проектор, ноутбук, экран) – 1 комплект. Для проведения практических занятий необходимо наличие компьютерных классов, оборудованных современной вычислительной техникой из расчёта одно рабочее место на одного обучаемого. Для эффективной работы в рамках дисциплины рекомендуется иметь возможность работать с исходными текстами программ, сохраненными на съёмных накопителях информации. 10. Методические рекомендации по организации изучения дисциплины Цель обучения достигается сочетанием применения традиционных и инновационных педагогических технологий. При проведении лекционных занятий целесообразно широко применять такую форму как лекция-визуализация, сопровождая изложение теоретического материала презентациями, при этом желательно заблаговременно обеспечить студентов раздаточным материалом. Основной упор в методике проведения практических занятий должен быть сделан на отработке и закреплении учебного материала в процессе выполнения заданий с применением вычислительной техники в компьютерном классе. Особое внимание при этом должно быть уделено применению элементов проблемного и контекстного обучения, опережающей самостоятельной работе студентов. Для эффективной работы студентов на практических занятиях целесообразно формировать подгруппы численностью не более 12 человек. Целесообразно осуществлять проведение экзамена в форме устного опроса по билетам и решения задачи с использованием одного из изученных языков программирования, а зачётов – как в форме устного опроса по билетам, так и в форме тестирования. Примерный перечень тем домашних заданий: 1. Средствами языка C++ провести моделирование некоторой предметной области с объектами классов и необходимыми операциями над ними. Разработать интерфейс – диалог в виде меню. 2. Реализовать в виде шаблонного класса динамическую структуру данных (например, линейный список, стек, очередь, дек) и организовать работу с объектами этого класса. 3. Создать приложение, реализующее иерархию наследуемых классов (для некоторой предметной области) и использующее механизм виртуальных функций. 4. Провести моделирование заданной предметной области и обработку необходимых данных с использованием STL. 5. Создать с помощью языка Java и использовать собственные динамические структуры данных. 6. Создать приложение Java с графическим интерфейсом. 7. Создать Java-апплет, использующий модель делегирования событий. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста 8. Реализовать FTP-клиент на языке PHP с возможностью рекурсивного выкачивания информации по маске. 9. Создать графическую библиотеку на языке PHP, позволяющую производить уменьшение, обрезку, обесцвечивание и нанесение водяных знаков на изображения. 10. Реализовать библиотеку, реализующую «очистку» и валидацию html-кода по стандарту xhtml. 11. Реализовать почтовый клиент, позволяющий получать и отправлять письма через pop3/smtp сервера с использованием вложений. 12. Реализовать заданный алгоритм на языке ассемблера. 13. Разработать процедуру обработки текстовой строки на языке ассемблера. 14. Создать диспетчер вытесненной мультизадачности, функционирующий в защищенном режиме процессора. 15. Реализовать программу на языке С, включающую модуль, написанный на языке ассемблера. 16. Создать программу на языке ассемблера, являющуюся консольным приложением ОС Windows. Примерный перечень вопросов для контрольных работ: 1. Реализация абстрактного типа данных в виде класса на объектно-ориентированном языке программирования С++. 2. Реализация собственного шаблонного класса на объектно-ориентированном языке программирования С++, использующего обработку исключений. 3. Создание программы на Java с иерархией классов, реализующих ряд интерфейсов. 4. Реализация программы на PHP, взаимодействующей с сессионным окружением и получающей данные различными методами протокола HTTP. 5. Реализация программы на PHP, осуществляющей синтаксический разбор текстовых блоков с использованием регулярных выражений в формате PCRE. 6. Реализация процедуры обработки текстовой строки на языке ассемблера. Примерный перечень вопросов для опросов на практических занятиях: 1. Какие функции используются в языке программирования C для работы с динамической памятью? 2. В чём заключаются отличия макросов от функций языка программирования C? 3. Сформулируйте основные правила, используемые при перегрузке функций в языке C++. 4. Сколько конструкторов и деструкторов может содержать класс в языке C++? Допускается ли их перегрузка? 5. Чем открытое наследование классов в языке C++ отличается от защищённого и закрытого? 6. Какие типы параметров шаблона класса допускаются в языке C++? 7. С помощью какого механизма в С++ реализуется динамический полиморфизм? 8. Перечислите средства объектно-ориентированного языка C++, используемые для форматированного ввода-вывода. 9. Сформулируйте принципы программирования для операционной системы на языке С++ с применением API. 10. Как происходит взаимодействие операционной системы и приложения? 11. Какие существуют средства и методы для создания приложения с графическим интерфейсом пользователя? 12. Какие категории программ можно создать на языке Java? Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста 13. Какие группы типов существуют в языке Java? В чём состоит отличие от C++? Что такое классы-оболочки в Java? 14. Какие спецификации формата используются для вывода объектов простых типов и строк в языке Java? 15. К какому типу данных относятся массивы в Java? В чём состоит отличие от C++? 16. Перечислите способы инициализации полей объекта в Java. 17. Сформулируйте особенности статических переменных и методов класса в Java. 18. В чём состоит отличие интерфейсов от абстрактных классов в Java? 19. Как обеспечить синхронизацию потоков в Java по ресурсам и по событиям? 20. В чём состоит различие между Java-приложением и Java-апплетом? 21. Как организовать передачу параметров в апплет? 22. Как организована в Java модель делегирования событий? 23. Какие существуют виды файловых блокировок в PHP? 24. Что такое сеанс в PHP? 25. Перечислите основные суперглобальные массивы в PHP. 26. Для чего используется в PHP цикл foreach(), какие виды этого цикла Вы знаете? 27. Что такое регулярное выражение в PHP? 28. Что такое библиотека в PHP? 29. Чем язык ассемблера отличается от языков программирования высокого уровня? 30. Для каких целей используется директива ASSUME? 31. Чем продиктованы ограничения по количеству и размеру сегментов при разработке программ на языке ассемблера? 32. Основные отличия реального, защищенного и виртуального режимов процессора 80386? 33. Какие типы адресов используются в реальном режиме процессора 80386? 34. Как используется стек при вызове процедур и прерываний? 35. В чем отличие флагов CF и OF регистра флагов процессора? 36. С помощью каких команд можно произвести чтение старшей части регистра EAX? 37. Какие флаги будут установлены после выполнения команды CMP AL, AH, если до ее выполнения регистр AL=200, AH=-100? 38. Сколько раз будет выполнен цикл, организованный командой LOOP, если перед его выполнением в регистр ECX было загружено значение 0? 39. С помощью каких команд можно умножить содержимое регистра EAX на 2? 40. Какие виды определяемых пользователем типов данных существуют в языке ассемблера? 41. Каково назначение уровней привилегированности CPL, DPL, RPL, IOPL? 42. Каково назначение таблицы глобальных и локальных дескрипторов, таблицы дескрипторов прерываний? 43. Назовите основные принципы организации защиты в защищенном режиме работы процессора. 44. Приведите основные соглашения о вызовах языка С. 45. Каким образом передаются параметры в функцию и возвращается результат её работы при использовании соглашения FASTCALL? Составитель: /А.С. Лебедев/ Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины Языки программирования для специальности 090301 Компьютерная безопасность специалиста Настоящая рабочая программа рассмотрена на заседании (методическом семинаре) кафедры «___»____________201__г. протокол № ___ и рекомендована к применению в учебном процессе. Заведующий кафедрой _____________: /А.Б. Лось/ Эксперт: Председатель учебно-методической комиссии факультета: Программа продлена на 20__/___ уч.год /_________________/ /_________________/ Подпись зав.каф. Программа продлена на 20__/___ уч.год /_________________/ Подпись зав.каф. Программа продлена на 20__/___ уч.год /_________________/ Подпись зав.каф. Программа продлена на 20__/___ уч.год /_________________/ Подпись зав.каф.