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

  • Прекрасное дополнение к курсу Информатика, который читается на первом и втором семестрах. Курс содержит тщательно отобранный теоретический материал,
    а также интересные практические задания. Рекомендуется пройти этот курс прежде чем перейти к другим курсам по программированию для самостоятельного обучения, таким как Java, С#, С++ или Python.

    Краткое содержание курса:

    Основы программирования на языке C; компиляция; типы данных (int, float, double, char, etc.); операторы(+ - * / = == += и т.п.); функции; условный оператор; циклы; препроцессор (#include, #define); операторы и приоритеты; типы и преобразования типов; прототипы функций;циклы (while, do/while); еще про ввод/вывод и scanf; комментарии; программа make; массивы; одномерные; многомерные; аргументы командной строки; утверждения (assert); рекурсия; введение в указатели; арифметика указателей; указатели и массивы; динамическое выделение памяти; стек и куча; отладчик gdb; struct; typedef; связные списки; хэш таблицы; еще о препроцессоре C; extern; const; другие целые типы: short, long, unsigned; битовые операторы; switch; виртуальная машина.

    В курсе имеется восемь практических заданий.

    Это курс для самостоятельного изучения.  Для того чтобы получить доступ к материалам курса, пожалуйста, зарегистрируйтесь.

    Самостоятельная запись
  • Курс содержит основные сведения о языке С++. Рекомендуется для самостоятельного изучения параллельно или после курса Информатика и после курса Язык программирования С.

    Краткое содержание курса:

    История философия и компоненты языка C++;  классы; ссылки; динамическое выделение памяти; деструкторы; директива assert; компиляция программ; константы; комментарии; переопределение операторов; встроенные функции; инициализация списков; классы и структуры; арифметика разреженных векторов; отладчик gdb; обработка исключений; обобщенное программирование; шаблоны C++; наследование; переопределение функций базового класса; виртуальные функции и деструкторы; модификаторы доступа; абстрактные функции; локальные переменные; препроцессор и условное включение заголовков; стандартная библиотека шаблонов STL; контейнеры STL; работа со строками в C++; алгоритмы STL.

    В курсе имеется восемь практических заданий.

    Этот курс предназначен для самостоятельного изучения.  Для того чтобы получить доступ к материалам курса, пожалуйста, зарегистрируйтесь.

    Самостоятельная запись
  • В курсе изучаются технологии программирования на языке С++. Рекомендуется для самостоятельного изучения после курса Язык программирования С++.

    Краткое содержание курса:

    Стандартная библиотека шаблонов STL, алгоритмы, итераторы, функторы, контейнеры. Переопределение операторов. модульное тестирование. Google C++ Testing Framework. Статические функции. Шаблоны функций. Адаптеры.Управление версиями исходного кода. Subversion. Шаблоны и наследование. Автоматизация компилирования программ. Make и makefile. Автоматическая подготовка документации. Doxygen. Обработка исключений. Библиотека Boost. Smart pointers. Работа со строками и потоками ввода/вывода. Преобразование типов.

    В курсе имеется семь практических заданий^ которые содержат отдельные этапы разработки большого программного проекта.

    Этот курс предназначен для самостоятельного изучения.  Для того чтобы получить доступ к материалам курса, пожалуйста, зарегистрируйтесь.

    Самостоятельная запись
  • Курс предназначен для самостоятельного изучения. Cодержит сведения о расширенных возможностях  языка Java.  Курс рекомендуется для самостоятельного изучения студентам прослушавшим курс Технология программирования. 

    В изложении материала курса предполагается что вы уже знакомы из курса Технология программирования с классами, модификаторами доступа, наследованием, вложенными классами, принципами обработки исключений, Swing API и событиями AWT; понимаете принципы работы с коллекциями Java; знакомы с хорошим стилем программирования, и правилами назначения имен в Java.

    В курсе по этапам разрабатывается проект сетевой игры. Основное внимание уделяется средствам автоматизации проектирования программ (Ant), модульному тестированию (TextNG), генерации документации (Javadoc), ведению журналов (Log4j), средствам управления версиями исходного кода (Subversion). Рассматриваются вопросы сетевого взаимодействия приложений (Java RMI), принципы проектирования пользовательского интерфейса (MVC), асинхронных вызовов процедур и др. Курс содержит семь лекций и семь практических заданий завершающихся созданием дистрибутива Java приложения.

    Самостоятельная запись
  • Введение в программирование на языке Python. Курс состоит из следующих основных частей: общие сведения о языке Python; средства разработки программ; идиомы программирования ;дополнительные возможности языка; руководство по стилю программирования. Курс содержит семь практических заданий.

    Это курс для самостоятельного изучения.  Для того чтобы получить доступ к материалам курса, пожалуйста, зарегистрируйтесь.

    Самостоятельная запись
  • Курс предназначен для самостоятельного изучения. Материалы курса включают лекции и практические задания. Содержание курса:

    Общие сведения об архитектуре платформы .NET Framework
    Библиотека классов. Язык MSIL. Среда периода исполнения CLR. Компиляторы времени исполнения (JIT). Поддержка и особенности проектирования на нескольких высокоуровне-вых языках программирования. Спецификация CTS.

    Система типов. Управление памятью
    Система типов .NET. Размерные и ссылочные группы типов. Упаковка и распаковка. Способы хранения переменных в памяти. Стек и динамическая куча (heap). Особенности инициализации и присваивания размерных и ссылочных переменных. Конструктор класса. Передача параметров процедур через стек. Клонирование переменных размерных типов. Работа с внешними “неуправляемыми”ресурсами. Размещение и освобождение ресурсов. Принцип работы сборщика мусора (GC). Корневые и некорневые ссылки. Деструктор (finalizer). Назначение и использование конструкции using.

    Технология отражения
    Назначение и примеры использования технологии отражения. Класс Type - базовый тип технологии отражения. Классы пространства имен Refletion библиотеки .NET Framework. Позднее связывание. Использование интерфейсов. Создание экземпляров классов и доступ к элементам класса с помощью позднего связывания. Классы Assembly и Activator. Атрибуты. Определение правила создания и внедрения в сборку. Извлечение значений атрибутов во время исполнения. Привязка атрибутов. Глобальные атрибуты.

    Делегаты и события
    Определение делегата. Понятие и реализация объектно-ориентированного указателя на функцию. Классы System.Delegate и System.MulticastDelegate. Конструкции языка C# для поддержки объявления и инициализации делегатов. Поддержка нескольких целевых функ-ций. Синхронное исполнение целевых функций. Получение результатов исполнения коллекции целевых функций. События. Принцип обработки событий. Архитектура приложения управляемого событиями. Источники событий. Обработка событий в приложении с графическим пользовательским интерфейсом. Ключевое слово event. Регистрация и дерегистрация обработчиков событий. Ограничения для событий.

    Сборки
    Понятие сборки. Содержимое сборки. Приложение и библиотечные сборки. Правила по-иска библиотечных сборок. APPBASE и CODEBASE. Связь приложения и библиотечных сборок. Динамические библиотеки. Таблица импорта и таблица экспорта. Установка много-компонентных приложений. Дополнительные пути для поиска сборок. Конфигурационный файл. Глобальный кэш сборок GAC. Полное имя сборки и его компоненты: имя файла, вер-сия, культура и маркер публичного ключа. Способ указания компнентов полного имени. Цифровая подпись сборки. Процедура цифровой подписи с помощью утилиты sn.exe. От-крытый и закрытый ключи. Хэш сборки и хэш открытого ключа. Процедура проверки цело-стности сборки на основе цифровой подписи. Использование цифровой подписи в процессе проектирования. Отложенная подпись.

    Асинхронное исполнение кода
    Поддержка мультизадачности в .NET. Общие принципы организации мультизадачного исполнения программ. Преимущества мультизадачности и проблемы, возникающие при раз-работке мультизадачных программ. Понятие потоков. Приоритеты потоков. Правила пере-ключения потоков. Класс Thread. Инициализация и запуск потока в .NET. Назначение имен потокам для упрощения отладки. Правила завершения работы потоков. Метод Join. Аварий-ное прерывание работы потока. Пулы потоков. Преимущества использования технологии пулов потоков. Доступ к пулу потоков с помощью делегатов. Правила исполнения процедур в пуле потоков. Ожидание завершения исполнения процедуры в пуле потоков. Периодиче-ский опрос (поллинг). Объекты синхронизации и функции ожидания. Метод WaitOne. Функции завершения. Получение результата исполнения асинхронной операции. Организация доступа к общим ресурсам. Классы мьютекс и монитор. Конструкция lock языка C#. Понятие тупиковой ситуации deadlock.

    Технология защиты кода (CAS)
    Принципы защиты исполняемого кода в .NET Framework. Понятие мобильного кода. Ог-раничение доступа кода к ресурсам компьютера. Доказательства, разрешения и политика безопасности. Виды доказательств. Классы .NET реализующие различные разрешения для кода. Отображение доказательств в разрешения. Грубая настройка политики безопасности на основе зон. Тонкая настройка политики безопасности. Группы. Уровни политики безопасности. Взаимодействие правил определяемых на разных уровнях политики. Проверка разрешений во время исполнения кода. Метод Demand. Трассировка стека.

    Управление данными (ADO.NET)
    Принципы организации интерфейсов для управления базами данных. Проблема доступа к различным типам данных. Интерфейсы ODBC, OLEDB, ADO. Архитектура и основные классы ADO.NET. Управляемые провайдеры. Доступ к интерфейсу OLEDB и MS SQL серверу. Подключение к СУБД. Строка соединения. Передача запросов и обработка результатов запросов. Сохраняемые процедуры. Реализация базы данных в памяти клиентского компьютера. Класс DataSet. Классы для работы с таблицами, атрибутами, записями и отношениями между таблицами. Заполнение класса DataSet из удаленного источника и сохранение изменений. Класс DataAdapter.

    Работа с XML документами
    Правила формирования XML документов. Элементы языка XML. Тэги атрибуты, инст-рукции обработки. Правильно сформированный XML. Классы для работы с XML докумен-тами в .NET. Сериализация и десериализация XML. Пример поэлементного разбора содер-жимого XML файла с помощью класса XMLTextReader. Объектная модель документа XML DOM. Классы XMLDocument и XMLElement. Загрузка и сохранение документа. Пространст-ва имен XML. Перемещение между элементами DOM. Поиск в XML документе. Язык XPath.

    Основы разработки веб приложений и веб-сервисов
    Архитектура ASP.NET. Схема обработки HTTP запросов. Общее описание протокола HTTP. Типы HTTP запросов. Рабочий процесс ASP.NET. Создание и установка обработчи-ков HTTP запросов. Класс HttpContext. ASPX страница. Технология code behind. Класс Page. Разработка страниц веб-приложения. Обработка POST запросов. Понятие и архитектура веб-служб. Установка веб службы. Стандарты SOAP, WSDL. Прокси классы.

    Интерфейс с COM компонентами и сервисами операционной системы
    Технология COM Interoperation. Библиотеки типов. Доступ к классам .NET через COM интерфейс. Доступ к COM компонентам из приложений .NET. Утилиты TLBIMP и TLBEXP. Доступ к функциям API Windows. Преобразование параметров процедур. Изоморфные и неизоморфные типы. Преобразование структур.

    Самостоятельная запись