Программа дисциплины Языки программирования для специальности 090301. 65 «Компьютерная безопасность» подготовки специалиста Автор программы icon

Программа дисциплины Языки программирования для специальности 090301. 65 «Компьютерная безопасность» подготовки специалиста Автор программы



Смотрите также:


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


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



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


Программа дисциплины Языки программирования


для специальности 090301.65 «Компьютерная безопасность» подготовки специалиста


Автор программы:

Лебедев П.А. (plebedev@hse.ru)


Одобрена на заседании кафедры Компьютерной безопасности «___» августа 2013 г.

Зав. кафедрой А.Б. Лось


Рекомендована секцией УМС [Введите название секции УМС] «___»____________ 20 г.

Председатель [Введите И.О. Фамилия]


Утверждена УС факультета [Введите название факультета] «___»_____________20 г.

Ученый секретарь [Введите И.О. Фамилия] ________________________ [подпись]


Москва, 2013

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

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


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

Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 090301.65 «Компьютерная безопасность», обучающихся по специализации «Математические методы защиты информации», изучающих дисциплину Языки программирования.

Программа разработана в соответствии с:

  • Федеральным государственным образовательным стандартом высшего профессионального образования по направлению подготовки (специальности) 090301 «Компьютерная безопасность» (квалификация (степень) «специалист»);

  • Рабочим учебным планом университета по специальности 090301 «Компьютерная безопасность», специализации «Математические методы защиты информации», утверждённым в 2013 г.
^

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


Целью освоения дисциплины «Языки программирования» является формирование базовых компетенций, связанных с разработкой программного обеспечения при решении профессиональных задач. В рамках дисциплины вырабатываются навыки программирования и алгоритмизации с применением современных процедурных и объектно-ориентированных языков программирования. Параллельно с рассмотрением данных языков, демонстрируется их связь с языком ассемблера. Завершает курс рассмотрение высокопроизводительного динамического языка. За счёт рассмотрения основных представителей языков различного уровня и их связей, закладывается понимание иерархии существующего ПО, происходит освоение разнообразного инструментария и подготовка специалиста к проектированию и анализу программных систем.

^

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


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

  • Знать:

    • общие принципы построения и использования современных языков программирования высокого уровня;

    • язык программирования высокого уровня (объектно-ориентированное программирование);

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

    • базовые структуры данных;

    • основные комбинаторные и теоретико-графовые алгоритмы, а также способы их эффективной реализации и оценки сложности;

    • современные технологии программирования

  • Уметь:

    • формализовать поставленную задачу;

    • работать с интегрированными средами разработки программного обеспечения;

  • Иметь навыки:

    • разработки, документирования, тестирования и отладки программ;

    • навыками использования инструментальных средств отладки и дизассемблирования программного кода;

    • навыками разработки алгоритмов решения типовых профессиональных задач.

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

Компетенция

Код по ФГОС

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

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

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

ОК-9

Знает основные алгоритмические конструкции, описывает реализацию примитивных структур данных и управляющих конструкций в различных языках программирования, распознаёт данные конструкции с существующем ПО, составляет алгоритм решения задачи, реализует алгоритм на выбранном ЯП, анализирует характеристики полученного продукта.


Все используемые формы и методы обучения.

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

ПК-2

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

Использование в примерах и задачах ПО по тематике профессиональных дисциплин.

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

ПК-8

Знает функции элементов ПО сред разработки и выполнения, применяет данные средства в цикле разработки.

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

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

ПК-9

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

Все используемые формы и методы обучения.

Способность обосновывать правильность выбранной модели решения профессиональной задачи, сопоставлять экспериментальные данные и теоретические решения

ПК-28

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

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



^

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


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

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

Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями:

  • Владение математическим аппаратом в рамках программы средней школы;

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

  • Основы английского языка.

Основные положения дисциплины должны быть использованы в дальнейшем при изучении следующих дисциплин:

  • Математическое программное обеспечение;

  • Методы программирования;

  • Операционные системы;

  • Языки ассемблера

  • Системно-ориентированное программирование;

  • Системы управления базами данных;

  • Программирование алгоритмов защиты информации;

  • Параллельные вычисления;

  • Анализ программных реализаций алгоритмов защиты.

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


^

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




Название раздела

Всего часов

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

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

Лекции

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




1

Введение в языки программирования. Язык C.

118

30

30

58

2

Объектно-ориентированное программирование. Язык С++.

162

42

42

80

3

Разработка больших приложений

56

14

14

28

4

