Етап 1. Вступ до структурного та об’єктного програмування на Java (шкільна програма)

  1. Робота з Eclipse. Перша програма. Ознайомлення із поняттями клас, пакет, проект. Коментарі. Оголошення змінних. Ідентифікатори. Ключові слова. Типи даних String, int. Арифметичні операції. Тип даних double. Перетворення (casting) типів int та double. Конкатенація String. Представлення чисел у двійковій, шістнадцятковій та вісімковій системах числення. Представлення від’ємних чисел у двійковій системі числення.
  2. Операції порівняння. Тип даних boolean. Оператори розгалуження if та if-else. Логічні функції NOT, AND, OR. Перетин прямокутників.
  3. Цикли. Оператор for. Область видимості змінної. Вкладені цикли. Оператори while та do-while. Виведення крапкових трикутників.
  4. Види масивів, способи їх опису. Одновимірні масиви. Поле length. Обробка масивів без розгалужень. Оператор foreach. Обробка масивів із розгалуженням. Обробка масивів із утворенням масивів-результатів відомої та невідомої довжин.
  5. Ознайомлення із Java API , пакетом java.lang, класом String та методами length, toLowerCase, toUpperCase, charAt, endWith, startWith класу String. Ознайомлення із поняттям перезавантаження методів та методами indexOf, replace, split, substring класу String. Ознайомлення із поняттям імпорт, ключовим словом static та класом java.util.Arrays. Методи toString, sort, binarySearch класу Arrays. Клас java.util.ArrayList. Методи size, add, get, indexOf класу ArrayList. Обробка масивів цілих чисел із утворенням колекцій ArrayList.

Етап 2. Професійні елементи програмування на Java 

  1. Оператори ділення за модулем %, інкремента, декремента, операцій з присвоєнням, тернарний оператор. Логічна функція XOR, shortcirquit логічні функії. Оператори switchcase, break, continue, foreach.
  2.  Поняття інкапсуляції, структура класу. Створення власних класів. Оголошення та ініціалізація полів. Оголошення методів. Оголошення та створення об’єктів. Оператор new. Літерал null. Архітектурний шаблон MODEL-VIEW-CONTROLLER (MVC) для побудови власних класів. Приклад побудови класу Calculator. Ознайомлення із конструкторами, передаванням в метод посилань на об’єкти.

Етап 3. Об’єктне проєктування на Java

  1. Ключове слово static. Локальні змінні, змінні об’єкту та класу.
  2. Особливості передавання в метод в якості аргументів примітивів та посилань.
  3. Типи методів. Конструктори. Перезавантажені конструктори.
  4. Перезавантаження методів.
  5. Mетод main(). Аргументи в методі main().
  6. Ініціалізація змінних. Блоки ініціалізації. Порядок ініціалізації.
  7. Пакети. Import. Static import. Клас Math.
  8. Поняття наслідування. Відношення hasa, isa. UML-діаграми. Класи Calendar, GregorianCalendar, Date.
  9. Модифікатори доступу.
  10. Ключове слово this.
  11. Ключове слово super. Клас Object.
  12. Перевизначення методів. Метод toString().
  13. Поліморфні посилання. Поліморфізм. Метод equals().
  14. Covariant returns.
  15. Приведення типів. Оператор instanceof.
  16. Ключове слово final.
  17. Абстрактні класи.
  18. Інтерфейси. Інтерфейси Comparable, Comparator.
  19. Внутрішні класи (регулярні, локальні, анонімні, статичні).
  20. Функціональні інтерфейси та лямбда-вирази.
  21. Exceptions.
  22. Робота з текстовими файлами.
  23. Strings, StringBuffers, StringBuilders.
  24. Wrappers, autoboxing, autounboxing.
  25. Enums.
  26. JavaFX.
  27. Клас Arrays.
  28. Varargs.
  29. Garbage collector.
  30. API Java SE8 для роботи із датами та часом. Класи пакету java.time: LocalDate, LocalTime, LocalDateTime, Period. Клас java.time.format.DateTimeFormatter. 

Етап 4. Багатопотокове та паралельне програмування на Java

Модуль 1. Алгоритми та контейнери

1.Опрацювання текстових даних (parsing) на основі технології regex.
2.Серіалізація файлів. Інтерфейси Serializable та Externalizable. Особливості композиції та наслідування при серіалізації
3.Фреймворк колекцій. Принципи побудови hash-таблиць. Інтерфейси Set, Queue, Мар, Iterator. Класи TreeSet, PriorityQueue, Dequeue, TreeMap, HashMap.
4.Побудова та використання generic-класів та generic-методів. Особливості поліморфізму при використанні generic-колекцій.

Модуль 2. Потокове програмування

5.Основи створення та використання потоків. Клас Thread. Інтерфейси Runnable, Callable, Executor, ExecutorService.
6.Основи синхронізації потоків. Ключове слово synchronized. Синхронізація статичних методів. Пакет java.util.concurrent.atomic.
7.Реалізація синхронізації на основі ресурсів пакету java.util.concurrent. Потокобезпечні колекції.
8.Взаємодія потоків. Методи wait, notify класу Object. Поняття взаємного блокування (deadlock).
9.Проміжні та термінальні методи інтерфейсу Stream для формування та опрацювання потоків.
10.Клас Optional. Особливості технології потокового зведення.
11.Метод reduce. Методи класу Collectors.
12.Розпаралелювання потоків. Порівняльний аналіз послідовних та паралельних потоків, визначення доцільності розпаралелювання потоків.