Найкращий навчальний посібник Політехніки — про базові поняття

Ігор Голод, Центр комунікацій Львівської політехніки
Віктор Григорович

Переможцем щорічного конкурсу видань Львівської політехніки в номінації «Найкращий навчальний посібник» визнано роботу доцента кафедри інформаційних систем та мереж (ІСМ) Інституту комп’ютерних наук та інформаційних технологій (ІКНІ), кандидата фізико-математичних наук Віктора ГРИГОРОВИЧА — «Об’єктно-орієнтоване програмування. Частина 1. Об’єктно-орієнтоване програмування. Частина 2. Винятки. Контейнери та шаблони. STL — стандартна бібліотека шаблонів. S.O.L.I.D.».

Розглядає фундаментальне

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

Дисципліну «Об’єктно-орієнтоване програмування» (ООП) вивчають після опанування курсу «Алгоритмізація та програмування». Навчальний посібник Віктора ГРИГОРОВИЧА рекомендовано до друку й видання з грифом Науково-методичної ради Національного університету «Львівська політехніка» для використання в навчальних закладах і опубліковано у межах академічної серії «Комп’ютинґ».

Його перша частина охоплює базові поняття та механізми освітньої дисципліни «Об’єктно-орієнтоване програмування» і розглядає фундаментальні концепції — класи й об’єкти, конструктори, перевантаження, успадкування та поліморфізм, тобто матеріал, з якого починається опанування ООП після курсу алгоритмізації.

Друга частина присвячена виняткам, шаблонам, контейнерам STL та принципам S.O.L.I.D. У ній роз’яснено обробку винятків (exception handling), використання стандартної бібліотеки шаблонів (STL) та основи дизайну програмного забезпечення за принципами S.O.L.I.D.

Доступно про складне

На запитання «Яку головну навчальну проблему ви прагнули розв’язати, створюючи цей посібник?» Віктор ГРИГОРОВИЧ відповів:

— Головне — доступно пояснити складні теми. Я багато років викладаю цю дисципліну, тому посібник відображає мій педагогічний досвід. Практика показує, що найкраще засвоюється не сухий теоретичний виклад, а матеріал, доповнений численними ілюстраціями, схемами та прикладами. Саме такий підхід і покладено в основу посібника.

Для яких освітніх програм і рівнів підготовки передусім призначений цей посібник?

— Для студентів, що навчаються за першим (бакалаврським) рівнем вищої освіти, спеціальностей F4 «Системний аналіз та наука про дані» й F6 «Інформаційні системи і технології». Передусім — для підготовки фахівців із розподілених інформаційних систем.

— Яких результатів навчання ви очікуєте від студентів після опанування посібника?

— Очікую глибшого й системнішого засвоєння матеріалу. У разі пропуску лекції посібник дасть змогу самостійно опрацювати відповідні теми.

— Чому обрали саме таку структуру: базове ООП — окремо, а винятки, шаблони та STL — у другій частині?

— Насамперед це зумовлено видавничими міркуваннями. Видавництву зручніше друкувати том обсягом близько 300 сторінок, ніж 600. Крім того, великий обсяг одного видання може психологічно відлякувати студентів. Двотомна структура оптимальна і з навчальної точки зору: перша частина охоплює основи об’єктно-орієнтованого програмування, тоді як другу присвячено практичним аспектам його застосування.

Класика галузі

— Якими критеріями керувалися, добираючи теми та приклади?

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

— Чи можна використовувати частини посібника незалежно одна від одної?

— Друга частина посібника ґрунтується на матеріалі першої, тому перед її вивченням рекомендовано опанувати основи, викладені в першій частині.

— Яка тема, на вашу думку, є ключовою для формування системного мислення програміста?

— На моїх потоках у першому семестрі я викладаю алгоритмізацію та програмування, а у другому — два курси: «Об’єктно-орієнтоване програмування» і «Програмування та командна робота». Разом ці дисципліни формують IT-світогляд і закладають фундамент для системного мислення. Моє завдання — щоб студенти зрозуміли основні принципи, а не запам’ятали всі деталі.

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

Старанність долає все

— Які типові труднощі виникають у студентів під час вивчення об’єктно-орієнтованого програмування?

— Труднощі виникають у тих студентів, які пропускають лекції, не виконують лабораторних робіт і не читають навчальної літератури. Сумлінні студенти зазвичай не мають проблем, оскільки матеріал викладається доступно. Проблеми виникають тільки в тих, хто недисциплінований у навчанні.

— Як у посібнику поєднано теоретичні пояснення і практичні завдання?

— Після кожного теоретичного пояснення подано численні приклади, які ілюструють матеріал і допомагають його закріпити на практиці.

