Розробники та рецензенти
Заклад вищої освіти:

Компанія-рецензент 1:

Компанія-рецензент 2:
Валідація:
Розробник навчальної програми:
Ілона Шевченко — канд. техн. наук, доцент кафедри "Інженерії програмного забезпечення"
Базова інформація
Шифр та назва спеціальності:
121 - Програмна інженеріяНазва освітньо-наукової програми
Інженерія програмного забезпеченняНазва дисципліни
Об’єктно-орієнтоване програмування (мова С#)Вид дисципліни
ОсновнаБлок дисципліни
Алгоритмізація і програмуванняКількість студентів
110Курс/Семестр
3Загальна інформація про дисципліну
Анотація
У результаті вивчення курсу здобувачі будуть знати і вміти реалізовувати мовою С# основні поняття і базові концепції об’єктно-орієнтованої парадигми програмування: клас, об’єкт класу, поле і метод класу, модифікатор доступу, властивість, інкапсуляція; конструктор і деструктор класу, ініціалізатор, перевантаження (overloading) методу, сигнатура методу; статичне поле, статичний метод, статичний клас; упакування (boxing) і розпакування (unboxing); узагальнений тип (Generic), колекція (Collection) – ListАнотація
Надати знання і сформувати навички розроблення програмного забезпечення за допомогою об’єктно-орієнтованої парадигми програмування.Анотація
Лекції, практичні роботи, самостійна робота. Модульні контрольні, підсумковий контроль – іспит.Розподіл часу
Попередні дисципліни
Основи програмування (мова С#)Матеріально-технічне та програмне забезпечення дисципліни
Visual Studio 2022 (Community)Структура дисципліни
|
Теоретична складова Назва, перелік питань або анотація лекції |
Годин | Практична складова Опис та приклад завдання, а також посилання на методичні матеріали | Годин | Інструменти, засоби та технології | ||||||||||||||
|
Об’єктно-орієнтоване програмування: Початковий рівень |
||||||||||||||||||
| Класи та об’єкти. Характеристики і поведінка об’єктів класу. Принцип абстракції. | 2 | Практична робота №1 https://drive.google.com/file/d/1L__-_Gr46fu8t2SgZcpGA5meGCPZb63l/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
| Принцип інкапсуляції. Поняття властивості. Обчислювальні і автовластивості. Властивості і Exceptions. | 2 | Практична робота №2 https://drive.google.com/file/d/1I5O4moOKUwah0DsGBoBjzAD_mWqa1JlM/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
| Конструктор класу. Перевантаження конструктору класу. Ініціалізатори. Деконструктори. Деструктори. Поняття сигнатури метода. Перевантаження методів класу. | 2 | Практична робота №3 https://drive.google.com/file/d/1ByEQsIbhUMIlW8tTGh9cR98egA5jFOZu/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
| Статичні: поля, властивості, методи, конструктори, класи. Статичні класи Console, Convert, Math та ін. Статичні методи класу String. Реалізація статичних методів Parse i TryParse для власного класу. | 2 | Практична робота №4 https://drive.google.com/file/d/1GkkmhbQ8g6R2l9BoKf0AsNG9vNWS_7QX/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
| Модульне тестування (Unit testing). Фреймворки для проведення модульного тестування: xUnit, MSTest, NUnit. Test-Driven-Development (TDD): поняття, особливості. | 2 | Практична робота №5 https://drive.google.com/file/d/1hxS_aSa1EKjFi7CfDc2KO-pxn4iiQVzK/view?usp=sharing | 2 | Visual Studio 2022 (Community), фреймворки xUnit, MSTest, NUnit | ||||||||||||||
| Поняття "boxing" та "unboxing". Узагальнені типи (Generics). Колекції (Collections): List<T>, Stack<T>, Dictionary<K, V>. | 2 | Практична робота №6 https://drive.google.com/file/d/1ZlUiUXhmxS5Yujh3WsMJdRslT7EEm5ac/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
| Збереження та завантаження об’єктів класу (Saving and loading of objects). Серіалізація (Serialization) / Десеріалізація (Deserialization) об’єктів класу. | 2 | Практична робота №7 https://drive.google.com/file/d/1aSt7xy4JjNgM7Q4mIe4CgOSVt--js-9K/view?usp=sharing | 2 | Visual Studio 2022 (Community) | ||||||||||||||
|
Об’єктно-орієнтоване програмування: Середній рівень |
||||||||||||||||||
| Відношення між класами: асоціація, агрегація, композиція, реалізація. Інтерфейси: поняття і їх реалізація. Множинна реалізація інтерфейсів. Неявна і явна реалізація інтерфейсів. | 2 | Project (part A) https://drive.google.com/file/d/1fame_9gdd7GiTiWW1cn4YgsXM-G_z5vO/view?usp=sharing | 6 | Visual Studio 2022 (Community) | ||||||||||||||
| Інтерфейси: ICloneable, IComparable<T>, IEnumerable, IEnumerator. | 1 | Project (part B) https://drive.google.com/file/d/18mjG_sYGRz_h0npcbGuxkufmrXLyYBhY/view?usp=sharing) | 6 | Visual Studio 2022 (Community) | ||||||||||||||
| Відношення між класами: спадкування (Inheritance). Відмінність спадкування класів від реалізації інтерфейсів. Рівні доступу при спадкуванні. | 1 | Visual Studio 2022 (Community) | ||||||||||||||||
| Перевизначення (overriding) методів у класах-нащадках. Віртуальні (virtual) методи. Заміна (replacement) методів у класах-нащадках. Sealed-методи. Sealed-класи. Принцип поліморфізму (polymorphism). Варіанти реалізації поліморфізму. Клас System.Object. | 2 | Visual Studio 2022 (Community) | ||||||||||||||||
| Абстрактні (abstract) методи та класи. Схожість та відмінність абстрактного класу і інтерфейсу. Абстрактні члени як частина поліморфного інтерфейсу. Відмова від реалізації абстрактних членів класу. Реалізація інтерфейсів у базових та похідних класах. Зміна реалізації інтерфейсів у похідних класах. Спадкування інтерфейсів. | 1 | Visual Studio 2022 (Community) | ||||||||||||||||
| Перетворення типів: висхідні перетворення (upcasting) і низхідні перетворення (downcasting). Оператор «as». Оператор «is». | 1 | Visual Studio 2022 (Community) | ||||||||||||||||
|
Об’єктно-орієнтоване програмування: Поглиблений рівень |
||||||||||||||||||
| Делегати (delegates): поняття, визначення, робота з ними. Делегати Action, Predicate, Func: особливості і робота з ними. | 1 | Project (part C) https://drive.google.com/file/d/10PCbLQNj4EXpiai7tDHsJ4ejRlSMzNl7/view?usp=sharing | 6 | Visual Studio 2022 (Community) | ||||||||||||||
| Події (events). Визначення та виклик подій. Додавання обробника події. | 1 | Visual Studio 2022 (Community) | ||||||||||||||||
| Принципи SOLID: Single Responsibility Principle, Open/Close Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle. | 2 | Visual Studio 2022 (Community) | ||||||||||||||||
| Різне корисне | ||||||||||||||||||
| Анонімні методи. Лямбда-вирази. Методи розширення (extention method). | 1 | Visual Studio 2022 (Community) | ||||||||||||||||
| Мова запитів до джерела даних LINQ. | 1 | Практична робота (за рахунок самостійної роботи студента, завдання див. нижче) | Visual Studio 2022 (Community) | |||||||||||||||
| Оператори. Індексатори. Часткові класи і методи. Анонімні типи. Кортежі. | 2 | Visual Studio 2022 (Community) | ||||||||||||||||
| Рефлексія: поняття, особливості та доцільність використання. | 2 | Visual Studio 2022 (Community) | ||||||||||||||||
Теми та завдання для самостійної роботи
|
Назва та опис завдання |
Методи контролю та критерії оцінювання |
Годин |
|||||||||||||||
| Практична робота №1 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №2 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №3 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №4 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №5 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №6 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Практична робота №7 - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 6 | |||||||||||||||
| Система керування версіями Git. Web-сервіс для спільної розробки програмного забезпечення GitHub | Виконання завдання https://drive.google.com/file/d/1LmoNlMqzjI1oYPrX1FDOE_Cf20U_yDjP/view?usp=sharing | 6 | |||||||||||||||
| Coding | GitHub Classroom, завдання з тайм лімітом https://drive.google.com/file/d/1uxjisItalag6zSjjCC1dcWx9HshmRdxq/view?usp=sharing | 4 | |||||||||||||||
| Project (part А) - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 10 | |||||||||||||||
| Project (part B) - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 10 | |||||||||||||||
| Project (part C) - завершення, оформлення звіту, підготовка до захисту | Захист роботи | 10 | |||||||||||||||
| Мова запитів до джерела даних LINQ | Виконання завдання https://drive.google.com/file/d/1Fvp1xV-3RBB7Q9a8wPNKrMZCX3e4Efvj/view?usp=sharing | 4 | |||||||||||||||
Проєкт
Рекомендовані джерела інформації та навчальні матеріали
|
Основні |
||||||||||||||||||
| № | Назва |
До теми (вказати номер) |
||||||||||||||||
| 1 | Rob Miles. C# programming. Yellow Book, 2019. | 1-20 | ||||||||||||||||
| 2 | Andrew Troelsen. Pro C# 10 with .NET 6: Foundational Principles and Practices in Programming, 2022. | 1-20 | ||||||||||||||||
| 3 | C# programming guide. – Режим доступу: https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/ | 1-20 | ||||||||||||||||
| 4 | C# Tutorial. – Режим доступу: https://www.w3schools.com/cs/index.php | 1-20 | ||||||||||||||||
| 5 | Learn C# Programming. – Режим доступу: https://www.programiz.com/csharp-programming | 1-20 | ||||||||||||||||
| 6 | Learn C# Programming. – Режим доступу: https://www.tutorialsteacher.com/csharp | 1-20 | ||||||||||||||||
| 7 | Learn Object-Oriented Programming with C#. – Режим доступу: https://www.tutorialsteacher.com/csharp/oop | 1-20 | ||||||||||||||||
| 8 | Language Integrated Query (LINQ) (C#). – Режим доступу: https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/ | 18 | ||||||||||||||||
| 9 | Learn LINQ (Language-Integrated Query). – Режим доступу: https://www.tutorialsteacher.com/linq | 18 | ||||||||||||||||
|
Додаткові |
||||||||||||||||||
|
№ |
Назва |
До теми (вказати номер) |
||||||||||||||||
| 1 | Олексій Глембицький. Логування в C# за допомогою NLog та практики обробки помилок: https://www.youtube.com/watch?v=J3Sy06NvwQI | 2 | ||||||||||||||||
| 2 | Олексій Глембицький. Робота з колекціями у C#: https://www.youtube.com/watch?v=7a09ktIC494 | 6 | ||||||||||||||||
| 3 | Олексій Глембицький. Делегати та події в C#. Основні поняття та практичні сценарії використання: https://www.youtube.com/watch?v=QkEVJ_1sHOw | 14-15 | ||||||||||||||||
| 4 | Олексій Глембицький. Використання SOLID принципів у C# проєктах: https://www.youtube.com/watch?v=SPeid1X6oB4&t=6s | 16 | ||||||||||||||||
| 5 | Олексій Глембицький. Реалізація основних LINQ методів на C#: https://www.youtube.com/watch?v=oi0ievIHA9c&t=7144s | 18 | ||||||||||||||||
| 6 | Олексій Глембицький. Рефлексія в C#: поняття, особливості та доцільність використання: https://www.youtube.com/watch?v=V1xOBgT3yKw&t=200s | 20 | ||||||||||||||||
| 7 | Олексій Глембицький. Питання на співбесіді для Junior С# розробників: https://www.youtube.com/watch?v=0oNH2XOmPWc | 1-19 | ||||||||||||||||
| 8 | Олексій Глембицький. Співбесіда на позицію Junior C# Developer: https://www.youtube.com/watch?v=J0jdeN11QlU&t=1s | 1-19 | ||||||||||||||||
| 9 | Питання з ООП та SOLID на технічній співбесіді. Рівень Junior: https://www.youtube.com/watch?v=8uHKrMCqq4E&t=1s | 1-19 | ||||||||||||||||
| 10 | Роман Іоненко. Продуктивність C# коду і питання його оптимізації: https://www.youtube.com/watch?v=U3ZgJhmPvm0 | |||||||||||||||||
| 11 | Євген Нестеренко. Що таке чистий код? Методи рефакторингу: https://www.youtube.com/watch?v=0C-bPxAkHcg | |||||||||||||||||
Контрольні заходи
|
Назва та опис |
Методи контролю та критерії оцінювання |
|||||||||||||||||
| Модульна контрольна робота №1 | Комп’ютерне тестування (40 питань за 80 хвилин) | |||||||||||||||||
| Модульна контрольна робота №2 | Комп’ютерне тестування (40 питань за 80 хвилин) | |||||||||||||||||
| Coding (поточний) | Завдання з тайм лімітом (2 години, GitHub Classroom) | |||||||||||||||||
| Coding (іспит) | Завдання з тайм лімітом (2 години, GitHub Classroom) | |||||||||||||||||
Результати навчання
Зв'язок з ринком праці
Спеціальність/професія, підготовці до діяльності в якій читається курс:
Розробник серверної частиниПосилання на вакансії (понад 3),
- https://jobs.dou.ua/companies/servio-soft/vacancies/109644/
- https://jobs.dou.ua/companies/personalitieshr-company/vacancies/200502/
- https://jobs.dou.ua/companies/empeek/vacancies/268638/
- https://jobs.dou.ua/companies/hys-enterprise/vacancies/267454/
Перелік компетентностей із вказаних як вимоги до вакансії, які набувають студенти, в процесі проходження дисципліни.
Вакансія 1:- Хороше розуміння ООП, SOLID;
- Впевнені знання мов C#;
- Добре знання платформи .NET;
- Досвід роботи з LINQ;
- Розуміння форматів даних (JSON);
- Досвід роботи з Git.
- Knowledge of C# and .NET (classes, implementation of OOP principles in C#, basic collections);
- Basic knowledge of git (or other version control systems).
- experience in C#/.NET;
- Understanding of SOLID and OOP principles
- Experience with unit testing
- Experience with version control systems
- Solid understanding of object-oriented programming (OOP);
- Good knowledge of C#, .Net Standard, .NET 6+,
- Basic knowledge of Unit testing;
- Proficiency with Source Control tools such as Git.
Інструменти оцінювання результатів навчання за дисципліною
|
Об'єкт оцінювання (знання методів та принципів, практичні навички, командна робота тощо) |
Методи контролю (тести, виконання поточних практичних завдань та їх форма: написання коду, створення діаграми Гантта, створення прототипу тощо) |
Інструмент оцінювання (доступ до результатів тесту, гостьова лекція, посилання на виконані завдання, посилання на проєкт, присутність на захисті проєктів, доступ до запису захисту тощо) |
| Практичні роботи №1-7, завдання з Git-GitHub i LINQ | Написання коду | посилання на виконані завдання, присутність на захисті |
| Project (part A-C) | Написання коду | посилання на виконані завдання, присутність на захисті |
| Модульна контрольна робота №1 | Комп’ютерне тестування | доступ до результатів тесту |
| Модульна контрольна робота №2 | Комп’ютерне тестування | доступ до результатів тесту |
| Coding (поточний) | Завдання з тайм лімітом (GitHub Classroom) | посилання на виконані завдання |
| Coding (іспит) | Завдання з тайм лімітом (GitHub Classroom) | посилання на виконані завдання |