Динамические и скриптовые языки. Язык Python.

62

16

16

30

Итого:

400

102

102

196


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

Тип контроля

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

1 год

2 год

Параметры **

1

2

3

4

1

2

Текущий

(неделя)

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

6

7




9







Письменная работа на 2 академических часа.

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




8




10




8

Программный проект

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

Зачет







*










Устный зачёт, подготовка до 60 минут.

Итоговый

Экзамен
















*

Устный экзамен, подготовка до 60 минут.

Для форм текущего контроля указана неделя проведения.
^

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


Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале.

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

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

Зачёт и экзамен могут включают в себя элементы, аналогичные контрольной работе, общетеоретические вопросы и практические вопросы по последнему домашнему заданию или другой самостоятельной работе.
^

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


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

Преподаватель оценивает самостоятельную работу студентов аналогично домашнему заданию (текущей форме контроля). Оценки за самостоятельную работу студента преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за самостоятельную работу определяется перед промежуточным или итоговым контролем – Осам. работа.

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

Онакопленная= 0,3 * Отекущий + 0,7 * Осам.работа

где Отекущий рассчитывается как взвешенная сумма всех форм текущего контроля, предусмотренных в РУП:

Отекущий = 0,3·Ок/р + 0,7·Одз ;


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

Опромежуточная 1 = 0,8·Онакопленная этапа 1 + 0,2·Опромежуточный зачёт

Где Онакопленная этапа 1 рассчитывается по приведённой выше формуле.

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


Где Опромежуточная 1 промежуточная оценка этапа 1, а Онакопленная 2 накопленная оценка последнего этапа перед итоговым зачетом/экзаменом.

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

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

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

Орезульт = 0,8·Онакопл + 0,2·Оитоговый

Во всех формулах вычисления оценок округление осуществляется вверх.
^

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


Введение.

Общие сведения о языках программирования. Классификации языков программирования. Трансляторы и другие инструментальные средства. Байт-код и JIT-компиляция. Архитектура фон Неймана. Представление примитивных типов данных и машинного кода. Структурное и модульное программирование. Формальные описания языков программирования.


^ Раздел 1. Язык программирования С.

История создания и развития языка C. Классификация и основные характеристики языка C. Роль и место языка C в современной экосистеме языков программирования.

Основные элементы синтаксиса языка. Наборы символов: базовый, исходный, времени выполнения, расширенный.

Препроцессор. Включения и макроподстановки. Условная компиляция. Комментарии. Дополнительные возможности препроцессора.

Описания и определения. Типы и объекты. Классы памяти. Стандартные типы. Перечисления. Производные типы: указатели, массивы, структуры, объединения, функции. CVR-квалификаторы. Совместимые и композитные типы. Выравнивание типов.

Выражения. Побочные эффекты. Лево- и праводопустимые выражения. Константы. Составные литералы. Операции и их применимость к различным типам. Явные и неявные приведения типов. Ранги целочисленных типов. Стандартное расширение типов. Константные выражения. Инициализаторы. Выделенные инциализаторы.

Операторы. Блоки. Выражение-оператор. Управляющие конструкции: ветвления, циклы. Метки и операторы перехода. Оператор возврата. Пустой оператор.

Функции. Механизм вызова функций, передачи и возврата аргументов. Рекурсия. Встраиваемые функции.

Дополнительные возможности языка C. Проверки времени выполнения. Массивы переменной длины. Типы переменной длины.

Стандартная библиотека языка C. Обзор возможностей стандартной библиотеки. Строковые функции. Динамическая память. Потоки ввода-вывода. Форматированный, текстовый и двоичный ввод/вывод. Операции с файлами. Математические функции. Стандартные функции. Проверки времени выполнения. Целочисленные типы фиксированной длины. Вариадические функции. Комплексные числа. Функции обработки многобайтных и широких символов, локализация, работа с Unicode. Дальние переходы.


^ Раздел 2. Язык программирования С++

История создания и развития языка C++. Классификация и основные характеристики языка C++. Роль и место языка C++ в современной экосистеме языков программирования.

Конструкции языка C, несовместимые с языком C++. Разработка программ с использованием нескольких языков.

Ссылки. Автоматический вывод типов, ключевые слово auto и decltype.

Перегрузка функций. Декорированные имена. Аргументы по умолчанию. Хвостовой возвращаемый тип. Автоматическое определение возвращаемого типа.

Пространства имён. Объявление и директива using. Аргументо-зависимый поиск.

