ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
БЕЛОРУССКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Программирование

Программирование на различных языках и на различные платформы

За дополнительной информацией обратитесь по следующим контактам

Грибова Надежда Владимировна

ауд.607-6., тел. +375 17 294-72-95

Электронная почта:  

gnv@bsuir.by

Запись на курс осуществляется через электронную форму. Курсы начинаются по мере формирования групп.

  • Ориентировочная дата начала занятий: ноябрь
  • Продолжительность: 60 часов
Цель курса–изучениевозможностей и средств языка Java, освоение методов разработки алгоритмов, выбора и проектирования структур данных.
Программа курса
Общие вопросы разработки программ на языке Java.
Этапы процесса создания работающей программы на языке Java. Классы. Стандартные возможности языка Java и импорт пакетов. Методы. Определение локальных переменных.
Разработка Java-апплета.
Инициализация апплета. Вывод информации в апплете. Включение апплета в документ HTML. Передача параметров в апплет с помощью метода getParameter().
Пакет абстрактных классов для реализации оконного интерфейса (Awt)
Основные элементы Awt. Элементы интерфейса пользователя. Холсты. Кадры. Панели. Создание кнопок. Создание ниспадающих меню и подменю. Различные способы расположения кнопок. Создание обработчика событий с использованием handleEvent(). Создание обработчика событий с использованием action(). Создание полей ввода текста и многострочных полей ввода текста. Создание контрольных переключателей. Обработка результатов выбора контрольных переключателей. Создание контрольных переключателей в меню. Создание полей списка. Линейки прокрутки. Работа со шрифтами. Работа с цветом. Рисование геометрических фигур.
Потоки
  • Понятие потока.
  • Реализация потока в языке Java.
  • Определение интерфейса Runnable.
  • Определение апплета в качестве потомка класса Thread.
  • Создание потока.
  • Апплет, создающий часы.
  • Реализация анимации с помощью потока.
  • Распределение приоритетов между потоками.
  • Использование нескольких потоков.
  • Потоки ввода-вывода.
  • Работа с файлами с помощью потоков ввода-вывода.
  • Запись информации в файл с помощью потока ввода-вывода.
  • Просмотр документа по заданному URL с помощью потоков ввода. 
  • Продолжительность: 56 часов
Цель курса –изучение возможностей и средств языка Си, освоение методов разработки алгоритмов, выбора и проектирования структур данных. Данный курс является основой для дальнейшего изучения объектно-ориентированного языка С++.
В процессе обучения слушатели научатся:
·         работать в среде Visual C;
·         знать синтаксис языка C;
·         использовать все операторы языка C;
·         использовать препроцессорные директивы;
·         пользоваться библиотечными функциями;
·         работать с массивами;
·         использовать классы памяти;
·         работать с указателями;
·         уметь корректно и эффективно манипулировать памятью;
·         работать со структурами данных;
·         работать с файлами.
Программа курса
Введение в язык С
Знакомство с интегрированной средой Visual C. Основные типы данных. Диапазоны представляемых значений. Декларация переменных. Константы.
Структура программы
Использование библиотечных функций. Ввод с клавиатуры и вывод на экран. Простейшие программы на ввод вывод данных. Компиляция, компоновка и выполнение программ.
Операторы
Оператор-выражение и составной оператор. Метки. Управляющие операторы – goto, if-else. Программы, в которых используются управляющие операторы.
Управляющие операторы- switch.
Операторы цикла – while, do-while и for. Использование операторов break, continue, и return.
Функции
Аргументы и параметры. Прототип функции. Возвращение значения функцией. Рекурсия. Перегрузка функции. Шаблон функции. Функции rand и srand.
Работа с указателями
Декларация указателей. Операции с указателями. Использование указателей как аргументов функции. Указатели на функции. Указатели и массивы. Указатели и строки.
Классы памяти
Время жизни и область видимости объекта. Декларации на внутреннем и внешнем уровнях. Модификаторы – auto, register, static, extern. Определяемые типы typedef.
Одномерные массивы
Декларация массивов и их размещение в памяти. Индексация элементов массива. Алгоритмы суммирования, поиска и сортировки.
Двумерные массивы
Декларация массивов и их размещение в памяти. Индексация элементов массива. Указатели и массивы. Алгоритмы суммирования, поиска и сортировки.
Символьные строки
Декларация символьной строки и размещение в памяти. Библиотека stirng.h и ctype.h. Массив символьных строк.
Динамическое распределение памяти
Выделение памяти. Освобождение памяти. Изменение памяти.
Структура
Декларация структур. Инициализация и доступ к элементам структуры. Вложенные структуры и массивы структур. Объединения.
Файлы
Понятие потока – stream. Структура типа FILE. Открытие и закрытие файлов. Операции ввода-вывода. Указатель чтения-записи в файле. Последовательный и произвольный доступ.
Препроцессор

Препроцессорныедирективы #include, #define, #undef, #if - #else - #endif. Макроопределения с параметрами. Правила оформления деклараций. 

  • Продолжительность: 56 часов
Цель курса - изучение основных правил грамматики и синтаксиса языка С++ и методов объектно-ориентированного программирования в среде MS Visual C++ .
 
