ПРОГРАМУВАННЯ - 2. СТРУКТУРИ ДАНИХ ТА АЛГОРИТМИ

Робоча програма навчальної дисципліни (Силабус)

Реквізити навчальної дисципліни

Рівень вищої освіти Перший (бакалаврський)
Галузь знань 12 Інформаційні технології
Спеціальність 126 Інформаційні системи та технології
Освітня програма Інтегровані інформаційні системи
Статус дисципліни Нормативна
Форма навчання очна(денна)/заочна/дистанційна
Рік підготовки, семестр 1 курс, весінній семестр
Обсяг дисципліни 150 годин (54 годин – Лекції, 36 годин – Лабораторні, 60 годин – СРС)
Семестровий контроль/ контрольні заходи Екзамен/екзаменаційна робота
Розклад занять http://rozklad.kpi.ua
Мова викладання Українська
Інформація про
керівника курсу / викладачів

Лектор: к.т.н., Букасов Максим Михайлович,

bukasov@gmail.com,

моб. +38(068)352-41-49

Лабораторні: асистент, Бердник Юрій Михайлович,

berdniky@gmail.com,

моб. +38(096)192-66-71

Розміщення курсу https://campus.kpi.ua

Програма навчальної дисципліни

Опис навчальної дисципліни, її мета, предмет вивчання та результати навчання

Опис дисципліни. При проходженні даної дисципліни, студенти познайомляться з поняттями веб-сервер, веб-застосунок, сервлет, потік виконання програми, процес, потік даних. На лекціях студенти отримають знання з основ веб-програмування, багатопоточного програмування та функційного програмування мовою Java. На лабораторних заняттях студенти закріплять отримані теоретичні знання, а також отримають навички створення, запуску, тестування та налагодження клієнт-серверних веб-застосунків. На лекції викладач користується власним презентаційним матеріалом. Демонструє практичну частину на комп’ютері з встановленим інтегрованим середовищем розробки. Сформовані директорії на гугл-диску для обміну інформацією викладач-студент.

Предмет навчальної дисципліни: теорія і практика застосування базових алгоритмічних структур і базових структур даних з використанням сучасних технологій та парадігм розроблення програмного забезпечення.

Міждисциплінарні зв’язки. Дисципліна Програмування-2 є базовою для ряду дисциплін, пов’язаних з програмуванням, використовує поняття з дисципліни Програмування-1. Дає основу для курсів, пов’язаних з програмуванням на другому році навчання, а також для таких дисциплін як: системи баз даних, об’єктно-орієнтоване програмування, системне програмування.

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

Основні завдання навчальної дисципліни

Знання:

  • типові алгоритмічні конструкції, основні структури даних;

  • основи веб-програмування;

  • основи багатопоточного програмування;

  • основи функційного програмування.

Уміння:

  • аналізувати поставлену задачу, обирати доцільний метод її розв'язання;

  • складати алгоритм вирішення задачі;

  • писати та тестувати програми мовою Java;

  • володіти сучасними засобами розроблення ПЗ.

Пререквізити та постреквізити дисципліни (місце в структурно-логічній схемі навчання за відповідною освітньою програмою)

Пререквізити: вміти користуватися комп’ютером на рівні користувача та адміністратора, вміти працювати з офісними пакетами на базовому рівні, мати базові знання з основ програмування, знати синтаксис мови Java.

Постреквізити: Після проходження дисципліни студенти зможуть відтворити базові етапи створення програмного забезпечення, а саме виконувати аналіз предметної області, будувати алгоритм розв’язання задачі, обирати структури для збереження даних, писати код, проводити його налагодження та тестування. Розуміти й уміти використовувати на практиці базові принципи структурного, об’єктно-орієнтованого та функційного програмування.

Зміст навчальної дисципліни

Очна форма

Лекційні заняття

Розділ 1. Загальні положення.

Розділ 2. Основи створення веб-застосунків.

Розділ 3. Основи багатопоточного програмування.

Розділ 4. Основи функціонального програмування.

Лабораторні заняття

1. Веб-застосунок на базі Java-сервлету.

2. Оброблення параметрів запиту у сервлетах.

3. Створення веб-сторінок на базі технології JSP.

4. Створення JSP-сторінок з використанням бібліотек EL та JSTL.

5. Використання асоціативних масивів для оброблення текстових даних.

6. Обчислення в паралельних потоках виконання.

7. Синхронізація потоків виконання.

