Основи програмування

Спеціальність: Комп'ютерні науки (Системи штучного інтелекту)
Код дисципліни: 6.122.13.O.001
Кількість кредитів: 7.00
Кафедра: Системи штучного інтелекту
Лектор: Пшеничний О.Ю.
Семестр: 1 семестр
Форма навчання: денна
Мета вивчення дисципліни: Ознайомити студентів із основами програмування: базовими алгоритмами та структурами даних, основами системного програмування. Опанувати середовище програмування C/C++ та засоби відлагоджування програм. Сформувати у студентів науково обґрунтовані погляди на сучасні технологічні процеси в інформаційній галузі.
Завдання: - Вивчення фундаментальних конструкцій структурного програмування. - Розуміння поняття типів даних (базових, масивів, та визначених користувачем) і операцій над ними. - Вміння реалізувати основні алгоритми та структури даних. - Вміння працювати із зовнішніми джерелами даних (файли, консоль). - Отримання навичок організації програмного коду (розбивка на функції) для ефективної роботи з ним. - Розуміння основ ООП на прикладі мови С++. - Вміня аналізувати поставлену задачу та обирати оптимальний алгоритм для її вирішення. - ЗК1. Здатність до абстрактного мислення, аналізу та синтезу. - ЗК2. Здатність застосовувати знання у практичних ситуаціях. - ЗК3. Знання та розуміння предметної області та розуміння професійної діяльності. - ЗК10. Здатність бути критичним і самокритичним. - ЗК11. Здатність приймати обґрунтовані рішення. - ФК3. Здатність до логічного мислення, побудови логічних висновків, використання формальних мов і моделей алгоритмічних обчислень, проектування, розроблення й аналізу алгоритмів, оцінювання їх ефективності та складності, розв’язності та нерозв’язності алгоритмічних проблем для адекватного моделювання предметних областей і створення програмних та інформаційних систем. - ФК8. Здатність проектувати та розробляти програмне забезпечення із застосуванням різних парадигм програмування: узагальненого, об’єктно-орієнтованого, функціонального, логічного, з відповідними моделями, методами й алгоритмами обчислень, структурами даних і механізмами управління.
Результати навчання: Розробляти програмні моделі предметних середовищ, вибирати алгоритми та структури даних із позицій зручності та відповідності застосування до поставленої задачі в галузі комп’ютерних наук. Ефективно застосовувати принципи мови програмування для того, щоб реалізація була підтримуваною та здатною еволюціонувати.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Супутні і наступні навчальні дисципліни: 1. Теорія обчислень, алгоритми і структури даних 2. Об’єктно-орієнтоване програмування 3. Командна робота
Короткий зміст навчальної програми: Даний навчальний курс є вступом до величезної галузі знань, яка продовжує свій бурхливий розвиток, - програмування. Розробка програм – це складний інженерний процес, неможливий без відповідної технології. Саме ознайомлення з базовою технологією створення програм (структурним програмуванням) є метою вивчення даної дисципліни. Для студентів це має стати першим знайомством з майбутньою спеціальністю. Найважливіші поняття та практичні прийоми програмування вивчаються з залученням мов С/C++, які відіграли в історії програмування надзвичайно важливу роль та зберігають популярність і сьогодні. Мовою С створено величезний обсяг системного та прикладного програмного забезпечення. Достатньо сказати, що мовою С написана операційна система UNIX (а також OC Linux). А без концепцій об’єктно-орієнтованої мови С++ неможливо уявити сучасного професіонала-програміста. Методичні та дидактичні чинники обумовлюють особливий підхід до викладу мови програмування для початківців, тим більше такої складної, як мова С. Основна мета навчальної дисципліни “Основи програмування” полягає не стільки в тому, щоб навчити студента самій лише мові С, скільки в тому, щоб взагалі навчити програмуванню і притаманному йому стилю мислення. Для порівняння, якщо досвідченому програмісту, аби навчити новій мові, достатньо пояснити, які в ній є типи даних, як пишеться оператор циклу, як оголошуються підпрограми, - то початківцю треба спершу пояснити, що таке взагалі тип даних, оператор циклу та підпрограма. Мова C є перевіреним часом мовою програмування, що дозволяє створювати компактні і ефективні програми, а дана дисципліна містить всю необхідну інформацію для того, щоб почати програмувати. Вона розрахована на студентів із мінімальним або відсутнім попереднім досвідом програмуванням, - і викладає всі питання з азів. У процесі вивчення розглядаються конкретні приклади, які допомагають скласти шматочки різних тем в мозаїку мови програмування. Основне завдання навчального дисципліни – пояснити новачку мови програмування С та C++, з основ і до новітніх особливостей ANSI-C++, в тому числі такі поняття, як: масиви, структури, списки, файли, рядки, функції, критичні ситуації. Матеріал курсу орієнтований не тільки на суху теорію мови високого рівня С/C++, але й на виконання ряду практичних завдань на лабораторних заняттях. Навчальна дисципліна «Основи програмування» відноситься до циклу загальної підготовки навчальної програми бакалавра за спеціальністю 122 «Комп’ютерні науки» (спеціалізація «Системи штучного інтелекту»).
Опис: 1. Основні поняття та визначення. 2. Основні засоби мов С/С++. 3. Масиви. Алгоритми сортування та пошуку. 4. Вказівники і посилання. 5. Вказівники й масиви. 6. Символьні рядки. 7. Функції. 8. Динамічні структури даних. 9. Ввід-вивід у мові С/C++.
Методи та критерії оцінювання: 1. Виконання лабораторних та практичних робіт та їх захист. 2. Написання контрольних робіт. 3. Написання розрахунково-графічної роботи 4. Екзамен.
Критерії оцінювання результатів навчання: 1. Розуміння та вміння правильно використовувати конструкції мов C/C++. 2. Вміння описати та реалізувати на С/С++ алгоритм вирішення поставленої задачі. 3. Розуміння фундаментальних основ програмування та реалізованих алгоритмів. 4. Читабельність та гнучкість коду. Здатність підтримувати його протягом тривалого часу на великому проекті.
Порядок та критерії виставляння балів та оцінок: 100–88 балів – («відмінно») виставляється за високий рівень знань (допускаються деякі неточності) навчального матеріалу компонента, що міститься в основних і додаткових рекомендованих літературних джерелах, вміння аналізувати явища, які вивчаються, у їхньому взаємозв’язку і роз витку, чітко, лаконічно, логічно, послідовно відповідати на поставлені запитання, вміння застосовувати теоретичні положення під час розв’язання практичних задач; 87–71 бал – («добре») виставляється за загалом правильне розуміння навчального матеріалу компонента, включаючи розрахунки , аргументовані відповіді на поставлені запитання, які, однак, містять певні (неістотні) недоліки, за вміння застосовувати теоретичні положення під час розв’язання практичних задач; 70 – 50 балів – («задовільно») виставляється за слабкі знання навчального матеріалу компонента, неточні або мало аргументовані відповіді, з порушенням послідовності викладення, за слабке застосування теоретичних положень під час розв’язання практичних задач; 49–26 балів – («не атестований» з можливістю повторного складання семестрового контролю) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння застосувати теоретичні положення під час розв’язання практичних задач; 25–00 балів – («незадовільно» з обов’язковим повторним вивченням) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння орієнтуватися під час розв’язання практичних задач, незнання основних фундаментальних положень.
Рекомендована література: 1. Prata S. C Primer Plus (6th edition). Addison-Wesley Professional, 2013. 2. Prata S. C++ Primer Plus (6th edition). Addison-Wesley Professional, 2011. 3. Kernighan, B. W., Ritchie, D. M. The C Programming Language (2nd edition). Prentice Hall, 1988. 4. Stroustrup Bjarne. The C++ Programming Language (4th edition). Addison-Wesley Professional, 2013. 5. Griffiths David, Griffiths Dawn. Head First C: A Brain-Friendly Guide. O'Reilly Media, 2012. 6. Schildt Herbert. C: The Complete Reference (4th edition). McGraw Hill, 2000. 7. Stroustrup Bjarne. Programming: Principles and Practice Using C++ (2nd edition). Addison-Wesley Professional, 2014. 8. Kanetkar Yashavant. Let Us C: Authentic guide to C programming language (19th edition). BPB Publications, 2022. 9. Sedgewick Robert. Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching (3rd edition). Addison-Wesley Professional, 1997. 10. Cormen Thomas, Leiserson Charles, Rivest Ronald, Stein Clifford. Introduction to Algorithms (3rd Edition). The MIT Press, 2009. Наявний переклад українською: Кормен Томас, Лейзерсон Чарлз, Рівест Роналд, Стайн Кліфорд. Вступ до алгоритмів. К.І.С., 2023.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).