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

Спеціальність: Комп'ютерні науки (Системи штучного інтелекту)
Код дисципліни: 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-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).