No Image

Теория и технология программирования

СОДЕРЖАНИЕ
0 просмотров
22 января 2020

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

Описание

В ходе обучения студенты проходят подготовку по следующим направлениям:

  • Основы алгоритмизации и программирования
  • Объектно-ориентированное программирование на языках С++ и C#
  • Разработка настольных приложений в средах Qt и Visual Studio
  • Технологии параллельного и распределенного программирования (TPL, OpenMP, TBB, MPI)
  • Средства и технологии программирования графических ускорителей (CUDA, OpenCL, AMP)
  • Разработка веб-приложений
  • Принципы организации многоуровневых и сервис-ориентированных приложений
  • Принципы и технологии организации облачных вычислений

Во время учебного процесса студенты имеют доступ к современным программным продуктам и средам программирования (Microsoft Visual Studio, Microsoft Windows Azure, NVidia CUDA и др.). Студенты и преподаватели кафедры активно участвуют в профильных конференциях и практических школах (летние школы исследовательского подразделения Microsoft Research, летние суперкомпьютерные академии при МГУ, практические курсы от Intel), успешно участвуют в конкурсах и IT-олимпиадах.

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

В новом издании обсуждаются характеристики, а также последние тенденции развития универсальных языков программирования высокого уровня, таких как Scala, Go и Swift; поясняются главные особенности последних стандартов классических языков C++, Java и C#: лямбда-выражения во всех этих языках, cсылочный тип rvalue и семантика перемещения в языке C++ 11, ковариантность и контрвариантность родовых шаблонов в C#; существенно расширено представление скриптового языка Ruby, рассматриваются его блоки, механизмы единичного наследования и подмешивания, а также утиной типизации; добавлено описание аппарата событий и программирования на основе событий; показано применение стиля функционального программирования в скриптовых и объектно-ориентированных языках Python, Ruby, C#, Java, C++, Scala, Go и Swift.

Отрывок из книги. Язык Scala

Язык был создан в Швейцарской политехнической школе Лозанны (2004 год, главный автор — Мартин Одерски). Он стал результатом исследований, направленных на разработку улучшенной языковой поддержки компонентного ПО. За основу были взяты две идеи:

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

• Масштабируемая поддержка компонентов обеспечивается языком, объединяющим как объектно-ориентированное, так и функциональное программирование. Некоторые из базовых новшеств Scala представляют собой концепции, являющиеся сплавом этих парадигм программирования. В статически типизированных языках, к которым относится Scala, данные парадигмы до сих пор были полностью разделены.

Scala была выпущена для использования на платформе JVM в январе 2004 года и на платформе .NET в июне 2004 года. Кроме того, в настоящее время активно разрабатывается целый ряд Scala-компиляторов.

Таким образом, Scala — это мультипарадигменный язык со строгой типизацией, который поддерживает функциональное, объектно-ориентированное и параллельное программирование. Предназначен для реализации на вершине виртуальной машины Java и частично мотивирован известными недостатками языка Java. Обеспечивает наиболее агрессивную интеграцию функциональных характеристик в императивный язык. Имеет функции первого класса и высшего порядка, механизм логического вывода локального типа, отложенные (ленивые) вычисления, сопоставление с образцом, карризацию, хвостовую рекурсию, развитые родовые средства (с ковариантностью и контрвариантностью), параллелизм на основе сообщений, наследование на основе трейтов (что-то среднее между классами и интерфейсами). Энергично используется как в промышленности, так и в науке. Развитие финансируется Европейским исследовательским советом.

В Scala используется чистая объектно-ориентированная модель, похожая на применяемую в Smalltalk: каждое значение является объектом (и числа, и результаты функций), а каждая операция — это отправка сообщения, вызов метода объекта. Например, сложение 2 + 3 интерпретируется как 2.+(3), то есть как вызов в объектеприемнике «2» метода «+» с аргументом «3». Здесь в качестве объекта-источника рассматривается число 3. Этим Scala отличается от Java, поскольку в Java разделены примитивные типы (например, boolean или int) и ссылочные типы, а также нет возможности работать с функциями как со значениями.