8. Вкладені та внутрішні класи.

9. Лямбда-вирази

10. Функціональні інтерфейси

11. Посилання на методи

12. Stream API

Заочна форма

Лекційні заняття

Розділ 1. Загальні положення.

Розділ 2. Основи створення веб-застосунків.

Лабораторні заняття

1. Веб-застосунок на базі Java-сервлету.

2. Оброблення параметрів запиту у сервлетах.

3. Створення веб-сторінок на базі технології JSP.

Навчальні матеріали та ресурси

Базова література

  1. Шилдт, Герберт. Java 8: руководство для начинающих, 6-е изд. : Пер.

    с англ. – М.: ООО "И.Д.Вильяме", 2015. – 720 с.

  2. Шилдт, Герберт. Java 8. Полное руководство; 9-е изд.: Пер. с англ. -

    М.: ООО "И.Д. Вильяме", 2015. – 1376 с.

  3. Джеймс Гослинг, Билл Джой, Гай Стил, Гилад Брача, Алекс Бакли. Язык

    программирования Java SE 8. Подробное описание, 5-е издание. – М.: "Вильямс", 2015. – 672 с.

  4. Блох, Джошуа. Java: эффективное программирование, 3-е изд. : Пер. с

    англ. – СПб. : ООО "Диалектика", 2019. – 464 с.

  5. Хорстманн, Кей С. Java. Библиотека профессионала, том 1. Основы.

    10-е изд.: Пер. с англ. – М .: ООО "И.Д. Вильямс", 2016. - 864 с.

Допоміжна література

  1. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес «Паттерны объектно-ориентированного проектирования» Питер, 2020. – 448 стр.

  2. Бэзинс, Барт. Java для начинающих : объектно-ориентированный подход / Барт Бэзинс, Эйми Бэкил, Зеппе ванден Бруке ; пер. А. Ананич, Е. Зазноба, А. Колышкин, А. Тумаркин. – Санкт-Петербург [и др.] : Питер, 2018. – 688 с.

Навчальний контент

Методика опанування навчальної дисципліни (освітнього компонента)

Очна форма

Лекційні заняття

№ з/п Назва теми лекції та перелік основних питань
(перелік дидактичних засобів, посилання на літературу та завдання на СРС)
1

Тема 1.1. Структура та зміст курсу. РСО.

Тема 2.1. Базові поняття про web-застосунки.

Лекція 1. Вступ. Базові поняття про web-застосунки.

Структура курсу Програмування-2, РСО. Загальні поняття. Мова HTML. HTML-форми. Протокол HTTP. Команди GET та POST. Перший web-застосунок Hello World.

Завдання на СРС. Конфігурування веб-сервера Apache Tomcat та розгортання веб-застосунків на ньому.

2

Тема 2.1. Базові поняття про web-застосунки.

Лекція 2. Базові поняття про web-застосунки.

CGI-застосунки. Сервлети. Основні інтерфейси та класи Servlet API. Структура web-застосунку. Передача параметрів у сервлети.

Завдання на СРС. Життєвий цикл сервлета. Ініціалізація сервлета параметрами з файла web.xml.

3

Тема 2.1. Базові поняття про web-застосунки.

Лекція 3. Базові поняття про web-застосунки.

Оброблення параметрів запитів, заголовків запитів та cookie. Атрібути. Організація сесій.

Завдання на СРС. Коди стану HTTP.

4

Тема 2.2. Технологія JavaServer Pages

Лекція 4. Технологія JavaServer Pages

Життєвий цикл JSP-сторінки. Елементи JSP: скриптові елементи, директиви та дії. Робота з об'єктами JavaBean.

Завдання на СРС. Синхронізація потоків при роботі з об’єктами JavaBean у веб-застосунку.

5

Тема 2.2. Технологія JavaServer Pages

Лекція 5. Бібліотеки EL та JSTL

Expression language (EL). Організація доступу о об'єктів, які зберігаються на рівні сторінки, запиту, сесії, веб-застосунку.

Бібліотека JSTL (JSP Standard Tag Library). Організація розгалужень та циклів.

Завдання на СРС. XSS-атаки (Cross-Site Scripting) та методи захисту від них.

6

Тема 2.3. Архітектура багаторівневого веб-застосунку

Лекція 6. Архітектура багаторівневого веб-застосунку

Архітектура MVC. Шаблон проектування DAO (Data Access Object).

Завдання на СРС. Шаблон проектування Репозиторій.

