vchilka.in.ua 1

  1. Візуальне моделювання. Моделювання та CASE-технології. Уніфікована мова моделювання UML. Види діаграм UML. Спрощена стратегія використання UML-діаграм при моделюванні програмних систем.


  2. Засоби розширення UML: стереотипи (stereotype), помічені значення (tagged value), обмеження (constraint). Профілі предметних областей. Приклади.

  3. Діаграми прецедентів. Моделювання контексту та вимог до програмних систем. Прецеденти. Специфікація прецедентів у Rational Rose. Потоки подій та сценарії.

  4. Актори, основні актори. Відношення між акторами та прецедентами. Відношення узагальнення для прецедентів та акторів.

  5. Організація прецедентів. Відношення залежності між прецедентами. Відношення включення (include) та розширення (extend). Варіанти діаграм прецедентів.

  6. Реалізація прецедентів. Використання діаграм послідовностей. Узгодженість (цілісність) моделей. Діаграми класів-учасників VOPC (View of Participating Classes) прецедентів. Діаграми співробітництва (collaboration) та їх використання.

  7. Використання класів при проектуванні програмних систем. Класи етапу аналізу: прикордонні (boundary) або інтерфейсні класи, класи-сутності (entity), управляючі (control) класи (класи-менеджери). Класи етапу проектування.

  8. Відношення між класами та їх виявлення (узагальнення, залежність, асоціація, агрегація, композиція). Проектування класів, відношень між класами.

  9. Використання діаграм класів для кодогенерації. Кодогенерація та реінженіринг при розробці програмних систем.

  10. Патерни проектування. Класифікація патернів: породжуючі, структурні, поведінкові. Приклади патернів. Породжуючий патерн “Singleton”.
  11. Приклади структурних патернів: “Adapter”, “Proxy”, “Decorator”, “Composite”, “Strategy”.


  12. Поведінковий патерн “Observer”.

  13. Патерн IOC&DI. Ілюстративний приклад.

  14. Патерн IOC&DI. Spring: IoC + декларативний стиль.

  15. Платформа .NET. Середовище виконання .NET.

  16. Поняття керованого коду. .NET-компіляція. Міжмовна інтеграція у .NET.

  17. Метадані. Самоопис керованого коду .NET. Збірки .NET.

  18. Платформа .NET. Мова CIL. Just In Time (JIT) компіляція.

  19. Веб-служби (Web Services) та сервісно-орієнтована архітектура (СОА). Стандарти веб-служб.

  20. Документування веб-служб: генерація документації для сприйняття людиною (з використанням веб-браузерів), генерація документації, орієнтованої на використання програмами – wsdl-файли.

  21. Протокол SOAP. Конверт SOAP-повідомлення.

  22. Стандарти XML, XML-Schema. Простори імен, монікери XML.

  23. Розробка веб-служб. Тест-форми веб-служб.

  24. Розробка клієнтських програм для веб-служб. Утиліта Wsdl.exe.

  25. Скулемівські нормальні форми, множини диз’юнктів. Метод резолюцій для логіки висловлювань.

  26. Уніфікація. Алгоритм уніфікації. Метод резолюцій для логіки предикатів.

  27. Чистий (недетермінований) Пролог. Синтаксис. Логічна (декларативна) та процедурна семантика.

  28. Приклади використання Прологу (задача про 8 ферзів, родинні зв’язки).

  29. Пролог-процесори. Огляд особливостей (стратегія обчислень, відкати).

  30. Пролог-процесори. Техніка програмування (управління відкатами, моделювання циклів, "повтори" на основі предиката repeat, повтори з лічильником). Моделювання стеків та черг.

  31. Експертні системи та стратегії пошуку відповіді. Експертні системи із прямою стратегією.
  32. Експертні системи з оберненою стратегією. Подання знань у вигляді правил Прологу.


  33. Подання знань в експертних системах. Мережі знань.

  34. Експертні системи з поясненнями. Питання “Навіщо?” (“Why?”).

  35. Експертні системи з поясненнями. Питання “Як?” (“How?”).

  36. Експертні системи в умовах неповної визначеності. Основні підходи.

  37. Основи функціонального програмування. Підходи до подання функцій (типи функцій, каррінг, використання рівнянь та рекурсії, принцип зіставлення зі зразком, функції як параметри, параметричний поліморфізм).

  38. Теоретичні основи функціонального програмування, лямбда-числення (лямбда-терми та β-редукція як основне правило виводу, поняття енергійних та лінивих обчислень).

  39. Рекурсивні означення функцій та підхід до уточнення таких функцій у лямбда-численні (на основі залучення понять нерухома точка та Y-комбінатор).

  40. Взаємно-рекурсивні функції та їх уточнення у лямбда-численні.

  41. Можливість моделювання поширених традиційних типів та функцій у лямбда-численні.

  42. Мова Haskell. Типи даних (елементарні та складені). Визначення функцій у мові Haskell. Поліморфні функції.

  43. Мова Haskell. Інфіксні оператори та функції. Каррінг.

  44. Мова Haskell. Визначення функцій рівняннями. Зіставлення зі зразком. Умовна конструкція Case. Двовимірна структуризація.

  45. Мова Haskell. Типи користувача. Конструктори. Рекурсивні типи. Списки, тип Tree.

  46. Мова Haskell. Використання нескінчених списків. Списки арифметичних послідовностей.

  47. Мова Haskell. Функції вищих порядків. Приклади (map, filter, zip, zipWith, foldl, foldl1 foldr, foldr1).

  48. Мова Haskell. Використання функцій із накопичувальними параметрами. Поняття кінцевої рекурсії.
  49. Мова Haskell. Масиви. Індексування у масивах. Двовимірні масиви. Приклади.


  50. Мова Haskell. Класи типів. Клас типів рівності (Eq). Розширення класів (class extension). Клас типів Ord. Варіанти втілення класів Eq та Ord у типі Tree.

  51. Мова Haskell. Похідні втілення класів типів. Похідні втілення Eq та Ord у типі Tree.

  52. Мова Haskell. Класи типів Enum та Bounded та варіанти списків арифметичних послідовностей.

  53. Мова Haskell. Клас типів Show. Варіанти втілення класу Show у типі Tree.