Дисципліни
Процедурне програмування
Мова програмування С була створена, власне, як мова високого рівня, призначена для системного програмування, в першу чергу для програмування операційної системи Unix. Вона забезпечує пряме спілкування програми з комп’ютером, не потребуючи додаткової підтримки процесу виконання. С-програма безпосередньо оперує і керує доступом до пам’яті комп’ютера. Цим разом досягається висока ефективність процесу виконання програми. Наступним розвитком мови програмування С стала процедурна частина мови С++, побудована на базі мови С. ЇЇ вивчення складає основну частину курсу. С++ доповнює С засобами абстракції вищого рівня без втрати ефективності виконання. Курс забезпечить віртуозне володіння процедурним програмуванням, забезпечивши плавний перехід до наступних парадигм.
Об`єктно-орієнтоване програмування
Мова програмування С++, доповнивши мову С в частині своєї процедурної парадигми, відкриває доступ до двох інших важливих парадигм імперативного програмування. Це об’єктно-орієнтована і узагальнена парадигми. Залишаючись мультипарадигменною мовою, С++ дозволяє вдало поєднувати різні парадигми і рівні абстракції, знову ж без втрати ефективності виконання, досягаючи високої ефективності процесів проектування програмного забезпечення. Ієрархічний характер структур даних – класів і об’єктів, а потім концепцій і модулів – дозволяє застосовувати різні види поліморфізму. Поєднання семантики копіювань і переміщень забезпечує високу гнучкість програм. Все разом це забезпечить бездоганне орієнтування в підґрунтях засобів конструювання програм, прийнятих в багатьох інших системах програмування, наприклад, Java, C##, Python тощо, які так чи інакше спираються на С++.
Базові алгоритми обробки природної мови
Мета курсу полягає в ознайомленні з основами обробки природної мови, сучасними підходами до роботи з текстовими даними та алгоритмами аналізу мовних структур, першочергово зосереджуючись на українській мові. Основне завдання курсу – формування достатньої системи знань і практичних навичок для розроблення та використання алгоритмів оброблення українськомовних текстів, що дасть змогу створювати ефективні застосунки з елементами NLP.
Практикум з об`єктно-орієнтованого програмування
Практикум об’єктно-орієнтованого програмування пропонується як вибірковий курс для студентів, які цікавляться засобами організації і визначення графічних інтерфейсів на основі об’єктно-орієнтованого підходу, виходячи з принципу відокремлення введення/виведення від логіки програми, вивчення якої складало предмет курсів процедурного і об’єктно-орієнтованого програмування. В практикумі вивчаються засоби організації графічних даних, методи відтворення графічних даних на екрані, класифікація графічних примітивів. Будуються ієрархії графічних класів. Проектується та реалізуються графічні інтерфейси користувача. Для реалізації графічних примітивів використовується крос-платформенний фреймворк з відкритим кодом Qt (“К’ют”). Метою і завданням навчальної дисципліни вивчення основних принципів розробки desktop застосунків, розробки графічного інтерфейсу користувача (GUI), знайомство з основними підходами для роботи з мережею, діалоговими вікнами, потоками.
Front-end Back-end - технології веб-застосувань
Метою курсу “Front-та BackEnd- технології веб-застосувань” є висвітлення основних підходів до проектування і програмування веб-застосувань, в першу чергу на основі трирівневої клієнт-серверної архітектури. Предмет навчальної дисципліни "Front-та BackEnd- технології веб-застосувань" включає: Основні принципи клієнт-серверної архітектури та програмування типових клієнт-серверних застосувань. Загальна характеристика веб-програмування. JavaScript як мова програмування. Клієнтські та серверні фреймворки. Обробка клієнтських запитів та роутинг (доступ до даних GET та POST, використання Express). Відображення інформації (шаблонізатори, подібні до Smarty, Twig, Pug); динамічне формування контенту клієнтськими сценаріями з використанням DOM; динамічне формування тегів). Комунікація та обмін даними між веб-вузлами (AJAX, XMLHttpRequest, сокети). Робота з даними (API до баз даних, в першу чергу Mongo DB; робота з файлами; JSON). Підтримка сеансів. Проблеми безпеки та захисту. Усі концепції та підходи уточнюються розглядом типових прикладів та програмуванням типових задач. Індустріальна орієнтованість курсу забезпечується написанням учбових завдань, які ілюструють вирішення окремих типових проблем, а також, можливо, виконанням навчальних проектів з залученням зовнішніх стейкхолдерів, які оцінюють корисність проекту.
Методи об`єктно-орієнтованого програмування
Мова програмування С++ – це океан можливостей для розвитку вмінь розробників програмного забезпечення. Мета курсу довести об’єктно- орієнтовану парадигму до довершеності, необхідної для віртуозної розробки програмних систем з використанням впорядкованих за рівнями об’єктно-орієнтованих узагальнених абстракцій з гнучкими інтерфейсами і повторно вживаними вхідними кодами. В курсі досліджуються важливі ідіоми і патерни програмування: інтелектуальні указники, проксі класи, функтори, мультиметоди, невіртуальні інтерфейси, нетермінальна абстрактність, абстрактні класи, принципи SOLID. Інстанціонування і часткова спеціалізація шаблонів служать для розвитку в напрямку мета програмування. В курсі вводяться також деякі важливі патерни проектування, поглиблене вивчення яких буде продовжено в окремому курсі. Курс супроводжується створенням групових проектів.
Основи технології блокчейн і криптовалют
Курс надає розуміння технічних і фундаментальних аспектів технології блокчейн і криптовалют. Під час навчання студенти ознайомляться з децентралізацією як підходом в інформаційних системах, як працює BitTorrent, принципами функціонування протоколу BitMessage, архітектурою й особливостями протоколу IPFS, як використовується криптографія в децентралізованих системах, різновидами цифрових підписів. Оскільки своєю популярністю технологія блокчейн завдячує широкому розповсюдженню в світі криптовалюти Біткоін, протягом курсу буде розглянуто технологічні деталі функціонування блокчейн-платформи Біткоін, форматами особистих і відкритих ключів, серіалізацією транзакцій і блоків, приклади проблем в протоколах і їх рішення, основні класи атак на біткоін. Буде проаналізовано методи досягнення консенсусу в Блокчейн, зокрема proof-of-stake, delegated ptoof-of-stake, алгоритми BFT-класу, алгоритм FBA і його застосування. Криптовалюти, ознакою яких зазвичай є конфіденційність, стали частиною сучасної фінансової системи світу, для функціонування якої є обов’язковість дотримання правил міжнародних процедур фінансового моніторингу (AML) і правил ідентифікації клієнтів (KYC). Тому буде розглянуто методи конфіденційності в сучасних облікових системах, які застосовуються при функціонуванні крипто-валют, а також методами і заходами протидії відмиванню грошей при операціях з крипто-валютами. Студенти опанують основи трейдінгу крипто-валют, фундаментального і технічного аналізу, проведуть математичну характеристику індикаторів технічного аналізу і одержать практичний досвід застосування методів технічного аналізу для прогнозування курсу.
Патерни проектування
Мета курсу полягає у вивченні широкого аспекту патернів (невдалий переклад шаблонів?) програмування, що набули широкого застосування в практиці створення програмних систем. Володіння патернами проектування протягом останніх десятиліть стало необхідним атрибутом кваліфікації розробника програмного забезпечення. Розглядаються три основних види патернів: твірні (Creational), структурні (Structural ) і поведінкові (Behavioral). Курс проводиться в форматі науково-технічного семінару. Кожен учасник курсу обирає декілька пов’язаних між собою патернів і готує доповідь про їх висвітлення, використовуючи науково-технічну літературу, доступні або власні програмні розробки. Доповідь відбувається у вигляді презентації і ілюструється відповідним програмним кодом. Два інших учасника призначаються на роль рецензентів доповіді і ілюстративного коду. Рецензенти можуть поглиблювати і розвивати тему доповіді. Процес засідань семінару супроводжується загальним обговоренням.