Объектно-ориентированное программирование. Классы. Инкапсуляция. Уровни доступа. Члены класса: поля и методы. Инициализация членов внутри класса. Конструкторы класса. Делегирование конструкторов. Деструкторы. Перегрузка операций. Специальные члены классы и их реализации по умолчанию, спецификаторы default и delete. explicit члены класса. Дружественные функции и классы. Статические компоненты класса.

Праводопустимые ссылки. Семантика переноса.

Наследование и полиморфизм. Наследование конструкторов. Механизм виртуальных функций, спецификаторы override и final. Интерфейсы и абстрактные базовые классы. Управление доступом. Множественное наследование.

Динамическая информация о типах, операции приведения типов.

Операторы new и delete. Операция new с размещением. Константа нулевого указателя.

Перечисления с областью видимости.

Исключения. Механизм обработки исключений. Спецификации исключений.

Шаблоны. Шаблоны функций. Шаблоны классов. Типы параметров шаблонов. Значения параметров шаблонов по умолчанию. Частичная специализация. Псевдонимы шаблонов. Шаблоны с переменным числом аргументов. Шаблоны переменных.

Унифицированная инициализация. Шаблон initializer_list.

Стандартная библиотека шаблонов. Интеллектуальные указатели. Обобщённое программирование. Концепции, уточнения и модели. Функторы. Лямбда-выражения. Обобщённые лямбда-выражения и выражения захвата. Контейнеры, итераторы и алгоритмы. Алгоритмическая сложность. Основные структуры данных. Цикл for, основанный на диапазоне. Строки. Потоки ввода-вывода. Регулярные выражения.

Средства метапрограммирования. Кортежи. Обобщённые константные выражения. Пользовательские литералы. Обобщённые атрибуты.


^ Раздел 3. Разработка больших приложений

Среды интегрированной разработки.

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

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

Разработка приложений с графическим интерфейсом пользователя. Интерфейсы, основанные на событиях. Библиотека Qt. Слоты, сигналы и свойства. Метаобъекты и их компилятор. Иерархия объектов и управление временем их жизни. Контейнеры и вспомогательные классы библиотеки Qt.

Цикл обработки сообщений. События.

Виджеты. Окна. Элементы управления и их иерархия. Динамическое изменение размеров элементов интерфейса. Паттерн модель-вид-контроллер. Разработка новых элементов управления. Обработка событий ввода. Средства графического вывода. Альтернативные подходы к описанию графического интерфейса пользователя.

Параллельное программирование. Потоки. Модель памяти. Атомарные типы в стандартах C11 и С++11. Примитивы синхронизации. Потоковый класс памяти. Обмен сообщениями. Использование потоков в приложениях с графическим интерфейсом.

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


^ Раздел 4. Язык Python.

Динамические языки. Динамическая типизация. Классификация языка Python и его области применения. Реализации Python.

Модули и пакеты. Импорт. Путь поиска. Пакеты пространств имён. Скрытие данных в модулях.

Основные типы данных. Списки, кортежи, словари, множества и способы их создания. Строки.

Формы операции присваивания. Ссылочная модель присваивания.

Блоки. Основные управляющие конструкции языка. Функция range. Другие функции для обработки последовательностей.

Функции. Способы передачи аргументов. Аннотации аргументов. Области видимости. Генераторы. Анонимные функции. Элементы функционального программирования.

Объекты. Автоматическое управление памятью. Иерархия стандартных типов. Типы как объекты. Объекты классов и экземпляры. Атрибуты. Специальные атрибуты. Перегрузка операций. Частные атрибуты. Слоты. Свойства. Средства документирования кода.

Наследование. Порядок поиска методов. Статические и классовые методы.

Декораторы и метаклассы.

Обработка исключений. Менеджеры контекстов. Иерархия стандартных типов исключений.

Обзор стандартной библиотеки.

Использование языка Python вместе с другими языками.


Содержание дисциплины изложено в тематическом порядке, однако изложение материала рекомендуется проводить в форме «срезов». В частности, в начале курса предлагается изложить минимальный объём языковых средств, необходимых для начала выполнения самостоятельной работы. Дополнительные средства могут быть введены далее при рассмотрении примеров, при этом они будут сгруппированы не в порядке справочника или стандарта, а в соответствии с их использованием в реальных задачах.

В рамках данного гибкого подхода распределение часов по темам давать нецелесообразно. Кроме того, преподавателю следует перераспределить время между темами и рассмотреть дополнительные примеры, если та или иная конструкция вызывает затруднения у учащихся. Часы самостоятельной работы учащиеся распределяют между получаемыми заданиями самостоятельно. Общий объём выполняемой ими работы согласуется с преподавателем, основываясь на их способностях.
^

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


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