В процессе обучения слушатели научатся:
·         разрабатывать объектно-ориентированные алгоритмы решения задач;
·         планировать структуру одномодульных и многомодульных консольных объектно-ориентированных программ и создавать их;
·         разрабатывать, создавать и использовать классы и объекты классов;
·         разрабатывать, создавать и применять различные методы классов;
·         применять шаблоны классов;
·         разрабатывать и создавать иерархическую последовательность наследуемых классов;
·         применять возможности полиморфных классов при вызове методов;
·         выполнять потоковые объектно-ориентированные операции ввода-вывода в файлы любых типов;
·         корректно обрабатывать исключительные ситуации в программах;
·         разрабатывать и применять классы с самоадресацией (списки, стеки, очереди).
Программа курса
Возможности С++
Комментарии. Размещение описаний переменных внутри блока. Прототипы функций. Аргументы функций по умолчанию. Доступ к глобальным переменным, скрытым локальными переменными с тем же именем (оператор ::).Функциональная запись преобразования типа. Модификаторы const и volatile в Си++. Ссылки (type &). Подставляемые функции (inline-функции). Операторы динамического распределения памяти (new, delete). Использование new и delete на примере динамических массивов, стеков, очередей. Перегрузка функций. Шаблоны функций. Перегрузка операторов.
Основы объектно-ориентированного программирования на С++
Инкапсуляция. Классы. Спецификаторы доступа public, protected, private. Указатель this. Статические члены класса. Константные (const) и изменяемые (mutable) члены класса. Друзья класса. Объекты стандартного предопределенного потокового ввода-вывода cin, cout, cerr, clog.
Инициализация и разрушение (конструкторы и деструкторы). Особые типы конструкторов, explicit-конструкторы. Перегрузка операторов для классов.
Перегрузка оператора присваивания для классов. Перегрузка операторов new и delete для классов. Использование указателей на методы класса. Шаблоны классов. Оператор typeid.
Наследование
Иерархия классов. Иерархия наследования классов. Доступ к членам базовых классов внутри производного класса. Виртуальные базовые классы. Преобразования указателей на объекты. Соглашения об именах производных типов.
Полиморфизм
Виртуальные функции-члены. Принципы организации позднего связывания. Виртуальные деструкторы. Абстрактные классы.
Библиотека потокового ввода-вывода в С++
Классы (fstream, ofstream, ifstream, ostream, istream, ios) и представители классов потокового ввода-вывода. Работа с файлами последовательного и произвольного доступа. Система ввода-вывода старого и нового стилей. Пространство имен. Операторы namespace и using. Программа обработки запросов. Ввод-вывод в символьные массивы.
Обработка исключительных ситуаций в С++
Операторы try и catch. Генерирование исключительной ситуации; операция throw. Организация обработки исключений. Обработка исключений Win32.
Классы с самоадресацией

Списки, стеки, очереди. Бинарные деревья. Деревья двоичного поиска. 

  • Продолжительность: 80 часов
Предварительная подготовка: понимание основ структурного программирования, включая такие концепции, как управление потоком данных, переменных и параметров, и вызовов функций.
В процессе обучения слушатели научатся:
·           конфигурировать и использовать Visual Studio .NET;
·           разрабатывать приложения на языке C#;
·         использовать С# с .NET Framework;
·         использовать Microsoft ADO.NET для обращения и управления данными в базе данных;
·         создавать приложения на базе Windows с богатым набором возможностей;
·         разрабатывать Web-приложения, используя Web Forms;
·         использовать XML Web Services в C# приложении;
·         создавать определяемые пользователем атрибуты и запросы информации атрибута во время выполнения.
Программа курса
Введение
Введение в .NET и .NET Framework. Исследование Visual Studio .NET. Создание проекта приложения Windows.
Основные принципы языка C#
Понимание основных принципов программ C#. Использование встроенных типов C#.  Написание выражений.  Создание условных операторов. Создание операторов цикла.
Создание объектов в C#
Определение класса.  Объявление методов. Использование конструкторов. Использование членов статических классов.
Применение объектно-ориентированных технологий при программировании на C#
Проектирование объектов.  Использование наследования. Использование полиморфизма.
Программирование на C#
Использование массивов. Использование коллекций.Использование интерфейсов. Использование обработки особых ситуаций. Использование делегатов и событий.
Построение .NET-приложений на C#
Исследование классов библиотеки .NET Framework. Отмена методов от System.Object. Форматирование строк и чисел. Использование потоков и файлов.
Использование ADO.NET для доступа к данным
Архитектура ADO.NET. Создание приложения, использующего ADO.NET для доступа к данным. Изменение записей базы данных.
Создание приложений для платформы Windows
Создание главного меню. Создание и использование общего диалогового окна. Создание и использование пользовательских диалоговых окон и инструментальной панели. Создание строки состояния. Создание и использование поля со списком.
Использование XML Web Services в программах на C#
Создание Web-приложения с применением Web Forms
Создание Web Form приложений. Доступ к данным, используя Web Form приложение. Конфигурирование параметров настройки ASP.NET приложений.
Параметры приложений и развертывание
Дополнительная информация

Исследование дополнительных особенностей C#. 

  • Продолжительность: 56 часов
