Актуальні проблеми
об'єктно-орієнтованого програмування

Галузь знань: 12 Інформаційні технології
Спеціальність: 121 Інженерія програмного забезпечення
Освітня програма: Програмне забезпечення систем

Викладач: доцент Жереб Костянтин Анатолійович (лекції, лабораторні заняття)

Викладається: в 3-му семестрі магістратури.
Загальний обсяг: 90 год, з яких:
  • Лекції – 14 год.
  • Лабораторні роботи – 14 год.
  • Самостійна робота – 60 год.

Мета та завдання дисципліни

Мета та завдання дисципліни – оволодіння сучасними методами проектування та розробки об'єктно-орієнтованих застосувань, підготовка до практичного використання технологій та платформ об'єктно-орієнтованого програмування.

Предмет дисципліни

Предмет навчальної дисципліни Актуальні проблеми об'єктно-орієнтованого програмування включає в себе розгляд основних принципів функціонування сучасних складних об'єктно-орієнтованих застосувань. Розглядаються технології розробки графічного інтерфейсу користувача як для традиційних desktop-застосувань, так і для веб-застосувань, що останнім часом набирають все більшої популярності. Також розглядаються питання роботи з даними і виконання високопродуктивних обчислень. Значна увага приділяється процесам розробки програмного забезпечення, в тому числі командній розробці, та використанню інструментальних засобів розробки. Розглядаються методи проектування і побудови ефективних об'єктно-орієнтованих застосувань.
В результаті вивчення навчальної дисципліни студент повинен
знати:
  • відомості про розробку програмного забезпечення з використанням сучасних мов програмування,
  • принципи проектування об'єктно-орієнтованих застосувань.
та вміти:
  • проектувати та розробляти об'єктно-орієнтовані застосування з використанням сучасних технологій;
  • вибирати найбільш вдалі технології для реалізації проекту;
  • забезпечувати продуктивність застосувань;
  • використовувати інструментальні засоби розробки.

Вимоги до знань та вмінь

Для вивчення курсу Актуальні проблеми об'єктно-орієнтованого програмування студент повинен прослухати наступні курси:
  • Основи програмування
  • Програмування
  • Основи об'єктно-орієнтованого програмування
  • Об'єктно-орієнтоване програмування
та повинен знати:
  • базові відомості про розробку програмного забезпечення з використанням сучасних мов програмування,
  • принципи проектування об'єктно-орієнтованих застосувань.
а також повинен вміти:
  • використовувати інструментальні засоби побудови, запуску та відлагодження програм,
  • порівнювати технології реалізації та вибирати оптимальну технологію для вирішення конкретної задачі,
  • шукати додаткову інформацію про об'єктно-орієнтовані технології.

Програма курсу

Змістовий модуль 1: Процеси розробки об'єктно-орієнтованих застосувань.

Тема 1: Сучасний стан об'єктно-орієнтованого програмування.
  • Об'єктно-орієнтована парадигма програмування.
  • Основні поняття.
  • Історія розвитку.
  • Сучасні особливості.
  • Виклики при розробці та використанні об'єктно-орієнтованих застосувань.
Тема 2: Модульне тестування (Unit testing).
  • Поняття модульного тестування.
  • Інструментальні засоби.
  • Покриття коду.
  • Mock object frameworks.
  • Принципи розробки тестів.
Тема 3: Проектування об'єктно-орієнтованих програм. Патерни проектування.
  • Проектування об'єктно-орієнтованих програм.
  • Основні принципи проектування Мова UML.
  • Патерни проектування.
Тема 4: Відкриті стандарти розробки графіки, засновані на XML.
  • Декларативні та імперативні засоби розробки графіки.
  • Нові можливості HTML5.
  • Векторна графіка за допомогою SVG.
  • Анімації за допомогою SMIL.
  • Інші XML-технології (MathML, XAML, XUL, XForms).
  • Переваги і недоліки відкритих стандартів.
Модульна контрольна робота 1

Змістовий модуль 2: Об'єктно-орієнтовані технології.

Тема 5: Робота з реляційними та нереляційними даними.
  • Невідповідність між об'єктно-орієнтованою та реляційною моделлю даних.
  • Системи Object Relational Mapping.
  • Доступ до даних різних типів (реляційні, XML, об'єкти).
  • NoSql бази даних.
  • Підвищення продуктивності баз даних.
Тема 6: Робота з текстовими даними.
  • Випадки, в яких доцільне використання текстових даних.
  • Функції роботи з текстом.
  • Регулярні вирази.
  • Синтаксичні аналізатори.
  • Повнотекстовий пошук.
  • Системи Natural Language Processing (NLP).
Тема 7: Розробка паралельних програм для графічних прискорювачів.
  • Графічні прискорювачі як паралельна обчислювальна платформа.
  • Платформа NVidia CUDA.
  • Технології OpenCL, DirectCompute.
  • Засоби ефективної роботи з пам'яттю.
Модульна контрольна робота 2

Рекомендована література

Основна:

  1. Буч Г. Объектно-ориентированное проектирование с примерами применения. – М.: Конкорд, 1992.
  2. Нейгел К., Ивьен Б., Глинн Дж., Уотсон К., Скиннер М. C# 4.0 и платформа .NET 4 для профессионалов. – М.: Диалектика-Вильямс, 2010. — 1440 с.
  3. Месарош Дж. Шаблоны тестирования xUnit: рефакторинг кода тестов. – М.: Диалектика-Вильямс, 2008. — 832 с.
  4. Кон М. Scrum: гибкая разработка ПО. – М.: Диалектика-Вильямс, 2011. — 576 с.
  5. Фаулер М. UML. Основы. 3-е издание. – М.: Символ, 2005. 192 с.
  6. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб.: «Питер», 2007. — 366 с.
  7. Мак-Дональд М., Silverlight 3 с примерами на C# для профессионалов. – М.: Диалектика-Вильямс, 2010. — 656 с.
  8. Бенкен Е.С. PHP, MySQL, XML. Программирование для Интернета.  – СПб.: БХВ-Петербург, 2007. — 336 с.
  9. Лабберс П., Олберс Б., Салим Ф. HTML5 для профессионалов: мощные инструменты для разработки современных веб-приложений. – М.: Диалектика-Вильямс, 2011. — 304 с.
  10. Раттц Дж.C. (мл.) LINQ: язык интегрированных запросов в C# 2010 для профессионалов. – М.: Диалектика-Вильямс, 2011. – 656 с.

Додаткова:

  1. Смит К. Программирование на F#. – М.: Символ, 2011. – 448 с.
  2. Open Source Development with CVS
  3. Version Control with Subversion
  4. Pro Git
  5. Mercurial: The Definitive Guide
  6. ANTLR Parser Generator
  7. Intel Parallel Studio
  8. NVidia CUDA
  9. IronPython
  10. Wikipedia, the free encyclopedia
  11. ASP .NET
  12. Best Practices for Speeding Up Your Web Site