Поскольку практические занятия используются для интерактивной проверки самостоятельной работы учащихся, рекомендуется ограничить размер группы 15 учащимися.
^

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


Одной из основных проблем в освоении данной дисциплины является отсутствие понимания учащимися семантического значения элементов программного кода и стоящих за ними элементов более низких уровней. Это приводит к невозможности осуществления синтеза новых решений и прямому копированию материалов примеров без понимания их сущности. Чтобы избежать этой типичной проблемы, рекомендуется чётко определить все уровни существования программы, начиная от абстрактной машины стандарта языка программирования и заканчивая машинным кодом и сырым содержанием памяти ЭВМ. Следует придерживаться это стиля рассмотрения «в глубину» при расширении знаний учащихся введением новых языковых конструкций («в ширину»).

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

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


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

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

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


Пример задания на поиск ошибок для контрольной работы:


// A program to find the minimum and maximum

// in a list of integers in different ways.


#include "stdio.h"

#include

#include


template

void process1(Container c)

{

using Item = Container::value_type;

Item lowest = std::numeric_limits::min();

Item highest = std::numeric_limits::max();

for(auto item:c) if(item
else if(item>highest) highest = item;

printf("Lowest: %d, highest: %d\n",lowest,highest)

}


void process2(int* ptr,int count);


int main(void)

{

std::list NUMBERS;

printf("Input integers: ");

int x;

while(scanf("%d",x));

NUMBERS.push_back(x);

process1(NUMBERS);

process2(&NUMBERS.front(),NUMBERS.size());

process3(NUMBERS);

return 1;

}


void process2(int* ptr,int count)

{

using namespace STD;

sort(ptr,ptr+count);

printf("Lowest: %d, highest: %d",ptr[0],ptr[count]);

}


void process3(const std::list& NUMBERS)

{

auto res = std::minmax_element(NUMBERS.begin(),NUMBERS.end());

printf("Median: %d, mean: %d\n",res);

}


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

  • В текстовом файле содержится матрица целых чисел. Вывести в аналогичном виде матрицу того же размера, с теми же элементами, расположенными по порядку от одного из углов матрицы по спирали к центру. Имя файла, угол, направление спирали (по/против часовой стрелки) и порядок (по возрастанию/убыванию) задаются параметрами командной строки.

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

  • Реализуйте визуализатор сетевого траффика. Задача программы – в реальном времени отображать графическое представление количества информации, передаваемое и принимаемое данным компьютером по сети с разбиением по протоколам. Например, две обновляемые в реальном времени круговые диаграммы (на приём и передачу), каждый сектор которой – удельный объём относительно всего сетевого траффика, используемый протоколом или группой протоколов (WWW/Почта/пиринговые сети/служебный траффик/другое…) за последние 3 секунды. Возможно использование любых визуальных представлений, использующих графику, при сохранении наглядности. Для захвата сетевого траффика использовать библиотеку libpcap.
^

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


  • Какова роль различных этапов обработки исходного текста программы транслятором языка C?

  • Объясните принцип одного определения.

  • Приведите примеры синтаксически корректных выражений, дающих неопределённый результат.

  • Какова связь операторов перехода и понятий структурного программирования?

  • Опишите основные элементы различия разных соглашений о вызовах.

  • В чём отличие реализации на уровне машинного кода массивов переменной длины и обычных?

  • Опишите семантическую разницу владеющих и невладеющих указателей и их применение с различными классами памяти.

  • Перечислите преимущества и недостатки текстовой и двоичной сериализации данных.

  • Объясните разницу между обычными и широкими символами.

  • Опишите механизм использования материалов на языке C в программах на C++.

  • Как ссылки влияют на время жизни объектов?

  • Дайте определение и мотивацию применения декорированных имён.

  • Приведите пример необходимости использования хвостового возвращаемого типа.

  • Для чего используются анонимные пространства имён?

  • Как связаны уровни доступа при объявлении членов класса и наследовании?

  • С какого момента объект считается сконструированным и в чём роль данного определения?

  • Какие элементы входят в понятие интерфейса класса?

  • Каковы механизм и роль семантики переноса?

  • Что такое абстрактный базовый класс и в чём его отличие от интерфейса?

  • Каковы ограничения приведения типов при использовании множественного наследования?

  • Чем операции new/delete отличаются от функций malloc/free?

  • Каковы основные механизмы реализации обработки исключений?

  • Что такое частичная специализация и к каким типам шаблонов она применима?

  • Какие преимущества имеет унифицированная инициализация?

  • Сравните концепции, уточнения и модели с понятиями ООП.

  • Перечислите основные структуры данных, реализуемые стандартной библиотекой шаблонов, и наиболее эффективно реализуемые ими операции.

  • Как выражаются отношения владения ресурсами с применением интеллектуальных указателей?

  • Для чего применяют средства метапрограммирования?

  • Определите роли и функции основных классов паттернов проектирования.

  • Что такое двоичная совместимость и совместимость по исходному тексту?

  • Какие паттерны проектирования используются в основных конструкциях интерфейсов, управляемых событиями?

  • В чём состоит преимущество механизма сигналов/слотов по сравнению с обычными функторами?

  • Как соотносится наблюдаемое время жизни виджетов с временем жизни соответствующих им объектов?

  • Для чего необходимо применение потоков в приложения с графическим интерфейсом?

  • Чем сетевой ввод/вывод отличается от файлового?

  • Чем отличается понятие переменной в языках со статической и динамической типизацией?

  • В чём состоит ленивая модель исполнения?

  • Каковы альтернативы отсутствующей в языке Python перегрузке функций?

  • Каков порядок поиска методов при множественном наследовании?

  • Каковы основные способы использования языка Python вместе с другими?
^

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


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

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

9.1Базовый учебник


Прата. С. Язык программирования C++. Лекции и упражнения. М. Вильямс, 2013, 6-е издание.
^

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


Прата. С. Язык программирования C. Лекции и упражнения. М. Вильямс, 2013, 5-е издание.

Шлее М. Qt 4.8. Профессиональное программирование на C++. СПб. БХВ-Петербург, 2012.

Лутц М. Программирование на Python. Символ-плюс, 2013, 4-е издание, в 2 томах.
^

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


Подбельский В.В., Фомин С.С. Курс программирования на языке Си. М. ДМК Пресс, 2013.

Подбельский В.В. Стандартный C++. М. Финансы и статистика, 2008.

Страуструп Б. Язык программирования C++: специальное издание. М. Бином, 2012.

K. N. King (2008). C programming. A modern approach. W. W. Norton & Company, Second Edition.

Столяров А. В. Программирование на языке ассемблера NASM для ОС UNIX. Учебное пособие. М. МАКС Пресс, 2011. http://www.stolyarov.info/books/asm_unix

Кнут Д.Э. Искусство программирования. Том 1. Основные алгоритмы. М. Вильямс, 2012, третье издание.

Александреску А. Современное проектирование на C++. М. Вильямс, 2002.
^

9.4Справочники, словари, энциклопедии


http://cppreference.com – С & C++ reference

http://qt-project.org/doc/ – Qt project documentation

http://docs.python.org/3 – Python 3 documentation
^

9.5Программные средства


Для успешного освоения дисциплины, студент использует следующие программные средства:

  • Компиляторы языков C стандарта не ниже C99 и C++ стандарта не ниже С++11 (рекомендуется GNU compiler collection), интерпретатор (или другое средство выполнения) языка Python версии 3 (рекомендуется CPython);

  • Интегрированная среда разработки (рекомендуется Qt Creator);

  • Дополнительные инструменты разработки (отладчики, системы сборки,…) в зависимости от используемых инструментов;

  • Различные сторонние библиотеки, зависящие от заданий, выполняемых студентом (Qt SDK,…).

    Для всех средств рекомендуется использование самых новых версий.
^

9.6Дистанционная поддержка дисциплины


Дистанционная поддержка дисциплины не предусмотрена.

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


Для проведения занятий по дисциплине необходимо презентационное оборудование (ПК, проектор, экран).

Для проведения практических занятий необходимо наличие компьютерного класса, оборудованного ПК из расчёта одно рабочее место на обучаемого. На данных ПК требуется наличие соответствующих прав доступа для установки ПО, перечисленного в п. 9.5. Для упрощения работы с материалами желательно наличие доступа к внешним носителям. Для упрощения доступа к справочным материалам желательно наличия доступа к сети Интернет





Скачать 256,04 Kb.
Дата конвертации11.12.2013
Размер256,04 Kb.
ТипПрограмма дисциплины
Разместите кнопку на своём сайте или блоге:
rud.exdat.com


База данных защищена авторским правом ©exdat 2000-2012
При копировании материала укажите ссылку
обратиться к администрации
Документы