— Чи передбачає посібник розвиток навичок аналізу та проєктування програмних систем?

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

— Як ви рекомендуєте викладачам інтегрувати цей матеріал у навчальний курс?

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

— Чому, на вашу думку, шаблони та стандартна бібліотека шаблонів є важливими для майбутніх фахівців, а не лише «додатковими» темами?

— Шаблони, стандартна бібліотека шаблонів (STL) та принципи S.O.L.I.D. є сучасними технологіями, і немає потреби «винаходити велосипед». Спершу студенти виконують багато завдань вручну, щоб зрозуміти базові принципи, а потім їм демонструють, як ті самі завдання можна реалізувати за допомогою стандартних бібліотек.

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

Узагальнення вивченого

— Як ви пояснюєте принципи S.O.L.I.D. студентам, які ще не мають великого практичного досвіду?

— Студенти вже мають базовий досвід розроблення об’єктно-орієнтованих програм. Принципи S.O.L.I.D. подаються як узагальнення того, що вони вже вивчили. Акцент робиться на тих моментах, які вони вже застосовували на практиці, щоб усвідомити, як виконувати їх правильно й ефективно.

— Який принцип S.O.L.I.D. студентам найважче засвоїти?

— Це питання тісно пов’язане з типовими труднощами у вивченні об’єктно-орієнтованого програмування. Усі принципи S.O.L.I.D. органічно випливають із попереднього матеріалу: вони взаємопов’язані й ґрунтуються на базових навичках створення якісного, масштабованого та легко модифікованого програмного коду. Студенти, які опанували попередні теми, засвоюють ці принципи без значних труднощів. Натомість для тих, хто не підготувався до попередніх тем, будь-який із принципів може здатися складним.

— Чи немає ризику перевантаження студентів абстрактними концепціями?

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

Найважливіше для фахівців

— Наскільки зміст посібника відповідає сучасним вимогам ІТ-ринку?

— Формуючи програму, я консультувався зі старшокурсниками та випускниками, які вже працюють у галузі, а також із колегами, що посідають провідні позиції в ІТ-кластері. Ми обговорювали, які базові навички та знання є найважливішими для сучасних фахівців. Усе це враховано в тематиці посібника, тому я вважаю, що він відповідає сучасним вимогам ІТ-ринку.

— Чи спиралися ви на реальні приклади з промислової розробки під час підготовки матеріалу?

— Оскільки це базовий курс, приклади спочатку досить прості, щоб студенти зрозуміли основні концепції. Реальні кейси і промислові технології вони застосовують у курсі «Програмування та командна робота», де працюють над проєктами в команді, розробляють мобільні застосунки та взаємодіють із базами даних. Тобто у межах цього базового предмету важко виділити конкретні приклади з промислової розробки — вони розкриваються в подальших дисциплінах і практичних завданнях.

— Які компетентності, на вашу думку, має сформувати цей посібник у випускника?

— Передусім посібник допомагає сформувати фундаментальні знання з об’єктно-орієнтованого програмування, які є потрібними для будь-якого сучасного ІТ-фахівця. Випускник має розуміти основи ООП, знати, де і як застосовуються ці принципи, а також уміти використовувати здобуті знання на практиці. Саме поєднання міцного фундаменту та практичних навичок є головною метою посібника.

Помилки виправляли студенти

— Як робота над посібником вплинула на ваше бачення викладання програмування?

— Посібник створено на основі мого досвіду викладання та практичного програмування. Тобто саме мій досвід вплинув на зміст посібника, а не навпаки — посібник не змінив мого підходу до програмування, але допоміг систематизувати матеріал для студентів.

Під час підготовки посібника я суттєво вдосконалив свій курс. Значну допомогу мені надали студенти, яким доручав вичитувати текст посібника; за виявлені помилки вони отримували бали. Це не лише заохочувало студентів, а й допомагало мені побачити власні недогляди, адже після написання тексту авторові важко помітити всі синтаксичні та стилістичні помилки. Такий процес значно поліпшив якість матеріалу та допоміг по-новому оцінити важливість наочності й зрозумілості викладу.

— Чи плануєте ви доповнювати або оновлювати посібник з урахуванням нових стандартів і технологій?

— Так, заплановано підготовку підручника на основі цього посібника. У ньому будуть оновлення, деякі приклади стануть більш сучасними та технологічними, а пояснення — докладнішими. Підручник відрізнятиметься від посібника саме цими доповненнями та поліпшенням матеріалу.

— Яку пораду ви дали б студентам для ефективного вивчення ООП?

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

Посібник Віктора Григоровича Посібник Віктора Григоровича Віктор Григорович