Цель курса - изучение основных аспектов тестирования программного обеспечения (ПО), статического (без запуска программы), динамического, тестирования интерфейса, навигации приложения, тестирования инсталляций, тестирования безопасности.
Прослушивание курса рекомендовано для получения целостной и систематизированной картины о процессе тестирования ПО и практических навыков в составлении тестовой документации, непосредственно проведении тестирования и составлении отчетов о проделанной работе.
В процессе обучения слушатели научатся:
·         понимать процесс тестирования и его место в жизненном цикле разработки ПО;
·         определять проблему как программист и как пользователь;
·         составлять тестовые сценарии и тестовые планы;
·         работать с багтрекинговыми системами и другими программами автоматизации тестирования;
·         документировать найденные проблемы при тестировании ПО.
Программа курса
Введение в тестирование ПО
Что такое тестирование, основная терминология. Этапы жизненного цикла ПО. Формы и фазы организации тестирования. Методы, типы и уровни тестирования. Основные сложности тестирования. Экономические и психологические аспекты тестирования. Пример простейшего поиска и исправления ошибки. Управляющий граф программы. Поиск и описание дефекта.
Тестирование документации
Что входит в тестирование документации. Планирование тестирования. Определение Test Cases. Правила написания, степень детализации, независимость. Подготовка тестовых данных. Понятие и жизненный цикл дефекта. Ведение документации и введение в багтрекинговые системы. Документирование дефекта с помощью багтрекинговой системы.
Критерии выбора тестов и оценка оттестированности проекта
Понятие критерия теста. Четыре класса критериев (структурный, функциональный, стохастический, мутационный). Понятия покрытия программы и проекта. Метрики оценки оттестированности проекта. Понятие плоской и иерархической модели проекта. Интегральная оценка тестирования. Определение достаточности тестового набора при использовании мутационного критерия. Определение интегральной оценки оттестированности проекта.
Модульное, интеграционное, системное тестирование
Особенности и цель проведения модульного тестирования. Методы модульного тестирования. Тестирование структуры программы на основе потока управления. Тестирование структуры программы на основе потока данных. Особенности интеграционного тестирования. Достоинства и недостатки различных подходов тестирования (монолитного, инкрементального, нисходящего и восходящего). Оценка сложности тестирования. Тестирование ООП-программ. Задачи и проблемы системного тестирования. Категории тестов системного тестирования. Оболочки модульного тестирования (Unit Frameworks). Семейство XUnit оболочек тестирования. Статическое тестирование модуля программы. Разработка тестовых сценариев и тестовых планов для системного тестирования программы.
Регрессионное тестирование
Понятие регрессионного тестирования. Цели и задачи регрессионного тестирования. Управляемое регрессионное тестирование. Обоснование корректности метода отбора тестов. Классификация тестов при отборе. Возможности повторного использования тестов. Классификация выборочных методов. Методы регрессионного тестирования. Итерационное регрессионное тестирование. Регрессионное тестирование объектно-ориентированных-программ.
Динамическое тестирование
Понятие динамического (автоматизированного) тестирования. Планирование динамического тестирования. Структура тестового набора для автоматического прогона. Преимущества и недостатки автоматизации тестирования. Программное обеспечение, применяемое при автоматизации тестирования. Применение автоматизации при тестировании. Издержки автоматизированного тестирования. Разработка use cases и test cases для ручного и автоматизированного тестирования приложения.
Тестирование юзабилити
Понятие юзабилити. Стоимость юзабилити-тестирования. Стандарты юзабилити-тестирования. Планирование юзабилити-тестирования. Процесс проведения тестирования. Анализ результатов тестирования. Вспомогательное ПО для проведения юзабилити-тестирования. Составление отчета по юзабилити-тестированию. Оценка юзабилити сайта.
Инсталляционное тестирование
Тестирование как способ обеспечения качества. Инсталляционное тестирование как тип тестирования. Тестирование инсталляции в плане индустриального тестирования. Тестирование сценариев первичной и повторной инсталляции. Тестирование деинсталляции. Инсталляционное тестирование при наличии ошибок в пакете, в окружении или в сценарии. Первичное инсталляционное тестирование.
Тестирование Web-приложений
Проблемы при разработке Web-приложений. Планирование тестирования Web-приложения. Тестирование функциональности, практичности, навигации, формы и содержимого страницы. Тестирование конфигурации и совместимости (кроссбраузерность приложений). XHTML валидность. Тестирование надежности и доступности. Обзор наиболее часто используемых браузеров и из характеристики.
Программное обеспечение, применяемое при тестировании
Понятие безопасности ПО. Понятие защищенности ПО. Метод тестирования безопасности как тип системного тестирования. Категории объектов защиты программных продуктов. Тестирования безопасности данных и бизнес функций. Тестирование системной безопасности, идентификация/ аутентификация/ удаленный доступ. Меры по обеспечению безопасности и защищенности программ. Тестирование безопасности приложения, использующего базы данных.
Нестандартные проблемы тестирования
Представление результатов сравнительного нагрузочного тестирования. Приёмочное тестирование при ежедневной сборке программного продукта. Использование ежедневной сборки и приёмочных тестов. В чём разница между тестированием и обеспечением качества. Пять (неуважительных) причин не иметь тестеров. Сравнительная оценка нагрузочного тестирования.
Программное обеспечение, применяемое при тестировании

Обзор систем управления проектами. ПО начального и профессионального уровня. Преимущества и недостатки фирменных систем управления проектами. Выбор системы управления проектами. Системы управления дефектами. Тестирование безопасности с использованием XSpider. Автоматизированное тестирование с использованием SilkTest. Нагрузочное тестирование с использованием LoadRunner. 

  • Продолжительность: 60 часов
