МОВА ПРОГРАМУВАННЯ JAVA - Робоча програма навчальної дисципліни (Силабус)
Реквізити навчальної дисципліни
Рівень вищої освіти | Перший (бакалаврський) |
Галузь знань | 12 Інформаційні технології |
Спеціальність | 126 Інформаційні системи та технології |
Освітня програма | Інтегровані інформаційні системи, Інформаційні управляючі системи та технології, Інформаційне забезпечення робототехнічних систем |
Статус дисципліни | Вибіркова |
Форма навчання | очна(денна)/дистанційна |
Рік підготовки, семестр | 3 курс, осінній семестр |
Обсяг дисципліни | 120 годин (4 кредити) |
Семестровий контроль/ контрольні заходи | Залік |
Розклад занять | http://rozklad.kpi.ua |
Мова викладання | Українська |
Інформація про керівника курсу / викладачів | Лектор: Старший викладач кафедри ІСТ., PhD, Орленко С.П. <ahref="mailto:orlenko_sergey@tk.kpi.ua">orlenko_sergey@tk.kpi.ua |
Розміщення курсу | В Телеграм групі дисципліни та в Campus |
Програма навчальної дисципліни
Опис навчальної дисципліни, її мета, предмет вивчання та результати навчання
1.1. Даний курс орієнтований на вивчення Java людьми як з мінімальним рівнем знання програмування так і людьми, які хочуть покращити свої знання з певних нюансів мови. Метою навчальної дисципліни є оволодіння студентами засобів програмування, розробки та супроводу прикладних додатків з використанням мови програмування Java для виконання наступних завдань:
практичного використання можливостей та засобів мови програмування
Java при вирішенні прикладних задач;
формування навичок роботи з інструментальними засобами, які
використовуються при програмуванні мовою Java;
оволодіння основами програмування мовою Java.
1.2. Основні завдання навчальної дисципліни полягають у отриманні студентами наступних
знань:
базові засоби мови програмування Java;
основні інструментальні програмні засоби мови Java, що
використовуються для розв’язання прикладних задач;
умінь:
проектувати та розробляти пакетні додатки використовуючи засоби мови
Java для вирішення різноманітних задач;
користуватися технічною документацією;
проводити тестування додатків за допомогою прикладних бібліотек;
досвіду:
використання інструментальних програмних засобів мови Java;
проводити розробку з використанням систем керування версіями;
створення додатків за допомогою мови Java.
То ж за умовами програми навчальної дисципліни учні по завершенню кредитного модуля повинні опанувати наступні результати навчання:
КОМПЕТЕНЦІЇ:
КС 1 Здатність аналізувати об’єкт проектування або функціонування та його предметну область
КС 4 Здатність проектувати, розробляти та використовувати засоби реалізації інформаційних систем, технологій та інфокомунікацій (методичні, інформаційні, алгоритмічні, технічні, програмні та інші)
КС 6 Здатність використовувати сучасні інформаційні системи та технології (виробничі, підтримки прийняття рішень, інтелектуального аналізу даних та інші), методики захисту інформації та кібербезпеки під час виконання функціональних завдань та обов’язків
КС 10 Здатність вибору, проектування, розгортання, інтегрування, управління, адміністрування та супроводжування інформаційних систем, технологій, інфокомунікацій, сервісів та інфраструктури організацій
ПРОГРАМНІ РЕЗУЛЬТАТИ НАВЧАННЯ:
ПР 3 Використовувати базові знання інформатики й сучасних інформаційних систем та технологій, навички програмування, технології безпечної роботи в комп'ютерних мережах, методи створення баз даних та інтернет-ресурсів, технології розроблення алгоритмів і комп’ютерних програм мовами високого рівня із застосуванням об’єктно-орієнтованого програмування для розв’язання задач проектування і використання інформаційних систем та технологій
ПР 4 Проводити системний аналіз об’єктів проектування та обґрунтовувати вибір структури, алгоритмів та способів передачі інформації в інформаційних системах та технологіях
ПР 5 Аргументувати вибір програмних та технічних засобів для створення інформаційних систем та технологій на основі аналізу їх властивостей, призначення і технічних характеристик з урахуванням вимог до системи і експлуатаційних умов; мати навички налагодження та тестування програмних і технічних засобів інформаційних систем та технологій
ПР 6 Демонструвати знання сучасного рівня технологій інформаційних систем, практичні навички програмування та використання прикладних і спеціалізованих комп’ютерних систем та середовищ з метою їх запровадження у професійній діяльності
ПР 7 Обґрунтовувати вибір технічної структури та розробляти відповідне програмне забезпечення, що входить до складу інформаційних систем та технологій
ПР 14 Знати сучасні мови програмування та технології створення програмного забезпечення інформаційних систем та технологій
Пререквізити та постреквізити дисципліни (місце в структурно-логічній схемі навчання за відповідною освітньою програмою).
Для освоєння курсу необхідні базові знання з вищої та дискретної математики, процедурного та об’єктно-орієнтованого програмування, теорії алгоритмів.
Дисципліна може слугувати базою для вивчення наступних дисциплін: «Технології розроблення програмного забезпечення», «Управління проектами», «Проектування інформаційних систем».
Зміст навчальної дисципліни
Розділ 1. Особливості мови програмування Java
1.1. Історія розвитку та застосування
1.2. Структура, функції та робота JVM
Розділ 2. Лексична структура мови
2.1. Основні оператори
2.2. Типи
2.3. Масиви
2.4. Конструювання класів
2.5. Обробка строк
2.6. Регулярні вирази
2.7. Вирішення перевантажень
Розділ 3. ООП в Java
3.1. Принципи ООП
3.2. Абстрактні класи
3.3. Інтерфейси
3.4.Вкладені, локальні та анонімні класи.
3.5. Модифікатори доступу
3.6. Типи відносин між класами і інтерфейсами
3.7. Архітектурний шаблон MVC
3.8. Створення і використання пакетів
Розділ 4. Виключні ситуації та узагальнене програмування
4.1. Виключні ситуації
4.2. Узагальнене програмування на мові Java (Generics).
Розділ 5. Архітектура та принципи проектування ПЗ
5.1. Архітектура ПЗ
5.2. Принципи та шаблони проектування ПЗ
Розділ 6. Колекції (Java Collections Framework)
6.1. Використання колекцій
6.2. Іерархія колекцій
6.3. Реалізації колекцій
Розділ 7. Потоки вводу/виводу
7.1 Організація потоків
7.2. Серіалізація
7.3. Робота з файлами
7.4. Робота з успадкуванням
Розділ 8. Лямбда вирази в Java
8.1. Поняття лямбда виразу
8.2. Функціональні інтерфейси
8.3. Області видимості
Розділ 9. Потоки виконання.
9.1. Потоки та JVM
9.2. Багато поточність
9.3. Взаємодія потоків.
9.4. Синхронізація
9.5. Організація конкурентного доступу
Розділ 10. Рефлексія. Інтерналізація та логування.
10.1. Рефлексія
10.2. Інтерналізація
10.3. Логування
Розділ 11. СКВ та модульне тестування
11.1. Системи керування версій
11.2. Модульне тестування
Розділ 12. Бази даних
12.1. SQL бази даних
12.2. NoSQL бази даних
12.3. Робота з базами даних у Java
Навчальні матеріали та ресурси
Основна література:
К. Арнольд, Дж. Гослинг, Д. Холмс. Язык программирования Java. 3-е изд.-М: «Вильямс», 2010.-624 с.
К.С. Хорстманн, Г.Корнелл. Библиотека профессионала. Java . Том 1. Основы, 7-е изд. -М: «Вильямс», 2008.-896 с. К.С. Хорстманн, Г.Корнелл. Библиотека профессионала. Java 2. Том 2. Тонкости программирования, 7-е изд. -М: «Вильямс», 2007. – 1168 с.
Фишер Т. Java Карманный справочник . М. ООО «Вильмс», 2008, 224с.
Карабин П. Язык программирования Java. Создание интерактивных приложений для Internet, М. «Познавательна книга», 2001. – 224с.
С.А. Кравчук, Шонин В.А. Основы программирования на языке Java. –
К.: Норіта-плюс, 2007. – 280 с.
Додаткова література:
П. Ноутон, Г Шилдт Java. – СПб.: БХВ-Петербург, 2007. – 1072с.
Б. Эккель. Философия Java. - СПб: Питер, 2006. – 880 с.
Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1981. – 368с.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to the algorithms. – The MIT Press, 2001. – 1180p.
Библиотека профессионала. Java 2. Том 1. – М: Издательский дом «Вильямс», 2003. – 848 с.
Библиотека профессионала. Java 2. Том 2. – М: Издательский дом «Вильямс», 2002. – 1120 с.
Навчальний контент
Методика опанування навчальної дисципліни (освітнього компонента)
Назви розділів і тем | Кількість годин | |||
---|---|---|---|---|
Всього | у тому числі | |||
Лекції | Лабораторні | СРС | ||
1 | 2 | 3 | 5 | 6 |
Розділ 1. Особливості мови програмування Java | 2 | 4 | ||
1.1. Історія розвитку та застосування | 1 | |||
1.2. Структура, функції та робота JVM | 1 | |||
Розділ 2. Лексична структура мови | 4 | 2 | 4 | |
2.1. Основні оператори | 0,5 | |||
2.2. Типи | 0,5 | |||
2.3. Масиви | 0,5 | 1 | ||
2.4. Конструювання класів | 0,5 | 1 | ||
2.5. Обробка строк | 0,5 | |||
2.6. Регулярні вирази | 0,5 | |||
2.7. Вирішення перевантажень | 1 | |||
Розділ 3. ООП в Java | 6 | 2 | 12 | |
3.1. Принципи ООП | 1,5 | |||
3.2. Абстрактні класи | 0,5 | |||
3.3. Інтерфейси | 0,5 | |||
3.4. Вкладені, локальні та анонімні класи. | 1 | |||
3.5. Модифікатори доступу | 0,5 | |||
3.6. Типи відносин між класами і інтерфейсами | 0,5 | |||
3.7. Архітектурний шаблон MVC | 1 | 2 | ||
3.8. Створення і використання пакетів | 0,5 | |||
Розділ 4. Виключні ситуації та узагальнене програмування | 2 | 2 | 6 | |
4.1. Виключні ситуації | 1 | 1 | ||
4.2. Узагальнене програмування на мові Java (Generics). | 1 | 1 | ||
Розділ 5. Архітектура та принципи проектування ПЗ | 2 | 6 | ||
5.1. Архітектура ПЗ | 1 | |||
5.2. Принципи та шаблони проектування ПЗ | 1 | |||
Розділ 6. Колекції (Java Collections Framework) | 4 | 2 | 4 | |
6.1. Використання колекцій | 0,5 | |||
6.2. Іерархія колекцій | 0,5 | |||
6.3. Реалізації колекцій | 3 | 2 | ||
Розділ 7. Потоки вводу/виводу | 4 | 2 | 6 | |
7.1 Організація потоків | 1 | |||
7.2. Серіалізація | 1 | 1 | ||
7.3. Робота з файлами | 1 | 1 | ||
7.4. Робота з успадкуванням | 1 | |||
Розділ 8. Лямбда вирази в Java | 2 | 2 | 4 | |
8.1. Поняття лямбда виразу | 1 | 2 | 2 | |
8.2. Функціональні інтерфейси | 0,5 | |||
8.3. Області видимості | 0,5 | |||
Розділ 9. Потоки виконання. | 4 | 4 | 12 | |
9.1. Потоки та JVM | 1 | |||
9.2. Багато поточність | 0,5 | 2 | ||
9.3. Взаємодія потоків. | 0,5 | |||
9.4. Синхронізація | 1 | |||
9.5. Організація конкурентного доступу | 1 | 2 | ||
Розділ 10. Рефлексія. Інтерналізація та логування. | 2 | 2 | 4 | |
10.1. Рефлексія | 1 | 0,5 | ||
10.2. Інтерналізація | 0,5 | 0,5 | ||
10.3. Логування | 0,5 | 1 | ||
Розділ 11. СКВ та модульне тестування | 2 | 6 | ||
11.1. Системи керування версій | 1 | |||
11.2. Модульне тестування | 1 | |||
Розділ 12. Бази даних | 2 | 4 | ||
12.1. SQL бази даних | 0,5 | |||
12.2. NoSQL бази даних | 0,5 | |||
12.3. Робота з базами даних у Java | 1 | |||
Всього годин | 120 | 36 | 18 | 66 |
Самостійна робота студента
Основні завдання циклу практичних занять (комп’ютерних практикумів): засвоєння студентами знань з основних тем дисципліни та їх закріплення; формування у студентів практичних навичок і вмінь.
№ з/п | Назва теми заняття |
---|---|
1 | Лабораторна робота 1. Робота з циклами, масивами та рядками в Java. |
2 | Лабораторна робота 2. Робота з класами. |
3 | Лабораторна робота 3. Використання ООП та шаблону MVC. |
4 | Лабораторна робота 4. Використання узагальненого програмування. |
5 | Лабораторна робота 5. Потоки вводу/виводу та серіалізація. |
6 | Лабораторна робота 6. Java Collections Framework |
7 | Лабораторна робота 7. Лямбда вирази в Java. |
8 | Лабораторна робота 8. Multithreading. |
9 | Лабораторна робота 9. Організація конкурентного доступу. |
10 | Лабораторна робота 10. Reflection, Logging, Internalization. |
Політика та контроль
Політика навчальної дисципліни (освітнього компонента)
Організація освітнього процесу і оцінювання результатів навчання регламентуються Положенням про організацію освітнього процесу в Національному технічному університеті України «Київський політехнічний інститут імені Ігоря Сікорського». Згідно якого відвідування лекцій та комп’ютерних практикумів є обов’язковим (за винятком випадків, коли існує поважна причина, наприклад, хвороба чи дозвіл працівників деканату).
Політика виставлення оцінок: кожна оцінка виставляється відповідно до розроблених викладачем та заздалегідь оголошених студентам РСО; у разі невиконання студентом усіх передбачених робочим навчальним планом завдань (комп’ютерних практикумів) до заліку він не допускається. Якщо студент не може бути присутніми на заняттях, він повинен відпрацювати самостійно комп’ютерні практикуми та здійснити захист на занятті або відповідно до графіку на консультації у викладача.
Політика академічної поведінки та доброчесності: конфліктні ситуації мають відкрито обговорюватись з викладачем, необхідно бути взаємно толерантним, поважати думку іншого. Будь-які форми нечесної роботи неприпустимі.
Всі практичні завдання студент має виконати самостійно із використанням відповідних методичних вказівок, рекомендованої літератури й отриманих знань та навичок.
Недопустимі підказки у ході захисту комп’ютерних практикумів, на заліку. Норми академічної етики: дисциплінованість; дотримання субординації; чесність; відповідальність; робота в аудиторії з відключеними мобільними телефонами. У ході захисту комп’ютерних практикумів студент може користуватися власними ноутбуками. Проте під час лекційних занять та обговорення завдань лабораторних робіт не слід використовувати смартфони, планшети чи комп’ютери. Якщо ви використовуєте свій ноутбук чи телефон для аудіо-чи відеозапису, необхідно заздалегідь отримати дозвіл викладача.
Дотримання академічної доброчесності студентів й викладачів регламентується кодексом честі Національного технічного університету України «Київський політехнічний інститут», Положення про організацію освітнього процесу в КПІ ім. Ігоря Сікорського.
Види контролю та рейтингова система оцінювання результатів навчання (РСО)
Семестрова атестація проводиться у виді заліку. Для оцінювання результатів навчання застосовується 100-бальна рейтингова система і університетська шкала оцінювання.
Контрольні роботи проводяться у рамках поточного контролю знань студентів, згідно переліку основних розділів курсу. Основною ціллю проведення контрольних робіт є перевірка знань студентів.
Рейтинг студента з дисципліни складається з балів, що він отримує за виконання та захист комп’ютерних практикумів.
Ваговий бали за комп’ютерний практикум – 10 балів.
Максимальна кількість балів на всіх комп’ютерних практикумах дорівнює 10 балів ∙ 10 = 100 балів.
Максимальна кількість балів за роботу зменшується, якщо:
- студент не знає частини теоретичного матеріалу –1..–4 бали;
- не виконано попередню підготовку до роботи –1..–4 бали;
- несвоєчасне подання лабораторної роботи –1..–4 бали;
Умовою для першої атестації є отримання не менше 21 балу та виконання трьох лабораторних робіт Умовою для другої атестації – отримання не менше 50 балів та здача семи робіт.
Необхідною умовою допуску до заліку є зарахування всіх лабораторних робіт, а також стартовий рейтинг не менше 50 балів.
Для отримання студентом відповідних оцінок його рейтингова оцінка R переводиться згідно з таблицею:
R | оцінка |
---|---|
95...100 | Відмінно |
85...94 | Дуже добре |
75...84 | Добре |
65...74 | Задовільно |
60...64 | Достатньо |
50...59 | Незадовільно |
R < 50 або не виконано інші умови допуску | Не допущено |
Додаткова інформація з дисципліни (освітнього компонента)
Перелік питань на залік
1. Основні властивості мови програмування Java.
2. Основні складові віртуальної машини Java. Їх призначення.
3. Яким чином в технології Java досягається незалежність від платформ?
4. Основні відмінності мови Java від C++.
5. Руйнування об’єктів в Java. Умови руйнування. Призначення методу finalize.
6. Примітивні типи даних. Перетворення примітивних типів даних між собою. Типи-обгортки. Автоматичне приведення типів.
7. Класифікація типів даних в мові Java. Деталізуйте кожний тип.
8. Опишіть методи порівняння, які застосовуються в мові Java.
9. Основні класи для обробки та розбору рядків в мові програмування Java.
10. Основні оператори управління виконанням програми.
11. Оператори переривання/повернення управління в мові Java.
12. Пакети та простір імен.
13. Складові класу в мові Java. Дайте характеристику кожній складовій.
14. Успадкування в Java.
15. Типи-перелічення enum. Основні властивості типу. Склад типу.
16. Локальні та анонімні класи.
17. Модифікатори доступу. Вкажіть модифікатори, об’єкти їх застосування та їх дію.
18. Модифікатор final. Вкажіть об’єкти застосування та опишіть дію модифікатора.
19. Успадкування. Механізм заборони успадкування.
20. Інкапсуляція та поліморфізм.
21. Абстрактні класи.
22. Модифікатор static. Вкажіть об’єкти застосування та дію модифікатора. Які ключові слова не можуть бути застосовані всередині статичних методів.
23. Призначення механізму перевантаження. До яких програмних елементів може бути застосоване перевантаження?
24. Інтерфейси. Механізм успадкування та інтерфейси.
25. Вкладені класи. Типи вкладених класів та їх відмінності.
26. Поліморфізм в Java. Які модифікатори забороняють перекриття методів.
27. Обробка виключних ситуацій в мові програмування Java.
28. Синтаксис блоку обробки виключень в Java. Які можливі варіанти застосування секцій блоку обробки виключень?
29. Виключення, що перевіряються компілятором. Які правила повинні бути виконані, якщо в тілі методу ініціюється виключення, що перевіряються компілятором?
30. Класифікація виключних ситуацій у мові Java. Ієрархія основних класів виключних ситуацій.
31. Основні типи виключних ситуацій. Ієрархія виключних ситуацій.
32. Підтримка узагальненого програмування в мові Java.
33. Основні типи потоків вводу/виводу в Java та їх призначення. Основні класи для обробки потоків вводу/виводу.
34. Вкажіть та опишіть класи потоків вводу/виводу, які передбачають додаткову обробку даних або надають зручні методи для читання/запису.
35. Основні класи колекцій в мові програмування Java. Призначення різних типів колекцій.
36. Основні алгоритми, які входять у Collections Framework.
37. Способи сортування колекцій.
38. Основні реалізації множин. Призначення та відмінності.
39. Основні реалізації списків. Призначення та відмінності.
40. Основні реалізації асоціаційних масивів (Map). Призначення та відмінності.
41. Забезпечення цілісності даних при одночасній роботі багатьох потоків над одними й тими самими даними.
42. Планувальник потоків виконання в Java. Призначення планувальника. Алгоритм, що застосовує планувальник.
43. Алгоритм розмежування доступу потоків виконання до даних за допомогою методів wait та notify.
44. Алгоритм створення та запуску потоку виконання.
45. Оператор synchronized. Призначення. До яких елементів застосовується оператор.
46. Як в Java concurrent реалізовано взаємодію потоків?
47. Які блокування реалізовані в Java concurrent. В чому переваги даних блокувань перед synchronized?
Робочу програму навчальної дисципліни (силабус):
Складено ст. викл., PhD, Орленко Сергій Петрович
Ухвалено кафедрою інформаційних систем та технологій (протокол №13 від 15.06.2022 р.)
Погоджено Методичною комісією факультету (протокол №11 від 07.07.2022 р.)