7

Лекція 7. Модульна контрольна робота

На контрольну роботу виноситься увесь попередній матеріал, що включає основи веб-програмування.

Завдання включають теоретичну та практичну частини.

Завдання для СРС. Повторити матеріал 1-6 лекцій.

8

Тема 3.1. Основи багатопоточного програмування на Java

Лекція 8. Основи багатопоточного програмування на Java

Основні поняття багатопоточного програмування. Клас Thread. Інтерфейс Runnable. Діаграма станів потоку виконання.

Завдання на СРС. Пули потоків виконання.

9

Тема 3.1. Основи багатопоточного програмування на Java

Лекція 9. Основи багатопоточного програмування на Java

Методи класу Thread: yield, sleep, isAlive, join. Пріоритети потоків виконання.

Завдання на СРС. Deprecated-методи класу Thread.

10

Тема 3.2. Управління потоками виконання

Лекція 10. Управління потоками виконання

Стан гонитви. Синхронізація потоків виконання при доступі до спільних ресурсів. Явні та неявні блокування. DeadLock.

Завдання на СРС. Умови виникнення взаємного блокування.

11

Тема 3.2. Управління потоками виконання

Лекція 11. Управління потоками виконання

Методи join(), wait() та notify(). Змінні volatile. Потоки-демони.

Завдання на СРС. Бар'єр пам'яті. Поняття «happens before» та «happens after».

12

Тема 3.2. Управління потоками виконання

Лекція 12. Управління потоками виконання

Асинхронне виконання розрахунків. Інтерфейси Callable та Future.

Завдання на СРС. ForkJoinPool.

13

Лекція 13. Модульна контрольна робота

На контрольну роботу виноситься увесь попередній матеріал по основам веб-програмування.

Завдання включають теоретичну та практичну частини.

Завдання для СРС. Повторити матеріал 8-12 лекцій.

14

Тема 4.1. Вкладені класи

Лекція 12. Вкладені класи

Статичні вкладені класи, Внутрішні класи, Локальні класи, Анонімні класи.

Захват локальних змінних.

Завдання на СРС. Модифікатор final та поняття effectively final.

15

Тема 4.2. Лямбда-вирази

Лекція 15. Інтерфейси у Java 8

Статичні та дефолтні методи в інтерфейсах. Проблема ромба.

Завдання на СРС. Статичні та дефолтні методи інтерфейсу Comparator.

16

Тема 4.2. Лямбда-вирази

Лекція 16. Лямбда-вирази

Функціональний інтерфейс. Синтаксис лямбда-виразу. Переваги та недоліки лямбда-виразів у порівнянні з анонімними класами. Захват локальних змінних.

Завдання на СРС. Недоліки перевантаження методів при використанні лямбда-виразів.

17

Тема 4.2. Лямбда-вирази

Лекція 17. Функціональні інтерфейси пакета java.util.function

Стандартні функціональні інтерфейси пакета java.util.function.

Завдання на СРС. Функціональні інтерфейси Comparator, Runnable, Callable.

18

Тема 4.2. Лямбда-вирази

Лекція 18. Посилання на методи

Посилання на статичний метод класу. Посилання на нестатичний метод об’єкту. Посилання на нестатичний метод класу. Посилання на конструктор.

Завдання на СРС. Переваги та недоліки використання посилань на методи у порівнянні з лямбда-виразами.

19

Тема 4.3. Stream API

Лекція 19. Stream API

Призначення Stream API. Відмінності потоків від колекцій. Класифікація потоків. Структура потоку: джерело, проміжні операції, термінальна операція. Створення стрімів.

Завдання на СРС. Інтерфейс Iterable.

20

Тема 4.3. Stream API

Лекція 20. Проміжні операції потоків

Проміжні операції потоків: filter, map, flatMap, sorted, distinct, limit, skip, peek, sequential, parallel, unordered.

Завдання на СРС Послідовні та паралельні потоки.

21

Тема 4.3. Stream API

Лекція 21. Термінальні операції потоків

Термінальні операції потоків: forEach, forEachOrdered, min, max, count, average, sum (для числових), allMatch, anyMatch, findAny, findFirst, reduce (immutable reduction), collect (mutable reduction).

Завдання на СРС Короткозамкнуті потоки потоки.

22

Тема 4.3. Stream API

Лекція 22. Коллектори

Збирання даних зі стрімів. Інтерфейс Collector. Клас Collectors.