Цель курса – приобретение навыков решения логических задач, составления и чтения схем алгоритмов, изучение основных конструкций языка программирования, развитие алгоритмического мышления, формирование навыков грамотной разработки программ, углубление знаний, умений и навыков решения задач типовых алгоритмических задачасов.
Программа курса
Основы алгоритмизации
Задача. Решение задачи. Понятие алгоритма. Свойства алгоритмов. Способы описания алгоритмов. Основные алгоритмические конструкции. Формы представления алгоритмов: естественный язык, блок-схема, формальный язык. Составление блок-схем алгоритмов. Программа. Типы программного обеспечения: системное, прикладное, инструментальное (средства разработчика). Трехуровневая модель программного продукта. Иерархическая организация программы, модульность. Область видимости и время жизни. Секции программного модуля
Представление данных. Принцип программного управления
Основы алгебры логики. Системы счисления. Связи между системами счисления. Основы арифметики двоичных чисел. Принцип программного управления. Базовая архитектура и структура ЭВМ. Принцип фон Неймана. Единицы измерения ёмкости запоминающих устройств. Представление данных разного типа в компьютере: целочисленные данные и числа с плавающей точкой, строки фиксированной и переменной длины, символы, логические значения, даты. Диапазоны представления чисел в двоичной системе счисления. Представление символьной информации. Кодовые таблицы. Понятие типа данных. Понятия транслятор, компилятор, интерпретатор. Статическая и динамическая компиляция
Методологии и языки программирования
Стадии и этапы разработки программ. Проектирование. Реализация. Проблемы программирования. Методологии программирования. Классификация методологий программирования (структурное, объектно-ориентированное, логическое, функциональное, программирование в ограничениях). Структурное программирование. Базовые принципы (пошаговая детализация, модульное структурное программирование). Объектно-ориентированное программирование. Базовые принципы (абстрагирование; инкапсуляция; наследование, полиморфизм). Языки программирования. Классификация.
Структуры данных. Основы проектирования баз данных
Базовые структуры данных – массивы и записи. Основные операции над структурами данных. Динамические структуры данных. Списки. Стеки. Деревья. Информационная система. Понятие базы данных. Требования пользователей к базам данных.
Понятие "интерфейс"
Варианты интерфейсов: UI, GUI и др. Важность правильной разработки интерфейса. Методы построения диалога с пользователем.
Переменные
Состав и структура языка программирования. Комментарии. Переменные. Определение имени переменной. Объявление переменной. Инициализация переменной по умолчанию и из кода. Область видимости и время жизни переменных. Затенение имен. Оператор присваивания. Типы переменных. Преобразование типов явное и неявное. Стандартные операции с переменными. Константы. Указатель или ссылка на переменную.
 Язык программирования. Операторы.
Понятие оператора. Запись операторов. Многострочные операторы, понятие блока. Оператор условия. Составления условия: сравнение числовых значений, дат, строковых и логических значения.Составление сложных условий: использование логических операций OR, AND, XOR, NOT. Приоритет операций. Вложенные операторы.Оптимизация условий. Оператор выбора. Оптимизация оператора выбора. Оператор цикла: циклы с предусловием, с постусловием, с параметром. Цикл для обхода элементов группы. Понятия: тело цикла, условие цикла, счетчик, итерация. Использование счетчика цикла. Оператор досрочного выхода из цикла.
Процедуры и функции
Декомпозиция задачи на подзадачи. Программирование сверху вниз и снизу вверх. Парадигма черного ящика. Входные и выходные данные подпрограммы. Понятия подпрограмма, процедура, функция. Процедуры стандартные, пользовательские, обработки событий. Описание, объявление, вызов процедуры. Библиотеки функций. Вызов процедуры и функции. Аргументы формальные и фактические. Тип аргумента. Передача аргументов по значению и по ссылке. Значение, возвращаемой функцией. Способы взаимодействия различных фрагментов программы. Структурная декомпозиция.
Способы организации данных
Понятие массива. Массивы одномерные и многомерные. Понятие индекса и элемента массива. Подсчет объема памяти занимаемой массивом. Типовые задачи с массивами: доступ к элементу, обход элементов, инициализация элементов.Представление текстовой информации. Понятие строка. Различные способы организации строковых данных. Работа с отдельными символами. Пользовательский тип данных (структура). Объявление и использование пользовательского типа. Совместное использование пользовательских типов данных и массивов.
Решение общих алгоритмических задач

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

  • Продолжительность: 36 часов