Конечно, Java-программисты сильно удивятся тому, что в Scala функции также являются объектами. Тем не менее в Scala функцию можно передавать как аргумент, сохранять в качестве переменной или возвращать из другой функции. Такая возможность манипулировать функциями как обычными переменными является краеугольным камнем функционального программирования, суть которого состоит в работе функций с неизменяемыми переменными.

Перед определением функции ставится ключевое слово def. Определения классов начинаются с зарезервированного слова class. Класс может предотвратить дальнейшее создание подклассов, употребляя зарезервированное слово final. Подобно объектно-ориентированным языкам C++, Java, C#, экземпляр класса может ссылаться на себя, используя слово this. Scala допускает перегруженные методы. Как и в Java, ключевое слово extend объявляет, что класс является подклассом другого класса. Scala не поддерживает множественное наследование. Вместо этого язык применяет смешанное наследование на базе трейтов, обеспечивающих включения общих атрибутов и методов в несколько подклассов. Трейты могут расширять классы или другие трейты. Подкласс в Scala может наследовать методы как от родительского класса, так и от трейтов. Трейты могут также иметь отношения с родительским классом и подклассом. Объявление трейта начинается с ключевого слова trait. Тело трейта выполняется, когда создается экземпляр класса, задействующего этот трейт. Родительским по умолчанию для класса или трейта является класс AnyRef, прямой потомок класса Any.

Читайте также:  Удобный стул для компьютера для дома

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

Правила видимости в Scala похожи на Java с некоторыми вариациями. В отличие от C++, по умолчанию в Scala задается «публичная» видимость. Видимость регулируется с помощью ключевых слов protected и private. Видимость указывается в начале объявлений функций, переменных или трейтов. Применение private [this] закрывает объявление для конкретного экземпляра внутри класса.

Определения методов считаются обычными функциями, начинаются с ключевого слова def, за которым следуют необязательные списки аргументов, символ двоеточия «:» и тип возвращаемого значения метода. Абстрактным является метод, у которого отсутствует тело. Методы могут вкладываться друг в друга.

Для иллюстрации представим абстрактный класс для комплексного числа:

Определение класса включает только два атрибута: re (действительная часть) и im (мнимая часть). С помощью свойства override операция toString переопределена. Это сделано для облегчения печати результата. Заданы две абстрактные операции: сложение и вычитание. Абстрактные операции записываются в виде двух методов. Каждый метод создает новое комплексное число, которое автоматически печатается на консоли с помощью переопределенного метода toString.

После загрузки этого фрагмента в интерпретатор Scala можно выполнить следующие команды:

Точка с запятой используется в языке значительно реже: она не ставится в конце оператора, если он записан один в строке. Если строка содержит более одного оператора, точка с запятой обязательна. Scala поддерживает как изменяемые, так и неизменяемые структуры данных Язык обеспечивает полиморфизм, и если тип переменной не указан, то он выводится на основе значения, заданного для переменной.

Scala реализует обширный набор типов данных: массивы, ассоциативные массивы, списки, кортежи и множества. Массивы являются изменяемыми объектами, а списки — неизменяемыми объектами. Списки используются при функциональном программировании, а массивы — при императивном программировании. Множества и ассоциативные массивы могут создаваться как изменяемыми, так и неизменными с помощью трейтов. Напомним, что трейты — это абстрактные интерфейсы, которые расширяют содержание объектов. Например, если имеется класс «транспортное средство» и трейт «четырехколесный», расширяющий транспортные средства, то автомобиль соответствует классу «транспортное средство» с добавлением трейта «четырехколесный». В случае множеств и ассоциативных массивов связывание «изменяемого» и «неизменяемого» трейтов с классом множество или ассоциативный массив обеспечивает, в конечном счете, их изменяемость или неизменность.

