ПРОГРАМУВАННЯ -1. ОСНОВИ ПРОГРАМУВАННЯ - Робоча програма навчальної дисципліни (Силабус)
Реквізити навчальної дисципліни
Рівень вищої освіти | Перший (бакалаврський) |
Галузь знань | 12 Інформаційні технології |
Спеціальність | 126 Інформаційні системи та технології |
Освітня програма | Інформаційні управляючі системи та технології |
Статус дисципліни | Нормативна |
Форма навчання | очна(денна) |
Рік підготовки, семестр | 1 курс, осінній семестр |
Обсяг дисципліни | 6 кредитів (180 год) |
Семестровий контроль/ контрольні заходи | Екзамен/ контрольне завдання, лабораторні роботи, модульна контрольна робота |
Розклад занять | http://rozklad.kpi.ua |
Мова викладання | Українська |
Інформація про керівника курсу / викладачів | Лектор: ст.викладач Проскура Світлана Леонідівна slproskura@gmail.com моб. +38(066)567-45-59 Лабораторні: |
Розміщення курсу | https://campus.kpi.ua |
Програма навчальної дисципліни
Опис навчальної дисципліни, її мета, предмет вивчення та результати навчання
Дана навчальна дисципліна ”Програмування - 1. Основи програмування” є базовою в плані підготовки студентів і спрямована на вивчення теоретичних та методологічних основ побудови програм на мовах програмування високого рівня з урахуванням сучасних концепцій і тенденцій розвитку, оволодіння інструментальними засобами створення таких програм, отримання практичних навичок розробки програмного забезпечення при вирішенні прикладних задач різного ступеня складності.
Мета дисципліни полягає в тому, щоб навчити студентів використовувати основні прийоми програмування з урахуванням сучасних концепцій і тенденцій розвитку технологій програмування, навчитися розв’язувати реальні науково-технічні задачі різної складності за допомогою комп’ютерів.
Основні завдання: вивчаються теоретичні принципи та практичні прийоми структурного, процедурного, модульного програмування; розкриваються основні структурні конструкції алгоритмічних мов програмування; опановується технологія розробки алгоритмів прикладних задач, кодування вибраною мовою програмування, налагодження програми, оцінки достовірності отриманих результатів.
Вивчення дисципліни «Програмування - 1. Основи програмування» сприяє формуванню у студентів наступних компетентностей.
Фахові компетентності:
ФК3. Здатність до проектування, розробки, налагодження та вдосконалення програмного забезпечення.
ФК4. Здатність проектувати, розробляти та використовувати алгоритмічні та програмні засоби реалізації інформаційних систем та технологій.
Результати навчання:
ПРН3. Використовувати базові знання інформатики, навички програмування, технології розроблення алгоритмів і комп’ютерних програм мовами високого рівня.
ПРН5. Аргументувати вибір програмних засобів для створення інформаційних систем та технологій на основі аналізу їх властивостей, мати навички налагодження та тестування програмних засобів.
ПРН6. Демонструвати практичні навички програмування та використання прикладних і спеціалізованих комп’ютерних систем та середовищ з метою їх запровадження у професійній діяльності.
ПРН7. Розробляти програмне забезпечення, що входить до складу інформаційних систем та технологій.
ПРН20. Вміти використовувати існуючі програмні засоби, компоненти та технології для побудови інформаційних управляючих систем.
ПРН21. Знати спеціалізовані мови та технології програмування.
ПРН26. Вміти застосовувати інформаційні технології обробки, зберігання даних.
Пререквізити та постреквізити дисципліни (місце в структурно-логічній схемі навчання за відповідною освітньою програмою)
Для успішного освоєння дисципліни необхідно мати базові знання із дисципліни "Основи інформатики" середньої школи, а також базові знання із таких дисциплін: "Дискретна математика", “Вища математика”, “Аналітична геометрія та лінійна алгебра”. Теоретичний матеріал, що його студенти мають опанувати із дисциплін, що забезпечують дисципліну „Алгоритмізація та програмування”, такий:
дисципліна "Дискретна математика": множини; відношення на множинах; графи; фундаментальні алгоритми на графах.
дисципліна “Вища математика”: операції з матрицями (визначник матриці, обернення, транспонування матриць); методи розв'язування систем лінійних рівнянь; рівняння прямої на площині та в просторі; правили диференціювання; необхідні та достатні умови екстремуму функцій; правила обчислення визначеного інтегралу; метод найменших квадратів; методи розв'язування диференціальних рівнянь першого порядку; лінійні операції над рядами; ряди Тейлора і Маклорена.
Знання та навики, що придбають студенти при вивченні з даної дисципліни забезпечать успішне вивчення таких дисциплін: "Об’єктно-орієнтоване програмування", "Операційні системи", "Бази даних", " Інтернет-технології та проектування WEB-застосувань" та інших.
Зміст навчальної дисципліни
Назва теми лекції та перелік основних питань
Розділ 1. Основні поняття та означення
Тема 1.1 Поняття архітектури комп’ютера фон Неймана та програмного забезпечення
Тема 1.2 Поняття алгоритму й основні алгоритмічні структури.
Тема 1.3 Мови програмування та засоби створення програм
Розділ 2. Елементи мови С/С++. Керування порядком обчислень
Тема 2.1 Базові поняття мов програмування
Тема 2.2 Основи організації програм
Тема 2.3 Управління послідовністю обчислень
Тема 2.4 Рекурентні співвідношення
Розділ 3. Основи організації даних. Покажчики та посилання
Тема 3.1 Концепція типів даних
Тема 3.2 Покажчики та посилання
Розділ 4. Процедурно-орієнтоване програмування
Тема 4.1 Підпрограми, їх різновиди та способи використання
Тема 4.2 Передача параметрів у функцію. Перевантаження функцій
Тема 4.3 Рекурсія
Розділ 5. Цифрові масиви
Тема 5.1 Одновимірні масиви
Тема 5.2 Багатовимірні масиви та масиви покажчиків.
Тема 5.3 Динамічні масиви. Контейнери.
Тема 5.4 Символьні масиви і рядки
Розділ 6. Основи модульного програмування
Тема 6.1 Організація багатофайлових програм
Тема 6.2 Основні парадигми програмування
Навчальні матеріали та ресурси
Базова література
Ковалюк Т. В. Алгоритмізація та програмування: Підручник. — Львів: «Магнолія 2006», 2013. — 400 с
Стивен Прата, Язык программирования С++. Лекции и упражнения, 5-е изд. Пер. с англ. М.: ООО "И.Д. Вильяме", 2007. - 1 184 с.
Допоміжна література
Стенли Липпман , Язык программирования С++. Пятое издание. Пер. с англ. М. : ООО "И.Д. Вильяме", 2014. - 1 194 с.
Дейтел Х. М. Как программировать на С++; пер с англ. / Х. М. Дейтел, П. Дж. Дейтел. – М. : ООО "Бином-Пресс", 2008. – 1456 с.
С++. Основи програмування. Теорія та практика: підручник / [О. Г. Трофименко, Ю. В. Прокоп, І. Г. Швайко, Л. М. Буката та ін.] ; за ред. О. Г. Трофименко. – Одеса : Фенікс, 2010. – 544 с.
Саттер Г. Новые сложные задачи на C++. — М.: Издательский дом ""Вильяме", 2005. — 272 с.
Окулов С. М. Программирование в алгоритмах. – М.: БИНОМ. Лаборатория знаний, 2002. — 341 с.
Порублев И.Н., Ставровский А.Б. Алгоритмы и программы. Решение олимпиадных задач. – М.: ООО „И.Д. Вильямс”, 2007. – 480 с.
Мэйерс С. Эффективное использование C++. 55 верных способов улучшить структуру и код ваших прграмм. – М.: ДМК Пресс, 2006. - 300 с.
Хортон А. Visual C++ 2010: полный курс.; пер. с англ. / Хортон А. – М. : ООО "И.Д. Вильямс", 2011. – 1216 с.
Головна сторінка середовища MS Visual Studio [Електронний ресурс]. – Режим доступу: http://visualstudio.com
Головна сторінка MSDN [Електронний ресурс]. – Режим доступу: http://msdn.microsoft.com
Cайт підтримки Python MSDN [Електронний ресурс]. – Режим доступу: http://python.org
Python documentation [Електронний ресурс]. – Режим доступа : https://docs.python.org/doc/7
Навчальний контент
Методика опанування навчальної дисципліни (освітнього компонента)
Лекційні заняття
Матеріали для вивчення дисципліни розміщені в електронному вигляді на сайті (в середовищі «Електронний кампус». Контент доступний студенту із будь-якого місця в мережі Інтернет.
Лекції по дисципліні проводяться із використанням сучасних мультимедійних презентаційних технологій.
№ з/п | Назва теми лекції та перелік основних питань |
Розділ 1. Основні поняття та означення | |
Поняття архітектури комп’ютера фон Неймана та програмного забезпечення Принцип використання двійкової системи числення. Принцип програмного керування роботою комп’ютера. Принцип збереження програм у пам’яті комп’ютера. Принцип адресності пам’яті. Архітектура комп’ютерів фон Неймана. Архітектура системи команд. Інформація в пам’яті комп’ютера. Позиційні системи числення. Зображення чисел у комп’ютері. Типи комп’ютерів. Програмне забезпечення. Засоби створення програм. Поняття операційних систем. Прикладне програмне забезпечення. Класифікація мов програмування. Технологія створення програми. Перетворення програми і система програмування. Походження та розвиток мови С/С++. |
|
Поняття алгоритму й основні алгоритмічні структури. Властивості та способи опису алгоритму. Алгоритмічна структура розгалуження. Алгоритмічна структура повторення |
|
Мови програмування та засоби створення програм Поняття мови програмування. Класифікація мов програмування. Олгяд сучасних мов програмування. Етапи створення і обробки тексту програми. Технології розробки програм. Моделі життєвого циклу програмних систем. Інструментальні засоби розробки програм. |
|
Розділ 2. Елементи мови С/С++. Керування порядком обчислень | |
Базові поняття мов програмування Аспекти вивчення мов програмування. Елементи мови програмування: алфавіт, лексеми та їх різновиди, константи та змінні. Поняття типу даних. Операції та їх класифікація, пріоритети операцій. Стандартні математичні функції. Вирази. Синтаксис та семантика мови програмування. |
|
Основи організації програм Структурна організація програм. Опис змінних, його різновиди, реалізація у С/С++. Організація введення-виведення даних, особливості реалізації у , С/С++. |
|
Управління послідовністю обчислень Концепція управління порядком обчислень. Типи алгоритмічних процесів. Базові алгоритмічні конструкції. Логічні основи алгоритмізації: логічне висловлювання, булева функція, основні логічні операції. Програмування лінійних процесів: оператор присвоєння, особливості його реалізації. Програмування розгалужених процесів: умовний оператор, оператор поліваріантного вибору, особливості їх реалізації. Вкладеність конструкцій вибору. Операторний блок (складений оператор). Програмування циклічних процесів: арифметичний цикл, цикл із передумовою, цикл із постумовою, особливості їх реалізації. Рекомендації щодо вибору циклів. |
|
Рекурентні співвідношення Деякі циклічні алгоритми та програми. Рекурентні послідовності та співвідношення, Степеневі ряди, Ланцюгові дроби |
|
Розділ 3. Основи організації даних. Покажчики та посилання | |
Концепція типів даних Контроль типів та системи типізації. Класифікація типів даних. Стандартні типи даних: поняття, різновиди, їх загальна характеристика. Типи даних користувача: поняття, різновиди, їх загальна характеристика, особливості реалізації у Python, С/С++. Теорія структур даних. Перетворення типів. |
|
Покажчики та посилання Організація пам’яті при роботі програми. Посилальні типи. Покажчики: поняття, опис, особливості реалізації у С/С++. Розіменування покажчиків. Посилання: поняття, опис, особливості реалізації у С/С++. Дії над покажчиками та посиланнями. Подвійний покажчик, його опис, різновиди використання. |
|
Розділ 4. Процедурно-орієнтоване програмування | |
Підпрограми, їх різновиди та способи використання Підпрограми: поняття, різновиди. Формальні та фактичні параметри підпрограм, особливості їх реалізації у С/С++. Блочна організація програм. Видимість даних у підпрограмах, глобальні і локальні змінні. Випереджуючий опис підпрограм. |
|
Передача параметрів у функцію. Перевантаження функцій Програмний стек. Способи передачі параметрів у підпрограми, особливості реалізації. Функції з аргументами за замовчуванням, особливості їх реалізації у С/С++. Функції із змінним числом параметрів, особливості їх реалізації у С/С++. Способи повернення значень із підпрограм, особливості їх реалізації у С/С++. Поняття перевантаження функції, механізм перевантаження. Вбудовані функції. Макророзширення. Шаблони функцій. Механізм застосування шаблонів функцій |
|
Рекурсія Поняття рекурсії. Рекурсивне занурення та рекурсивне повернення, глибина рекурсії. Особливості реалізація рекурсії у мовах програмування. |
|
Розділ 5. Цифрові масиви |
|
Одновимірні масиви Поняття масиву та його властивості. Базові операції обробки одновимірних масивів. Сортування масиву. Масиви як параметри. Поняття регулярного типу (масиву). Одновимірні масиви: оголошення, ініціалізація, доступ до елементів. Особливості реалізації одновимірних масивів у С/С++. Базові операції обробки одновимірних масивів, адресна арифметика. Особливості реалізації одновимірних масивів у С/С++. Типові алгоритми обробки одновимірних масивів. |
|
Багатовимірні масиви та масиви покажчиків. Багатовимірні масиви: оголошення, ініціалізація, доступ до елементів. Базові операції обробки багатовимірних масивів, їх реалізація. Типові алгоритми обробки багатовимірних масивів. Масиви-параметри, особливості їх реалізації у С/С++. Масиви покажчиків. |
|
Динамічні масиви. Контейнери. Статичні та динамічні дані. Динамічні масиви, особливості організації. Поняття контейнера (колекції). Масиви-контейнери, особливості їх організації. |
|
Символьні масиви і рядки Поняття рядка як типу даних. Тип даних string. Введення-виведення рядків. Операції з рядками. Кирилиця в консолі. Рядки широких символів. Рядки-параметри. |
|
Розділ 6. Основи модульного програмування | |
Організація багатофайлових програм Міжфайлова взаємодія. Організація бібліотек визначень. Області видимості в багатофайлових програмах. |
|
Основні парадигми програмування Поняття парадигми програмування. Класифікація основних парадигм програмування: імперативне програмування, об’єктно-орієнтоване програмування, декларативне програмування та основні його різновиди. |
Лабораторні роботи
№ з/п | Назва лабораторної роботи (комп’ютерного практикуму) | Кількість ауд. годин |
Системи числення Правила переведення чисел із однієї позиційної системи числення в іншу. |
2 | |
Середовища розробки програм | 2 | |
Обчислення арифметичних виразів | 2 | |
Організація розгалужених процесів | 2 | |
Ітераційні цикли | 4 | |
Арифметичні цикли | 4 | |
Складні цикли | 4 | |
Організація підпрограм | 4 | |
Одновимірні масиви | 4 | |
Багатовимірні масиви | 4 | |
Рядки | 4 |
Лабораторні заняття виконуються з використанням мов програмування С, С++, Python та версій середовищ розробки програм (IDE), які надаються розробниками для навчальних цілях безкоштовно. Під час їх проведення використовуються методичні вказівки до виконання лабораторних робіт по дисципліні. Для виконання кожної лабораторної роботи студенту надається не більше 4 тижнів.
В умовах дистанційного навчання усі види занять, у тому числі контрольні заходи, проводяться з використанням сервісу Zoom.
Самостійна робота студента
До самостійної роботи студента відноситься виконання індивідуальних завдань з тематики, яка виноситься на лабораторні роботи, а також опрацювання теоретичного матеріалу за наданими текстами лекцій та додатковою літературою, у тому числі за темами, які винесені на самостійне вивчення (згідно таблиці 1). Усі навчальні матеріали (текти лекцій, методичні вказівки до виконання лабораторних робіт) розміщені в електронному вигляді в середовищі «Електронний кампус». Навчальний контент доступний із будь-якого місця в мережі Інтернет.
На самостійну роботу студент має витрачати кількість годин, що співмірна із кількістю годин, проведених ним на аудиторних заняттях.
Таблиця 1. Питання, які виносяться на самостійне опрацювання
№ з/п | Назва теми, що виноситься на самостійне опрацювання |
Класична та функціональна структура комп’ютера. Технологія виконання команд мікропроцесором. | |
Правила переведення чисел із однієї позиційної системи числення в іншу. Кодування текстових даних. Кодування графічних даних. Кодування звукової інформації. Загальна характеристика операційних систем. Організація і обслуговування файлової структури на диску. Операційна система Windows. |
|
Блок-схеми алгоритмів, правила їх побудови. | |
Різновиди мов програмування високого рівня, покоління мов програмування. Середовище Visual Studio. NET. | |
Алфавіт мов програмування С/С++,Різновиди лексем, їх реалізація у С/С++, Python. Операції мов С/С, Python. Стандартні математичні функції С/С++, Python. | |
Правила пунктуації при написанні програм на С/С++. Форматоване виведення у потоці. |
|
Скорочені оператори присвоєння С/С++. Дочасне переривання циклу та дочасне переривання ітерації циклу, їх реалізація у С/С++. | |
Контроль типів та системи типізації. Різновиди цілочисельних і дійсних типів даних С/С++. | |
Безтипові покажчики. | |
Вкладеність підпрограм. | |
Стратегії передачі параметрів у функції | |
Пряма та побічна рекурсія. | |
Арифметика покажчиків С/С++. Методи внутрішнього сортування одновимірних масивів. | |
Реалізація багатовимірних масивів у С/С++. | |
Бібліотека STL, структура, функціональність. | |
Функціональність класу STRING бібліотеки STL. | |
Реалізація власних областей пам’яті у С++. Організація пакетів у Python. | |
Основні різновиди декларативного програмування: функціональне програмування, логічне програмування. |
Політика та контроль
Політика навчальної дисципліни (освітнього компонента)
Студент має вивчати дисципліну протягом семестру, дотримуючись календарного плану виконання завдань комп’ютерного практикуму, вивчення тем лекційного матеріалу та виконання контрольних і модульних контрольних робіт. Усі завдання студент має виконувати самостійно і вчасно. Завдання з лабораторної роботи вважається виконаним, якщо студент захистив його у викладача (показав працездатність, відповів на усі питання) та розмістив звіт з виконання даної роботи на Github / ClassRoom. Несвоєчасним вважається виконання завдання із затримкою більше 2 тижнів. За несвоєчасну здачу лабораторних робіт передбачені штрафні бали. Такі обмеження стимулюють студента організувати систематичне виконання завдань та не допускати значного накопичення незданих лабораторних робіт на кінець семестру.
Для перевірки як теоретичних знань, так і практичних навичок в семестрі передбачена модульна контрольна робота (МКР), що складається з двох частин, які проводяться під час семестрових атестацій.
Оцінювання студентів здійснюється згідно рейтингової оцінки рівня підготовки студентів з дисципліни. Поточний стан успішності студенти можуть бачити в системі «Електронний кампус».
Види контролю та рейтингова система оцінювання результатів навчання (РСО)
Поточний контроль
Поточний контроль результатів навчання передбачає виконання студентами контрольного завдання, лабораторних робіт, написання МКР.
Контрольне завдання виконується по темі «Системи числення». Ваговий бал за даний контрольний захід (r1) – 2 бали.
Вагові бали кожного завдання лабораторної роботи залежать від його складності і варіюються у діапазоні від 2 до 4 балів відповідно до табл. 2.
Таблиця 2. Вагові бали та критерії оцінювання комп’ютерних практикумів
№ п/п |
Назва роботи | Бали | ||||
Алгоритм | Виконання | Захист | Звіт | Сума | ||
№ 1 Обчислення арифметичних виразів | 0.5 | 0.5 | 0.5 | 0.5 | 2 | |
№ 2 Організація розгалужених процесів | 0.5 | 0.5 | 0.5 | 0.5 | 2 | |
№ 3.1 Ітераційні цикли | 0.5 | 1 | 1 | 0.5 | 3 | |
№ 3.2 Арифметичні цикли | 0.5 | 0.5 | 1 | 0.5 | 2.5 | |
№ 3.3 Складні цикли | 1 | 1 | 1 | 0.5 | 3.5 | |
№ 4 Організація підпрограм | 0.5 | 1 | 1 | 0.5 | 3 | |
№ 5.1 Одновимірні масиви | 1 | 1 | 1 | 0.5 | 3.5 | |
№ 5.2 Двовимірні масиви | 1 | 1 | 1 | 0.5 | 3.5 | |
№ 6 Рядки | 1 | 1 | 1.5 | 0.5 | 4 | |
Разом за комп’ютерні практикуми | 27 |
Критерії оцінювання комп’ютерного практикуму включають якість розробки алгоритму програми, безпомилковість її виконання, якість захисту розробленої програми та підготовки звіту щодо виконаної роботи (див. табл. 2).
Сумарний ваговий бал за даний контрольний захід (r2) складає 27 балів.
За несвоєчасну здачу комп’ютерного практикуму передбачені штрафні бали (% зниження згідно до табл. 3).
Таблиця 3. Штрафи за затримку здачі індивідуальних завдань комп’ютерного практикуму
Термін затримки | % зниження | Термін затримки | % зниження |
2 тижня | 5 | 7 тижнів | 35 |
3 тижні | 10 | 8 тижнів | 40 |
4 тижні | 15 | 9 тижнів | 45 |
5 тижнів | 20 | 10 тижнів | 50 |
6 тижнів | 25 | 11 тижнів | 55 |
7 тижнів | 30 | Більше, ніж 11 тижнів | 60 |
МКР може складатися з двох частин: теоретичної (у вигляді тесту) і практичної. Ваговий бал першої МКР – 11 балів, другої - 10 балів. Сумарний ваговий бал за даний контрольний захід (r3) – 11 балів +10 балів = 21 бал.
За виконання завдань із удосконалення дидактичних матеріалів із дисципліни передбачені заохочувальні бали (до 5 балів).
Календарний контроль
Провадиться двічі на семестр як моніторинг поточного стану виконання вимог робочої програми.
Семестровий контроль
Семестровий контроль результатів навчання проводиться у вигляді екзамену.
Умови допуску до семестрового контролю (екзамену):
зарахування усіх лабораторних робіт,
стартовий рейтинг rC ≥ 25 балів (не менше 50 % від ).
Розмір шкали рейтингу R = 100 балів, розмір стартової шкали RС = 50 балів, розмір екзаменаційної шкали RЕ = 50 балів.
Екзаменаційна оцінка складається з оцінки за результатами написання і налагодження декількох частин модульної програми відповідно до поставленої задачі, виконання практичного завдання та відповідей на короткі тестові питання.
Ваговий бал програми - 40 балів, практичне завдання оцінюється у 5 балів, тести – у 5 балів.
Підсумкова оцінка формується за результатами оцінювання знань та навичок студента в семестрі та на екзамені за формулою: R = RС + RЕ.
Підсумкова оцінка переводиться до залікової оцінки згідно з таблицею:
Кількість балів | Оцінка |
100-95 | Відмінно |
94-85 | Дуже добре |
84-75 | Добре |
74-65 | Задовільно |
64-60 | Достатньо |
Менше 60 | Незадовільно |
Не виконані умови допуску | Не допущено |
Робочу програму навчальної дисципліни (силабус):
Складено доцентом, к.т.н., доцентом кафедри АСОІУ І. Мухою
Ухвалено кафедрою ІСТ(протокол № 1 від 30.08.2021 р.)
Погоджено Методичною комісією факультету[1] (протокол № 1 від 30.08.2021 р.)
Система оцінювання результатів навчання
Система оцінювання сформованих компетентностей у студентів враховує види занять, які згідно з програмою навчальної дисципліни передбачають лекційні, лабораторні заняття, а також виконання самостійної роботи.
Оцінювання сформованих компетентностей у студентів здійснюється за накопичувальною 100-бальною системою. Поточний контроль, що здійснюється протягом семестру під час проведення лекційних, лабораторних занять і оцінюється сумою набраних балів (максимальна сума – 60 балів; мінімальна сума, що дозволяє студенту складати іспит, – 35 балів); Підсумковий/семестровий контроль проводиться у формі семестрового екзамену. Більш детальна інформація щодо оцінювання наведена в технологічній карті дисципліни.
Політики навчальної дисципліни Порушення академічної доброчесності призводить до незаліку виконання завдання або до суттєвого зниження оцінки. Максимально можливий бал за конкретним завданням ставиться за умови відповідності результатів виконання завдання студентом та його усної відповіді. Відсутність тієї або іншої складової знижує кількість балів. Під час оцінювання завдань увага також приділяється якості, самостійності та своєчасності здавання виконаних завдань викладачу, згідно з графіком навчального процесу. Якщо якась із вимог не буде виконана, то бали будуть знижені.