Программа курса
Качество программного обеспечения.
Качество - это цель инженерной деятельности; построение качественного программного обеспечения (ПО, software) - цель программной инженерии (software engineering). Внешние и внутренние факторы. Корректность (Correctness). Устойчивость (Robustness). Расширяемость (Extendibility). Повторное использование (Reusability). Совместимость (Compatibility). Эффективность (Efficiency). Переносимость (Portability). Простота использования (Easy of Use). Функциональность (Functionality). Своевременность (Timeliness). Другие качества. О документации. О программном сопровождении.
Критерии объектной ориентации
О критериях. Категории. Метод и язык.Бесшовность (seamlessness). Классы. Утверждения (Assertions). Классы как модули. Классы как типы. Вычисления, основанные на компонентах. Скрытие информации (information hiding). Обработка исключений (Exception handling). Статическая типизация (static typing). Универсальность (genericity). Единичное наследование (single inheritance). Множественное наследование (Multiple inheritance).Дублируемое наследование (Repeated inheritance). Ограниченная универсальность (Constrained genericity). Переопределение (redefinition). Полиморфизм. Динамическое связывание. Выяснение типа объекта в период выполнения. Отложенные (deferred) свойства и классы. Управление памятью (memory management) и сборка мусора (garbage collection). Реализация и среда. Автоматическое обновление (automatic update). Быстрое обновление (fast update). Живучесть (persistence). Библиотеки. Базовые библиотеки. Графика и пользовательские интерфейсы. Механизмы эволюции библиотек. Механизмы индексации в библиотеках. 
Модульность
Пять критериев. Декомпозиция. Модульная Композиция. Модульная Понятность. Модульная Непрерывность. Модульная Защищенность. Пять правил: прямое отображение, минимум интерфейсов, слабая связность интерфейсов, явные интерфейсы, скрытие информации. Пять принципов: Лингвистические Модульные Единицы, Самодокументирование, Унифицированный Доступ, Открыт-Закрыт, Единственный Выбор.
Подходы к повторному использованию
Цели повторного использования. Ожидаемые преимущества. Потребители и производители повторно используемых программ. Повторное использование персонала. Повторное использование проектов и спецификаций. Образцы проектов (design patterns). Повторное использование исходного текста. Повторное использование абстрактных модулей. Повторяемость при разработке ПО. Организация доступа к компонентам. Форматы для распространения повторно используемых компонентов. Изменчивость Типов (Type Variation), Группирование Подпрограмм (Routine Grouping), Изменчивость Реализаций (Implementation Variation), Независимость Представлений, Факторизация Общего Поведения. Традиционные модульные структуры. Подпрограммы. Пакеты. Перегрузка и универсальность. Синтаксическая перегрузка. Семантическая перегрузка (предварительное представление). Универсальность (genericity). 
Абстрактные типы данных (АТД)
Различные реализации. Представления стеков. Опасность излишней спецификации. Использование операций. Политика невмешательства в обществе модулей. Согласованность имен. Можно ли обойтись без абстракций. Формализация спецификаций. Специфицирование типов. Универсализация (Genericity). Перечисление функций. Категории функций. Частичные функции. Предусловия. Полная спецификация. Роль отложенных классов. Абстрактные типы данных и скрытие информации.
Статические структуры: классы
Роль классов. Модули и типы. Класс как модуль и как тип. Унифицированная система типов. Простой класс. Компоненты. Атрибуты и подпрограммы. Унифицированный доступ. Класс POINT. Распознавание вида компонент. Тело подпрограммы и комментарии к заголовку. Предложение indexing. Обозначение результата функции. Объектно-ориентированный стиль вычислений.
Динамические структуры: объекты
Объекты. Базовая форма. Простые поля. Ссылки. Идентичность объектов. Объявление ссылок. Ссылка на себя. Взгляд на структуру объектов периода выполнения. Объекты как средство моделирования. Работа с объектами и ссылками.Динамическое создание и повторное связывание. Процедуры создания и перегрузка. Операции над ссылками. Присоединение ссылки к объекту. Значение void. Клонирование и сравнение объектов. Копирование объектов. Агрегирование. Свойства развернутых типов. Присоединение: ссылочное и копии. Динамические псевдонимы. Инкапсуляция действий со ссылками.
Управление памятью
Создание объектов. Использование динамического режима. Отсоединение. Недостижимые объекты. Достижимые объекты в классическом подходе. Достижимые объекты в объектно-ориентрованной (ОО)-модели. Проблема управления памятью в ОО-модели. Восстановление памяти: проблемы. Удаление объектов, управляемое программистом. Автоматическое управление памятью. Механизм сборки мусора.
Универсализация
Горизонтальное и вертикальное обобщение типа. Необходимость параметризованных классов. Родовые АТД. Операции над сущностями родового типа. Типы и классы. Массивы как объекты. Свойства массива. 
Построение надежного ПО
Базисные механизмы надежности. О корректности ПО. Введение утверждений в программные тексты. Предусловия и постусловия. Класс стек. Контракты и надежность ПО. Права и обязательства. Ошибки, дефекты. Работа с утверждениями.Императив и аппликатив (применимость).
Обработка исключений
Базисные концепции обработки исключений. Отказы. Исключения. Источники исключений. Ситуации отказа. Обработка исключений.
Поддерживающие механизмы
Взаимодействие с не объектным ПО. Внешние программы. ОО-изменение архитектуры (re-architecturing). Условная Инструкция (Conditional). Множественный выбор. Циклы. Повторение вычислений. Выражения. Манифестные константы. Нестрогие булевы операторы. Строки.
Введение в наследование
Основные соглашения и терминология. Наследование инварианта. Наследование и конструкторы. Полиморфизм. Полиморфное присоединение. Полиморфные структуры данных. Типизация при наследовании. Согласованность типов. Пределы полиморфизма. Экземпляры. Статический тип, динамический тип. Динамическое связывание. Отложенные компоненты и классы. Повторное объявление функции как атрибута. Явное переопределение. Доступ к предшественнику процедуры. Динамическое связывание и эффективность. Статическое связывание как оптимизация.
Множественное наследование
Примеры множественного наследования.Переименование компонентов. Конфликт имен. Смена имен и переопределение. Подбор локальных имен. Конфликт переопределений. Дублируемое наследование и универсальность.
Техника наследования
Наследование и утверждения. Инварианты. Предусловия и постусловия при наличии динамического связывания. Абстрактные предусловия. Правило языка. Повторное объявление функции как атрибута.
Типизация
Проблема типизации. Базисная конструкция. Статическая и динамическая типизация. Правила типизации.
Глобальные объекты и константы
Константы базовых типов. Атрибуты-константы. Константы пользовательских классов. Однократные функции. Разделяемые объекты. Однократные процедуры. Константы строковых типов.
 

 

  • Продолжительность: 72 часов