Збирання статистики. Збирання об’єктів у колекції.

Завдання на СРС. Методи joining(), joining(delimiter), joining(delimiter, prefix, suffix).

23

Тема 4.3. Stream API

Лекція 23. Коллектори

Збирання даних зі стрімів. Інтерфейс Collector. Клас Collectors.

Збирання статистики. Збирання об’єктів у колекції.

Завдання на СРС. Методи toCollection(factory), toSet(), toList().

24

Тема 4.3. Stream API

Лекція 24. Коллектори

Збирання даних зі стрімів: Grouping, Reducing, Mapping.

Завдання на СРС. Переваги та недоліки методів groupingBy(c) та groupingByConcurrent(c).

25

Тема 4.4. Клас Optional

Лекція 25. Клас Optional

Призначення типу Optional. Створення об'єктів типу Optional. Основні операції з об'єктами типу Optional.

Завдання на СРС. Метод filter класу Optional.

26

Тема 4.5. Операції з датою та часом

Лекція 26. Операції з датою та часом

Недоліки застарілого API для роботи з датою та часом (клас Date, клас Calendar). Коротка характеристика та основні принципи роботи з JavaTime API

Завдання на СРС. Часові пояси та часові зони.

27

Тема 4.5. Операції з датою та часом

Лекція 27. Операції з датою та часом

Основні класи та інтерфейси JavaTime API. Основні можливості по роботі з датами, часом, проміжками часу та часовими зонами.

Завдання на СРС. Взаємодія нового JavaTime API зі старими класами Date та Calendar.

Лабораторні заняття

Назва лабораторної роботи Кількість ауд. годин
1 Веб-застосунок на базі Java-сервлету. 2
2 Оброблення параметрів запиту у сервлетах. 2
3 Створення веб-сторінок на базі технології JSP. 2
4 Створення JSP-сторінок з використанням бібліотек EL та JSTL. 4
5 Використання асоціативних масивів для оброблення текстових даних. 2
6 Обчислення в паралельних потоках виконання. 4
7 Синхронізація потоків виконання. 4
8 Вкладені та внутрішні класи. 2
9 Лямбда-вирази 2
10 Функціональні інтерфейси 4
11 Посилання на методи 4
12 Stream API 4

Заочна форма

Лекційні заняття

№ з/п Назва теми лекції та перелік основних питань
(перелік дидактичних засобів, посилання на літературу та завдання на СРС)
1

Тема 1.1. Структура та зміст курсу. РСО.

Тема 2.1. Базові поняття про web-застосунки.

Лекція 1. Вступ. Базові поняття про web-застосунки.

Структура курсу Програмування-2, РСО. Загальні поняття. Мова HTML. HTML-форми. Протокол HTTP. Команди GET та POST. Перший web-застосунок Hello World.

Завдання на СРС. Конфігурування веб-сервера Apache Tomcat та розгортання веб-застосунків на ньому.

2

Тема 2.1. Базові поняття про web-застосунки.

Лекція 2. Базові поняття про web-застосунки.

CGI-застосунки. Сервлети. Основні інтерфейси та класи Servlet API. Структура web-застосунку. Передача параметрів у сервлети.

Завдання на СРС. Життєвий цикл сервлета. Ініціалізація сервлета параметрами з файла web.xml.

3

Тема 2.1. Базові поняття про web-застосунки.

Лекція 3. Базові поняття про web-застосунки.

Оброблення параметрів запитів, заголовків запитів та cookie. Атрібути. Організація сесій.

Завдання на СРС. Коди стану HTTP.

Лабораторні заняття

Назва лабораторної роботи Кількість ауд. годин
1 Веб-застосунок на базі Java-сервлету. 2
2 Оброблення параметрів запиту у сервлетах. 2
3 Створення веб-сторінок на базі технології JSP. 2

Самостійна робота студента/аспіранта

Очна форма

№ з/п