Целочисленный массив объявляется как Array [Int] (4). Это означает, что объект является массивом, содержащим четыре целых числа. Индексы переменных записываются внутри пары круглых скобок. Поскольку каждая структура данных является объектом, массив создается с использованием конструктора new. Например, объявление val: studentNames = new array [String] (20) создаст объект массива, содержащий 20 строк. К его строкам можно получить доступ с помощью studentNames(i), где i — индексная переменная типа integer.

Списки могут быть объявлены в форме List (1, 2, 3) или как несколько элементов, соединенных символом «::». Например, List (1, 2, 3) можно записать как 1 :: 2 :: 3 :: Nil. Два списка xl и yl соединяются с помощью символа «. ». Например, List (1, 2) . List (3, 4, 5) создают List (1, 2, 3, 4, 5).

Язык Scala поддерживает выражения if-then-else, классы case, операторы while-loop, do-while-loop, итератор foreachloop, определяет итерацию forloop и рекурсивные вызовы функций. Передавая функцию в качестве параметра в другую функцию, можно смоделировать композицию. Кроме того, Scala поддерживает обновление в индексированных переменных, что позволяет разрабатывать программы на основе обычных итераций.

Рассмотрим еще один пример объявления функции:

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

Scala является блочно-структурированным языком, где функции могут вкладываться внутрь других функций. Локальные переменные имеют область действия внутри блоков, где они были объявлены. Внутри вложенного блока переменные, объявленные во внешних блоках, могут быть перекрыты. Scala поддерживает концепцию модуля с использованием пакетов Java и может импортировать методы по предложению import. По умолчанию Scala импортирует все библиотеки классов Java и любую предопределенную библиотеку в Scala перед выполнением программы. Для передачи параметров Scala использует передачу по значению, а также передачу по имени. Синтаксис передачи по имени: : ‘=>’ , тогда как синтаксис передачи по значению имеет вид : . Scala использует возможности обработки исключений Java.

Примеры программного кода на Scala

Функция add7 добавляет 7 к входному параметру n и возвращает значение. Обратите внимание, что тип параметра и тип результата функции объявлены явно. Тело функции является блоком и заключено в фигурные скобки.

Функция square_add показывает композицию двух функций: square и add7. Сначала функция add7 применяется для генерации числа, которое на 7 больше входного параметра, а затем сгенерированное значение возводится в квадрат. Например, square_add (5) эквивалентно square (5 + 7) = 144.

Функция power_rec иллюстрирует использование выражения if-then-else и рекурсии в Scala. Обратите внимание, что предикат заключен в круглые скобки и нет никакой мутации (изменения значений переменных).

Напротив, функция power_iter использует локальные изменяемые переменные a и b для вычисления значения функции xn. Значение накапливается в аккумуляторе b и, наконец, возвращается после завершения цикла while.

Читайте также:  Укажите в чем сущность пирамиды происшествий дюпона

Функция sum_list добавляет все целые числа в список, используя рекурсивный вызов в остальной части списка. Встроенный метод isEmpty используется для проверки пустого списка, метод head применяется для доступа к первому элементу списка, а метод tail обеспечивает доступ к остальным элементам списка.

Scala использует встроенную функцию отображения map, которая обеспечивает возможность применения функциональной формы apply_all. Здесь в теле функции сначала записывается параметр (xl), затем функция отображения высшего порядка (map), а затем имя функции (my_func). В этом случае apply_all (int_square, List (1, 2, 3)) будет генерировать список List (1, 4, 9). Следует отметить способ объявления типа для функции my_func. Тип функции объявлен как Int => Int, что означает, что он принимает входной аргумент типа integer и генерирует выходное значение типа integer.

Наконец, функция construct берет последовательность функций, применяемых к одному и тому же аргументу, и генерирует последовательность выходных значений. Например, construct (List (add7, int_square), 5) будет генерировать список List (12, 25). Программа с функцией construct возвращает нулевой список, если список функций пуст. В противном случае она вызывает рекурсивно из списка остальные функции и объединяет результат применения первой функции с остальной частью выходной последовательности, полученной путем применения остальных функций к этому же аргументу.