Цель курса–приобрести навыки создания приложений на языке программирования Java.
Программа курса
Введение в курс
Особенности языка и приложений Java. Гипертекст и разработка простых приложений WEB на основе технологии DHTML.
Язык программирования Java
Основы и особенности разработки программ на Java. Типы данных, особенности их структуры и использования в приложениях. Реализации фундаментальных свойств и механизмов ООП на основе классов и других программных абстракций языка Java. Роль и механизмы обработки исключительных ситуаций. Понятие потоков, предопределенные потоки и их использования в типовых приложениях. Многопоточное программирование. Классы утилиты. Основные классы и их применение.
Средства Java для разработки сетевых приложений
Средства графического интерфейса языка Java. Реализация паттерна MVC в приложениях. События, типы и обработка событий в Java. Механизмы и средства разработки приложений с базами данных.
Технологии разработки сетевых приложений и Web–программирование с применением Java

Введение в ХМL. Средства и языки обработки XML-документов. Разработка Web-приложений с использованием JSP, SERVLETS.Технологии создания распределенных приложений с применением удаленных вызовов. RMI-технология. 

  • Продолжительность: 80 часов
Цель курса – приобрести навыки разработке распределенных приложений на основе Java платформ.
Программа курса
Введение в курс
Основные понятия и принципы разработки распределенных систем.
Технологии удаленных вызовов.
Концепция удаленного вызова процедур (Remote Procedure Call - RPC). Концепция удалённого вызова методов (Remote Method Invocation -RMI).
Технология  CORBA (Common Object Request Broker Architecture).
Архитектура и основные принципы CORBA. Сервисы CORBA.
Платформа J2EE.  Технология Enterprise Java Bean (EJB)
Общие сведения о платформе J2EE, и разработке многоуровневых распределенных приложений. JSP и сервлеты. Концепция EJB, назначение,  элементы архитектуры и принципы функционирования. Компоненты EJB, и особенности разработки EJB-программ. Сеансовые (Session) компоненты EJB. Версия 2.0. Особенности разработки и использования сущностных (Entity) компонент EJB. Java Persistence API и классы сущностей (Версия EJB 3.0). Понятиепромежуточнойсреды (Message-OrientedMiddleware - MOM). Применение JAVA Message Service (JMS). Бины, управляемыесообщениями (Message Driven Beans -MDB). Особенности реализации и использования.
Java Server Faces (JSF).
Патерны, понятие и использование. Патерн Model-View-Controler и Model-View-Presenter. JSF. Основы, модели и особенности разработки программ.
WEB-сервисы

Сервис-ориентированная архитектура и базовые технологии разработки WEB-служб. Разработка WEB-сервисов ориентированных на RPC-взаимодействие. 

  • Продолжительность: 80 часов
Цель курса - изучение современных методов и технологий проектирования информационных систем.
Программа курса
Проектирование и программная инженерия
Понятие, основные принципы и аспекты проектирования. Особенности проектирования информационных систем (ИС). Методы и основы программной инженерии для создания ИС.
Понятие, стандарты, процессы и модели жизненного цикла программного продукта
Понятие жизненного цикла (ЖЦ). Международные и отечественные стандарты. Основные и вспомогательные процессы и стадии ЖЦ ИС. Модели ЖЦ разработки программного обеспечения ИС.
Методы и технологии проектирования ИС
Понятие и основные принципы проектирования ИС. Методы и технологии проектирования. Унифицированный процесс разработки программного обеспечения Rational Unified Process.
Использование структурного подхода в проектировании
Сущность и основные принципы структурного проектирования. Методология SADT. Инструментальные средства автоматизации моделирования (CASE-средства). Функциональное моделирование (методология IDEF0, BpWin). Моделирование потоков данных (методология IDEF3, BpWin). Информационное моделирование (методология IDEF1X, ErWin). Сквозное моделирование Экспорт и импорт диаграмм IDEF0 и IDEF1.
Проектирование ИС на основе объектно-ориентированного подхода
Сущность объектно-ориентированного подхода. Основные средства языка UML. Варианты использования (use case). Диаграммы классов. Диаграммы взаимодействия (модели поведения системы). Диаграммы состояний и диаграммы деятельности. Диаграммы компонентов. Диаграммы размещения. Сопоставление и взаимосвязь структурного и объектно-ориентированного подходов.

Основные подходы к управлению разработкой и качеством программного обеспечения 

  • Продолжительность: 36 часов