Назва теми, що виноситься на самостійне опрацювання Кількість годин СРС
1 Конфігурування веб-сервера Apache Tomcat та розгортання веб-застосунків на ньому. 2
2 Життєвий цикл сервлета. Ініціалізація сервлета параметрами з файла web.xml. 2
3 Коди стану HTTP. 2
4 Синхронізація потоків при роботі з об’єктами JavaBean у веб-застосунку. 2
5 XSS-атаки (Cross-Site Scripting) та методи захисту від них. 2
6 Шаблон проектування Репозиторій. 2
7 Повторити матеріал 1-6 лекцій. 2
8 Пули потоків виконання. 2
9 Deprecated-методи класу Thread. 2
10 Умови виникнення взаємного блокування. 2
11 Бар'єр пам'яті. Поняття «happens before» та «happens after». 2
12 ForkJoinPool. 2
13 Повторити матеріал 8-12 лекцій. 2
14 Модифікатор final та поняття effectively final. 2
15 Статичні та дефолтні методи інтерфейсу Comparator. 2
16 Недоліки перевантаження методів при використанні лямбда-виразів. 2
17 Функціональні інтерфейси Comparator, Runnable, Callable. 2
18 Переваги та недоліки використання посилань на методи у порівнянні з лямбда-виразами. 2
19 Інтерфейс Iterable. 2
20 Послідовні та паралельні потоки. 2
21 Короткозамкнуті потоки потоки. 2
22 Методи joining(), joining(delimiter), joining(delimiter, prefix, suffix). 2
23 Методи toCollection(factory), toSet(), toList(). 2
24 Переваги та недоліки методів groupingBy(c) та groupingByConcurrent(c). 2
25 Метод filter класу Optional. 2
26 Часові пояси та часові зони. 2
27 Взаємодія нового JavaTime API зі старими класами Date та Calendar. 2
28 Підготовка до екзамену 6

Заочна форма

№ з/п

Назва теми, що виноситься на самостійне опрацювання Кількість годин СРС
1 Конфігурування веб-сервера Apache Tomcat та розгортання веб-застосунків на ньому. 2
2 Життєвий цикл сервлета. Ініціалізація сервлета параметрами з файла web.xml. 2
3 Коди стану HTTP. 2
4

Життєвий цикл JSP-сторінки. Елементи JSP: скриптові елементи, директиви та дії. Робота з об'єктами JavaBean. Синхронізація потоків при роботі з об’єктами JavaBean у веб-застосунку.

4
5

Expression language (EL). Організація доступу о об'єктів, які зберігаються на рівні сторінки, запиту, сесії, веб-застосунку. Бібліотека JSTL (JSP Standard Tag Library). Організація розгалужень та циклів. XSS-атаки (Cross-Site Scripting) та методи захисту від них.

4
6