Рецензенты:

Соколов Б. В., д. т. н., профессор, руководитель лаборатории информационных технологий
в системном анализе и моделировании Санкт-Петербургского института информатики
и автоматизации РАН;

Пасмуров А. Я., д. т. н., доцент, senior member of IEEE, руководитель учебного центра ФГУП
«ЗащитаИнфоТранс» Министерства транспорта РФ, Санкт-Петербургский филиал.

Для Хаброжителей скидка 20% по купону — Орлов

Семестр: 5-ый, Трудоёмкость: 144 часа, Контроль: экзамен и курсовая работа

Цели дисциплины

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

Задачи дисциплины

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

Место дисциплины

Дисциплина входит в базовую часть профессионального цикла образовательной программы как обязательная дисциплина (Б3.Б.5). Студент должен иметь базовые знания о компьютерах и программировании в объёме курса программирования.

Результаты освоения дисциплины

В результате изучения данной учебной дисциплины студент:

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

    Содержание основных разделов дисциплины

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

    Введение и терминология

    Введение. Базовая терминология. Понятие технологии программирования – как дисциплины проектирования программного обеспечения. История развития дисциплины. Основные задачи дисциплины.

    Объект исследования и его архитектура

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

    Терминология программной отрасли

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

    Организация процесса проектирования

    ОПонятие программы как изделия и основные задачи проектирования. Стадии и этапы проектирования. Перечень и содержание работ стадий и этапов. Организация процесса проектирования программного обеспечения. Методы проектирования: сверху-вниз, снизу-вверх. Схемы проектирования: каскадная, откатная, спиральная. Распределение работ между участниками проектов. Взаимодействие участников в процессе проектирования.

    Постановка задачи проектирования

    Постановка задачи на проектирование программного обеспечения. Понятие требования к программному обеспечению. Свойства требований. Сбор, формулировка, анализ, и документирование требований к программному обеспечению. Исследование и анализ предметной области. Техническое задание (ТЗ) на разработку программного обеспечения. Состав и содержание технического задания. Составление технических заданий.

    Жизненный цикл программ

    Понятие жизненного цикла. Модель жизненного цикла программы. Процессы жизненного цикла: основные (заказ, поставка, разработка, эксплуатация, сопровождение), вспомогательные (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, совместный анализ, аудит, решение проблем), организационные (управление проектом, создание инфраструктуры, совершенствование процессов, обучение). Состав и содержание работ каждого процесса.

    Структуризация данных

    Понятие данных. Свойства данных. Типизация. Виды типизации: явная, неявная, функциональная. Статическое и динамическое установление соответствия типов. Атомарные данные. Агрегативные данные. Структурированные данные. Абстрактные данные. Файлы, доступ к файлу, режим работы с файлом.

    Читайте также:  Файловая система нтфс что это
    Декомпозиция и модульность программ

    Понятие модуля. Виды модулей: программные, конфигурационные, функциональные, автономные. Модульная структура программного обеспечения. Связанность, сцепление, сложность модулей. Декомпозиция программного обеспечения на модули. Приёмы декомпозиции. Модульный принцип построения программного обеспечения. Рефакторинг программного кода.

    Методологии проектирования программ

    Понятие и виды программирования. Внутренняя структура и сегментация программ. Методологии программирования: процедурная, структурная, функциональная, логическая, объектно-ориентированная, визуальная, обобщенная. Понятие языка программирования. Классификация языков программирования. Уровни языка. Базовые составляющие языка программирования. Тенденции развития языков программирования.

    Технологические средства проектирования

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

    Интерфейсы

    Понятие интерфейса. Классификация интерфейсов. Формы представления: текстовые и графические. Способы организации: командные, диалоговые, оконные, языковые. Сценарии взаимодействия: жёсткие, свободные, иерархические, прямого манипулирования. Виды диалогов: директивный, фразовый, табличный. Этапы разработки интерфейса. Эргономические требования к организации интерфейсов.

    Оценка качества

    Основные понятия: качество, критерий, характеристика, показатель, оценка, метрика, уровень, ранжирование. Уровни представления о качестве программного продукта. Стадии оценки качества. Критерии и показатели качества. Оценка функциональности, надежности, практичности, эффективности, сопровождаемости, переносимости, тести-руемость, и т.д. Верификация показателей качества.

    Испытание и анализ соответствия

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

    Тестирование и отладка

    Понятие ошибки. Основные виды ошибок: синтаксические, алгоритмические, структурные, концептуальные. Понятия тестирования. Основные понятия: случай, контрольные данные, тест-план, протокол, покрытие. Концепции чёрного, серого, белого ящика при тестировании. Методы тестирования: индукции, дедукции, ручной, обратного прослеживания. Составление тестовых планов. Поиск ошибок в программном коде. Отладка.

    Организация сопровождения

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

    Документирование и стандартизация

    Документирование программного обеспечения. ЕСПД и её содержание. Основы составления руководства пользователя и руководства администратора. Разработка справочных систем в формате HTML/CHM. Оформление и комментирование программного кода. Подготовка презентаций на программное обеспечение.

    Курсовая работа по дисциплине

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

    • Разработка программного пакета инженерных расчётов технологических характеристик по геометрическим параметрам для выбранного химико-технологического аппарата.
    • Разработка программного пакета инженерных расчётов геометрических параметров по технологическим характеристикам для выбранного химико-технологического аппарата.
    • Разработка программного пакета инженерных расчётов для выбранного технологического процесса.
    • и другие темы.

    Перечень работ включает:

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

    Самостоятельная работа по дисциплине

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

    • способы реализации интерфейсов различных видов с помощью инструментальной среды разработки;
    • методы и концепции тестирования программного обеспечения, составление тест-планов;
    • единая система программной документации ЕСПД. Изучение ГОСТ 19.ххх и 34.ххх;
    • сбор, анализ и формулировка требований к программному обеспечению, составление технического задания;
    • работа с литературой, подбор исходных данных, поиск Интернет-публикаций, участие в форумах;
    • разработка программы по теме курсовой работы, подготовка отчёта и презентации.

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

    Список литературы по дисциплине

    Учебно-методическое обеспечение дисциплины включает печатную и электронную литературу, интегрированные справочные системы, авторские методические материалы, Интернет публикации и форумы.

    1. Камаев, В.А. Технологии программирования. / В.В. Костерин, В.А. Камаев.- М.: «Высшая школа», 2006.- 454 с.
    2. Рогов, А.Ю. Технологии программирования: учебное пособие. / О.В. Проститенко, А.Ю. Рогов.- СПб.: СПбГТИ(ТУ), 2010.- 112 с.
    3. Рогов, А.Ю. Технологии программирования: методические указания к выполнению индивидуальных заданий. / А.Ю. Рогов.- СПб.: СПбГТИ(ТУ), 2010.- 60 с.
    4. Терехов, А. Н. Технологии программирования: учебное пособие. / А. Н. Терехов.- М.: Бином, 2007.- 152 с.
    5. Жоголев, Е.А. Технологии программирования. / Е.А. Жоголев.- М.: Научный Мир, 2004.- 216 с.
    6. Кулямин, В.В. Технологии программирования. Компонентный подход. / В.В. Кулямин.- М.: Бином, 2007.- 464 с.
    7. Давыдов, В.Г. Технологии программирования С++: учебное пособие. / В.Г. Давыдов.– СПб.: бхв-питер, 2005.- 672 с.

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

    Классы 1, 4, 5, 6, 9 (кафедры системного анализа), Microsoft Windows 7, Internet Explorer, Microsoft Visual Studio 2010, Microsoft Word 2010, Microsoft Visio 2010, Microsoft PowerPoint 2010

    Комментировать
    0 просмотров
    Комментариев нет, будьте первым кто его оставит

    Это интересно
    Adblock detector