Курс рассчитан на инженеров-программистов, а также на студентов старших курсов, обучающихся по специальностям, связанным с разработкой программных систем (ПС),  желающих повысить свою квалификацию в области объектно-ориентированного анализа промышленных и информационных систем.
По окончании данного курса слушатели смогут самостоятельно проводить анализ ПС, с использованием методов моделирования на основе унифицированного языка визуального моделирования (UML) и итерационного инкрементального процесса разработки (RUP).
Программа курса
Общие принципы объектно-ориентированного подхода
Анализ и проектирование их цели и значение в общем процессе разработки программных систем. Визуальное моделирование, основные принципы, аналитическая модель.
Анализ предметной области (Business Analysis)
Структура (модульность) проекта, как средство борьбы с хаосом.  Артефакты анализа предметной области и их предназначение. Лингвистический анализ и моделирование сущностей предметной области.
Моделирование функциональности в предметной области (business use case diagram): диаграмма штатных единиц (должности) и их функциональные обязанности. Моделирование бизнес-процессов (activity diagram).
Анализ требований (Requirements Analysis)
Классификация требований, моделирование требований, трассировочная матрица. Принципы построения модели вариантов использования (use case diagram).
Анализ требований (Requirements Analysis)
Актеры как роли штатных единиц. Модель вариантов использования (use case diagram), цель,  предназначение, отношения. Как избежать функциональной декомпозиции.
Сценарии, потоки событий и прототипы экранных форм - артефакты перехода от функциональных требований к архитектуре программных средств (ПС). Типовые, альтернативные и ошибочные потоки событий.
Системный анализ (System Analysis)
Классы и объекты анализа: entity, boundary, control, их предназначение и ответственность. Атрибуты и операции классов анализа. Диаграмма последовательности (sequence diagram) для моделирования динамических аспектов ПС: цели, назначение, особенности построения.
Моделирование структуры объектных связей.  Кооперативная диаграмма (collaboration diagram): цели, назначение, особенности построения. Моделирование классов анализа (class diagram).  Отношения классов анализа. Отличия архитектуры анализа и проектирования. Роль и место системного  анализа в процессе разработки ПС.

Гибкие методологии разработки (Agile) их возможности, области применения, достоинства и недостатки в сравнении с RUP. 

  • Продолжительность: 36 часов
Разработка Web- приложений на языке Java является на настоящий момент времени самым быстрорастущим сектором в области программирования, требующим все большего количества разработчиков. В то же время эта область является одной из наиболее подверженных изменениям, прежде всего в части развития технологий.
Будучи достаточно популярным языком программирования, Java отвечает на этот вызов появлением новых инструментов, повышающих эффективность процесса разработки и надежность разрабатываемых программных продуктов.
Одним из наиболее передовых новшеств последнего времени является дополнение языка Java языком динамического программирования Groovy и появление фреймворка для Web-разработки, называемого Grails. Эти инструменты быстро завоевали популярность, и на настоящий момент являются одними из наиболее востребованных технологий программирования на языке Java для Web.
Предварительный уровень подготовки:знание языка программирования Java,знание языка SQL, знакомство с JDBC.
Программа курса
Принципы построения Web-приложений. Обзор используемых технологий.
Сервлеты и JavaServer Pages.
Работа с базами данных с использованием фреймворка Hibernate.
Язык программирования Groovy.
Разработка и программирование веб-приложений с использованием фреймворка Spring.

Фреймворк Grails. 

  • Продолжительность: 36 часов
Операционная система Android быстро завоевала широкую популярность в мире смартфонов и электронных планшетов. Интенсивное развитие платформы Android требует наличия большого числа квалифицированных разработчиков мобильных приложений. Потребность в таких специалистах значительно превосходит потребности в программистах других направлений.
Цель курса – получение базовых знаний и навыков, необходимых для  освоения любых возможностей платформы и применения их при разработке собственных приложений.
Предварительный уровень подготовки: знаниеоснов программирования на языке Java, базовые знания реляционных баз данных (SQL), уверенное владение интегрированной средой разработки Eclipse. Рекомендуем прослушать курс «Программирование на языке JAVA».
В результате освоения rehcf слушатель будет уметь:
·           разрабатывать мобильные приложения в эмуляторе Android;
·           работать с меню в ОС Android для удобных с точки зрения юзабилити приложений;
·           работать с внутренними системными службами в ОС Android, поставщиками контента и базами данных;
·           тестировать созданные мобильные приложения для эффективной работы.
Программа курса
Обзор платформы Android
Что такое Android. История возникновения. Преимущества Android. Архитектура Android. Особенности платформы Android. Основные компоненты Android. Безопасность и полномочия (Permissions). Установка и настройка компонентов среды разработки.
Активности и ресурсы
Активности (Activity) в Android. Создание Активности. Жизненный цикл Активности. Стеки Активностей. Состояния Активностей. Отслеживание изменений состояния Активности. Ресурсы. Отделение ресурсов от кода программы. Создание ресурсов. Простые значения. Визуальные стили и темы. Изображения. Разметка. Анимация. Меню.
Приложения и пользовательский интерфейс
Использование внешних ресурсов в коде приложения. Использование ресурсов внутри ресурсов. Локализация приложения с помощью внешних ресурсов. Класс Application. Обработка событий жизненного цикла приложения. Понятие контекста. Пользовательский интерфейс. Представления (View). Разметка (Layout).
Намерения, меню и работа с данными
Адаптеры в Android. Использование Адаптеров для привязки данных. Намерения в Android. Использование Намерений для запуска Активностей. Неявные намерения. Сохранение состояния и настроек приложения. Общие Настройки (Shared Preferences). Работа с файлами. Использование статических файлов как ресурсов. Меню в Android. Дочерние и контекстные меню. Описание меню с помощью XML.
СУБД, контент-провайдеры и использование сетевых сервисов
Работа с базами данных в Android. Курсоры (Cursor) и ContentValues. Работа с СУБД SQLite. .Работа с СУБД без адаптера. Особенности работы с БД в Android. Выполнение запросов для доступа к данным. Изменение данных в БД. Использование SimpleCursorAdapter. Контент-провайдеры. Использование контент-провайдеров. Создание контент-провайдеров. Использование интернет-сервисов.
Диалоги в Android
Виды диалогов. Рекомендации по дизайну диалогов. Создание и удаление диалогов. Обработка событий.
Широковещательные приемники (Broadcast Receivers)