Архітектура MVC. Шаблон проектування DAO (Data Access Object

Шаблон проектування Репозиторій.

4
7

Модульна контрольна робота

На контрольну роботу виноситься увесь попередній матеріал, що включає основи веб-програмування.

Завдання включають теоретичну та практичну частини.

4
8

Основні поняття багатопоточного програмування. Клас Thread. Інтерфейс Runnable. Діаграма станів потоку виконання. Пули потоків виконання.

4
9

Методи класу Thread: yield, sleep, isAlive, join. Пріоритети потоків виконання. Deprecated-методи класу Thread.

4
10

Стан гонитви. Синхронізація потоків виконання при доступі до спільних ресурсів. Явні та неявні блокування. DeadLock. Умови виникнення взаємного блокування.

4
11

Методи join(), wait() та notify(). Змінні volatile. Потоки-демони. Бар'єр пам'яті. Поняття «happens before» та «happens after».

4
12

Асинхронне виконання розрахунків. Інтерфейси Callable та Future.

ForkJoinPool.

4
13

Модульна контрольна робота

На контрольну роботу виноситься увесь попередній матеріал по основам веб-програмування.

Завдання включають теоретичну та практичну частини.

4
14

Статичні вкладені класи, Внутрішні класи, Локальні класи, Анонімні класи.

Захват локальних змінних. Модифікатор final та поняття effectively final.

4
15

Статичні та дефолтні методи в інтерфейсах. Проблема ромба.

Статичні та дефолтні методи інтерфейсу Comparator.

4
16

Функціональний інтерфейс. Синтаксис лямбда-виразу. Переваги та недоліки лямбда-виразів у порівнянні з анонімними класами. Захват локальних змінних. Недоліки перевантаження методів при використанні лямбда-виразів.

4
17

Стандартні функціональні інтерфейси пакета java.util.function. Функціональні інтерфейси Comparator, Runnable, Callable.

4
18

Посилання на статичний метод класу. Посилання на нестатичний метод об’єкту. Посилання на нестатичний метод класу. Посилання на конструктор. Переваги та недоліки використання посилань на методи у порівнянні з лямбда-виразами.

4
19

Призначення Stream API. Відмінності потоків від колекцій. Класифікація потоків. Структура потоку: джерело, проміжні операції, термінальна операція. Створення стрімів. Інтерфейс Iterable.

4
20

Проміжні операції потоків: filter, map, flatMap, sorted, distinct, limit, skip, peek, sequential, parallel, unordered. Послідовні та паралельні потоки.

4
21

Термінальні операції потоків: forEach, forEachOrdered, min, max, count, average, sum (для числових), allMatch, anyMatch, findAny, findFirst, reduce (immutable reduction), collect (mutable reduction). Короткозамкнуті потоки потоки.

4
22

Збирання даних зі стрімів. Інтерфейс Collector. Клас Collectors.

Збирання статистики. Збирання об’єктів у колекції. Методи joining(), joining(delimiter), joining(delimiter, prefix, suffix).

4
23

Збирання даних зі стрімів. Інтерфейс Collector. Клас Collectors.

Збирання статистики. Збирання об’єктів у колекції. Методи toCollection(factory), toSet(), toList().

4
24

Збирання даних зі стрімів: Grouping, Reducing, Mapping. Переваги та недоліки методів groupingBy(c) та groupingByConcurrent(c).

4
25

Призначення типу Optional. Створення об'єктів типу Optional. Основні операції з об'єктами типу Optional. Метод filter класу Optional.

4
26

Недоліки застарілого API для роботи з датою та часом (клас Date, клас Calendar). Коротка характеристика та основні принципи роботи з JavaTime API. Часові пояси та часові зони.

4
27

Основні класи та інтерфейси JavaTime API. Основні можливості по роботі з датами, часом, проміжками часу та часовими зонами. Взаємодія нового JavaTime API зі старими класами Date та Calendar.

4
28 Створення JSP-сторінок з використанням бібліотек EL та JSTL. 4
29 Використання асоціативних масивів для оброблення текстових даних. 2
30 Обчислення в паралельних потоках виконання. 4
31 Синхронізація потоків виконання. 4
32 Вкладені та внутрішні класи. 2
33 Лямбда-вирази 2
34 Функціональні інтерфейси 4
35 Посилання на методи 4
36 Stream API 4
37 Підготовка до екзамену 6

Політика та контроль

Політика навчальної дисципліни (освітнього компонента)

Система вимог, які ставляться перед студентом:

  • відвідування лекційних та лабораторних занять є обов’язковою складовою вивчення матеріалу;

  • на лекції викладач користується власним презентаційним матеріалом; демонструє практичну частину на комп’ютері з встановленим інтегрованим середовищем розробки; використовує гугл-диск та месенджер Telegram для викладання матеріалу поточної лекції, додаткових ресурсів, лабораторних робіт та інше; викладач відкриває доступ до певної директорії гугл-диска для скидання електронних лабораторних звітів та відповідей на МКР;

  • на лекції заборонено відволікати викладача від викладання матеріалу, усі питання, уточнення та ін. студенти задають в кінці лекції у відведений для цього час;

  • лабораторні роботи захищаються у два етапи – перший етап: студенти виконують завдання на допуск до захисту лабораторної роботи; другий етап – захист лабораторної роботи. Бали за лабораторну роботу враховуються лише за наявності електронного звіту;

  • модульні контрольні роботи пишуться на лекційних заняттях без застосування допоміжних засобів (мобільні телефони, планшети та ін.);

  • заохочувальні бали виставляються за: активну участь на лекціях; участь у факультетських та інститутських олімпіадах з навчальних дисциплін, участь у конкурсах робіт, підготовка оглядів наукових праць; презентацій по одній із тем СРС дисципліни тощо. Кількість заохочуваних балів не більше 10;

  • штрафні бали виставляються за: невчасну здачу лабораторної роботи. Кількість штрафних балів не більше 10.

Види контролю та рейтингова система оцінювання результатів навчання (РСО) (очна форма)

Рейтинг студента з дисципліни складається з балів, що він отримує за:

  1. виконання та захист 12 лабораторних робіт;

  2. виконання 2 модульних контрольних робіт (МКР);

  3. заохочувальні та штрафні бали.

Система рейтингових балів та критерії оцінювання

Лабораторні роботи:

«відмінно», повна відповідь на питання під час захисту (не менш ніж 90% потрібної інформації) та оформлений належним чином електронний протокол до лабораторної роботи – 2,5 балів;

«добре», достатньо повна відповідь на питання під час захисту (не менш ніж 75% потрібної інформації) та оформлений належним чином електронний протокол до лабораторної роботи – 2 бали;

«задовільно», неповна відповідь на питання під час захисту (не менш ніж 60% потрібної інформації), незначні помилки та оформлений належним чином електронний протокол до лабораторної роботи – 1,5 бал;

«незадовільно», незадовільна відповідь та/або не оформлений належним чином електронний протокол до лабораторної роботи – 0 балів.

За кожне заняття запізнення з поданням лабораторної роботи до захисту від встановленого терміну оцінка знижується на 0,5 бал.

Модульні контрольні роботи:

«відмінно», повна відповідь (не менш ніж 90% потрібної інформації) – 10 балів;

«добре», достатньо повна відповідь (не менш ніж 75% потрібної інформації), або повна відповідь з незначними помилками – 8,9 балів;

«задовільно», неповна відповідь (але не менш ніж 60% потрібної інформації) та незначні помилки – 6,7 бали;

«незадовільно», незадовільна відповідь (неправильний розв’язок задачі), потребує обов’язкового повторного написання в кінці семестру – 0 балів.

Заохочувальні бали

– за виконання творчих робіт з кредитного модуля (наприклад, участь у факультетських та інститутських олімпіадах з навчальних дисциплін, участь у конкурсах робіт, підготовка оглядів наукових праць тощо); за активну роботу на лекції (питання, доповнення, зауваження за темою лекції, коли лектор пропонує студентам задати свої питання) 1-2 бали, але в сумі не більше 10;

– презентації по СРС – від 1 до 5 балів.

Міжсесійна атестація

За результатами навчальної роботи за перші 7 тижнів максимально можлива кількість балів – 25 бали (6 лабораторних робіт, МКР-1). На першій атестації (8-й тиждень) студент отримує «зараховано», якщо його поточний рейтинг не менший ніж 15 балів.

За результатами 13 тижнів навчання максимально можлива кількість балів – 42,5 балів (9 лабораторних робіт, МКР-1, МКР-2). На другій атестації (14-й тиждень) студент отримує «зараховано», якщо його поточний рейтинг не менший ніж 25,5 балів.

Максимальна сума вагових балів контрольних заходів протягом семестру складає:

RD = 12*rлаб+2*rмкр+ (rз - rш)= 12*2,5+2*10+ (rз - rш)=50 + (rз - rш),

де rлаб – бал за лабораторну роботу (0 … 2,5);

rмкр – бал за написання МКР (0 … 10);

rз – заохочувальні бали за активну участь на лекціях, презентації, участь в олімпіадах, конкурсі роботи, наукові роботи за тематикою дисципліни (0…10);

rзш – штрафні бали.

Екзамен:

Умовою допуску до екзамену є зарахування всіх лабораторних робіт, написання обох модульних контрольних робіт та стартовий рейтинг не менше 30 балів.

На екзамені студенти виконують письмову контрольну роботу. Кожен білет містить два теоретичних запитання і одне практичне завдання. Перелік теоретичних питань наведений у додатку 1. Кожне теоретичне питання оцінюється у 20 балів. Практичне завдання оцінюється у 10 балів.

Система оцінювання питань:

«відмінно», повна відповідь, не менше 90% потрібної інформації, що виконана згідно з вимогами до рівня «умінь», (повне, безпомилкове розв’язування завдання) – 9-10 балів;

«добре», достатньо повна відповідь, не менше 75% потрібної інформації, що виконана згідно з вимогами до рівня «умінь або є незначні неточності (повне розв’язування завдання з незначними неточностями) – 7-8 балів;

«задовільно», неповна відповідь, не менше 60% потрібної інформації, що виконана згідно з вимогами до «стереотипного» рівня та деякі помилки (завдання виконане з певними недоліками) – 5-6 бали;

«незадовільно», відповідь не відповідає умовам до «задовільно» – 0-4 балів.

Сума стартових балів та балів за екзаменаційну контрольну роботу переводиться до екзаменаційної оцінки згідно з таблицею:

Таблиця 1. Переведення рейтингових балів до оцінок за університетською шкалою

Кількість балів Оцінка
100-95 Відмінно
94-85 Дуже добре
84-75 Добре
74-65 Задовільно
64-60 Достатньо
Менше 60 Незадовільно

Є не зараховані лабораторні роботи або

не зарахована модульна контрольна робота

Не допущено

Додаткова інформація з дисципліни (освітнього компонента)

  • передбачена можливість закривати частину лабораторного та лекційного матеріалу шляхом здобування сертифікатам по online курсам (наприклад, COURSERA) відповідних розділів та тем дисципліни;

  • перелік теоретичних питань, які виносяться на семестровий контроль наведено в Додатку 1;

  • на початку семестру викладач аналізує існуючі курси по тематиці дисципліни та пропонує пройти відповідні безкоштовні курси студентам. Після отриманням студентом сертифікату проходження дистанційних чи онлайн курсів за відповідною тематикою, викладач закриває відповідну частину курсу (лабораторні чи лекції) за попередньою домовленістю з групою.

Робочу програму навчальної дисципліни (Силабус):

Складено доцент кафедри АУТС, к.т.н., Букасов Максим Михайлович

Ухвалено кафедрою АУТС (протокол № 1 від 27.08.2020 р.)

Погоджено Методичною комісією факультету[1] (протокол № 1 від 02.09.2020 р.)

Додаток 1

Перелік теоретичних питань на екзамен

  1. Multithreading: основні поняття (Process, Thread, Instance, Scheduler). Кооперативна та витискальна багатозадачність.

  2. Інтерфейс Runnable та клас Thread. Діаграма станів об’єктів класу Thread.

  3. Стан гонитви. Проблеми, які можуть бути ним спричинені, та способи їх уникнення.

  4. Критична секція. Явне та неявне блокування – переваги та недоліки.

  5. Робота з колекціями у паралельних тредах.

  6. Організація взаємодії між тредами: join, wait-notify.

  7. Треди-демони. Volatile-змінні.

  8. Web-застосунки: основні поняття (HTML, form, HTTP, GET, POST). Статичні та динамічні сторінки. Переваги та недоліки CGI-застосунків у порівнянні з Java web-застосунками.

  9. Servlet API: основні класи та інтерфейси (Servlet, GenericServlet, HttpServlet, Servlet Request, Servlet Response, HttpServletRequest, HttpServletResponse, HttpSession, Cookie).

  10. Структура web-застосунку (структура папок проекту, файл web.xml).

  11. JSP: призначення, переваги/недоліки у порівнянні з сервлетами. Життєвий цикл JSP-сторінки.

  12. JSP-елементи: scripting-, directive- та action- елементи.

  13. JavaBean. Використання JavaBean в сервлетах та JSP. Області видимості.

  14. Expression Language: призначення, переваги/недоліки, основні конструкції.

  15. JSTL: призначення, переваги/недоліки, основні конструкції.

  16. Патерн MVC.

  17. Вкладені класи. Призначення вкладених класів. Різновиди вкладених класів (статичні, внутрішні, локальні, анонімні). Захват локальних змінних. Final та effectively final змінні.

  18. Інтерфейси у Java 8. Статичні методи, методи за замовченням. Проблема ромба.

  19. Лямбда-вирази. Синтаксис. Переваги та недоліки у порівнянні з анонімними класами.

  20. Функціональний інтерфейс. Стандартні функціональні інтерфейси з пакету java.util.function.

  21. Інтерфейс Function<T,R>. Його основні методи:
    R apply(T t),
    default <V> Function<T,V> andThen(Function<? super R,? extends V> after),
    default <V> Function<V,R> compose(Function<? super V,? extends T> before),
    static <T> Function<T,T> identity().

  22. Посилання на методи. Різновиди.

  23. Stream API. Призначення стрімів, властивості, відмінності від колекцій.

  24. Проміжні та термінальні операції зі стрімами. Pipeline. Типи операцій (eager/lazy, stateless/stateful).

  25. Послідовні та паралельні стріми. Впорядковані та невпорядковані стріми.

  26. Операції зі стрімами: filter, map, flatMap.

  27. Операції зі стрімами: sorted, distinct, limit, skip, peek, forEach, forEachOrdered.

  28. Операції зі стрімами: min, max, count, average, sum, allMatch, anyMatch, findAny, findFirst.

  29. Операції зі стрімами:
    Optional<T> reduce(BinaryOperator<T> accumulator),
    T reduce(T identity, BinaryOperator<T> accumulator),
    <U> U reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner).

  30. Операції зі стрімами: <R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner).

  31. Optional: призначення, переваги використання, основні операції.

  32. Пакет java.time. Основні інтерфейси та класи. Переваги у порівнянні з java.util.Date та java.util.Calendar.

[1] Методичною радою університету – для загальноуніверситетських дисциплін.