Применение широковещательных приемников. Жизненный цикл приемника. Регистрация приемника. Использование Ordered Broadcast. Использование PendingIntent          . 

  • Продолжительность: 40 часов
Использование потоков. Понятие Handler и HandlerThread. Использование AsyncTask. Понятие Loaders. Использование в приложениях.
Фоновые операции – Service
Создание. Взаимодействие с другими компонентами. Типы сервисов. Использование сервисов для межпроцессного взаимодействия. AIDL.
Хранение данных
Варианты хранения данных внутри приложения. Использование Backup API. Работа с облачными сервисами.
Компонент Broadcast Receiver
Создание и использование. Жизненный цикл. Типы ресиверов.
Компонент Content Provider
Жизненный цикл. Понятие Cursor и способы использования. Использование провайдеров для межпроцессного взаимодействия. Создание пользовательских провайдеров. Обзор провайдеров, предоставляемых платформой.
Работа с media контентом
Поддерживаемые форматы. Работа со звуком. Работа с видео. Использование камеры.
Работа с платформенными API
LBS сервисы. Способы получения информации. Геокодинг. Эмуляция геолокационных данных. Менеджер сетевых подключений. Менеджер телефонии. Типы сенсоров и работа с ними. Менеджер энергопотребления. Менеджер WiFi. Менеджер вибрации.
Взаимодействие с внешними устройствами
Bluetooth. NFC. WiFiDirect. USB.
Сервисы Google

Google Cloud Messaging. Варианты монетизации приложения. In-appBilling. Взаимодействиес GooglePlay. 

  • Продолжительность: 40 часов
Структура программы. Блок. Ветвления. Базовая форма цикла.
Кортежи, списки и словари
Кортеж. Основные операции с кортежем. Список. Основные операции со списком. Словарь. Основные операции со словарем. Цикл по итератору.
Обработка исключений
Понятие об исключении. Перехват исключения. Выброс исключения. Стандартные исключения.
Функции
Создание функции. Вызов функции. Функция как объект первого порядка. Лябмда-функция.
Работа с файловой системой
Основные операции с файлами. Основные операции с путями к файлам. Рекурсивный обход каталога.
Пакеты и модули
Создание модуля. Импорт модуля. Создание пакета. Важнейшие стандартные пакеты. Базовые операции ввода/вывода. Потоки ввода/вывода.
Ведение журнала событий и форматирование текстовых строк
Понятие о журнале событий. Запись в системный журнал событий. Форматирование текстовых строк. Ведение журнала событий приложения.
Обработка текстовой информации

Разновидности символьных строк. Кодировки. Регулярные выражения. 

  • Продолжительность: 40 часов
Цель курса - получение необходимых знаний и практических навыков разработки приложений на языке програмирования общего назначения Python, включая создание Web-приложений с использованием фреймворка Django.
Программа курса
Web-разработка с применением концепции MVC
История и развитие Web-программирования, различные подходы. Идеи MVC-подхода: разделение логики, интерфейса и данных. Установка Web-фреймворка Django. Структура проекта.
Основы использования шаблонов
Передача данных из приложения в шаблоны. Использование циклов и выбора в шаблонах.
Хранение и работа с данными
Способы хранения данных. Создание и администрирование баз данных (БД). Схема БД: таблицы, связи между ними, ключи. Отображение данных в БД на объекты приложения (ORM). Реализация операций выборки, создания, удаления и изменения объектов.
Использование форм
Специальные средства создания форм. Проверка параметров форм.
Разграничение прав доступа пользователей
Авторизация пользователей и разграничение прав доступа. Сессии, не требующие регистрации. Безопасность.
Сложные запросы к данным
Реализация сложных запросов. Соединение запросов, подзапросы. Вызов хранимых процедур.
Расширенные возможности шаблонного механизма
Встроенные фильтры. Создание своих фильтров.
Выдача данных в форматах, отличных от HTML
Отделение статического контента от динамического. Отправка почтовых уведомлений. Отдача лент новостей. Генерация PDF-документов/
Средства отладки и тестирования
Журналирование. Встроенный интерфейс администрирования. Модульное тестирование.
Развертывание Web-приложений

Использование встроенного Web-сервера, CGI, FastCGI и mod_python.Развертывание и миграция БД.