МИНОБРНАУКИ РОССИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
«Алтайский государственный университет»

Языки программирования высокого уровня
рабочая программа дисциплины

Закреплена за кафедройКафедра вычислительной техники и электроники
Направление подготовки09.03.01. Информатика и вычислительная техника
ПрофильИнформатика и вычислительная техника
Форма обученияОчная
Общая трудоемкость3 ЗЕТ
Учебный план09_03_01_ИиВТ-1-2020
Часов по учебному плану 108
в том числе:
аудиторные занятия 42
самостоятельная работа 66
Виды контроля по семестрам
диф. зачеты: 3

Распределение часов по семестрам

Курс (семестр) 2 (3) Итого
Недель 18
Вид занятий УПРПДУПРПД
Лекции 18 18 18 18
Лабораторные 24 24 24 24
Сам. работа 66 66 66 66
Итого 108 108 108 108

Программу составил(и):
Ст. тр.-преп., Шмаков И.А.

Рецензент(ы):

Рабочая программа дисциплины
Языки программирования высокого уровня

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 09.03.01 Информатика и вычислительная техника (уровень бакалавриата) (приказ Минобрнауки России от 19.09.2017 г. № 929)

составлена на основании учебного плана:
09.03.01 Информатика и вычислительная техника
утвержденного учёным советом вуза от 30.06.2020 протокол № 6.

Рабочая программа одобрена на заседании кафедры
Кафедра вычислительной техники и электроники

Протокол от 08.06.2020 г. № 79/19-20
Срок действия программы: 2020-2021 уч. г.

Заведующий кафедрой
Зав. кафедрой: к.ф.-м.н., Пашнев Владимир Валентинович, доц., зав. кафедрой "Вычислительной техники и электроники"

Визирование РПД для исполнения в очередном учебном году

Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2020-2021 учебном году на заседании кафедры

Кафедра вычислительной техники и электроники

Протокол от 08.06.2020 г. № 79/19-20
Заведующий кафедрой Зав. кафедрой: к.ф.-м.н., Пашнев Владимир Валентинович, доц., зав. кафедрой "Вычислительной техники и электроники"

1. Цели освоения дисциплины

1.1.формирование у обучающихся базовых знаний о синтаксисе языков программирования: Python 3, Ruby, Perl, Go и их возможности;
формирование культуры создания читабельного кода;
формирование умения осуществлять декомпозицию проекта ПО на функции, объекты и модули;
формирование навыка проектирования и разработки ПО с использованием системы контроля версий, в том числе в рабочей группе.

2. Место дисциплины в структуре ООП

Цикл (раздел) ООП: Б1.О.04

3. Компетенции обучающегося, формируемые в результате освоения дисциплины

ОПК-2: Способен использовать современные информационные технологии и программные средства, в том числе отечественного производства, при решении задач профессиональной деятельности;
ОПК-8: Способен разрабатывать алгоритмы и программы, пригодные для практического применения;
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.базовый синтаксис языков программирования: Python 3, Ruby, Perl, Go и их возможности;
принципы формирования читабельного кода;
приёмы разработки программ «сверху-вниз» и «снизу-вверх»;
идеологию модульного и объектно-ориентированного подхода;
типовые решения, применяемые для создания программ.
3.2.Уметь:
3.2.1.разрабатывать читабельные программы;
использовать как встроенную, так и доступную в Сети документацию по библиотекам;
подключать дополнительные модули и стандартные модули и пакеты;
применять объектно-ориентированный подход для написания программ;
разрабатывать программы как индивидуально, так и в команде, с использованием современных средств написания и отладки программ.
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.использования интегрированных сред разработки (IDE) для написания программ;
использования интерактивной консоли для интерпритируемых языков программирования;
основными командами системы контроля версий git;
отладки и интроспекции чужого программного кода.

4. Структура и содержание дисциплины

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Лекционный блок
1.1. Введение в курс. Деление языков программирования на уровни. Основы языков программирования высокого уровня: Python 3, Ruby, Perl, Go. Правила создания читабельного кода, на примере языка программирования Python 3 с использованием PEP8. Лекции 3 2 Л1.1, Л1.2, Л1.3, Л2.3, Л3.1, Л3.2, Л3.3, Л2.4, Л2.5, Л1.4
1.2. Базовые типы данных. Условный оператор IF-ELSE. Вложенные и каскадные ветвления. Логические операции. Циклы. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3, Л2.6, Л2.7, Л1.6
1.3. Функции функций. Объявление функций. Подключение модулей. Возврат по стеку вызовов. Парадигмы программирования. Процедурное программирование. Объектно-ориентированное программирование. Функциональное программирование. Лекции 3 2 Л1.1, Л2.1, Л2.2, Л3.1, Л3.2, Л3.3
1.4. Однострочный Perl. Обработка текстовых данных на примере языка программирования Perl. Построение графиков с помощью программы Gnuplot и python3-matplotlib. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3, Л1.5
1.5. Необходимость Coding Style. Стиль программирования PEP8. Принцип именования переменных и функций. Документация функций. Ограничение ответственности функции и её длина (50 строк). Модульное программирование. Цель и принцип разделения на модули. Создание модулей и пакетов. Возможности инструкции import. Документация проекта. Системы контроля версии. Базовые команды Git. Групповая работа и разделение обязанностей. Распределение ролей в проекте. Структурное программирование. Декомпозиция. Проектирование «сверху-вниз». Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3
1.6. Классы и объекты. Классы и объекты в Python. Создание и инициализация объекта. Инкапсуляция ответственности в класс. Введение в ООП Принцип единственной ответственности класса. Отношения между классами. Наследование и композиция. Ассоциация. Диаграмма классов UML. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3
1.7. Документация проекта. Проработка интерфейсов модулей/функций. Тестирование проекта. Контроль качества doctest. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3
1.8. Создание графических программ с использованием библиотеки Tkinter. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3
1.9. Библиотеки NumPy, SciPy и другие используемые в решении различных задач. Лекции 3 2 Л1.1, Л3.1, Л3.2, Л3.3
Раздел 2. Лабораторный блок
2.1. Базовые лабораторные работы на языках программирования: Python3, Ruby, Go. Лабораторные 3 8 Л1.2, Л3.1, Л3.2, Л3.3, Л1.4, Л2.7
2.2. Обработка текстовых данных на языке программирования Perl. Лабораторные 3 4 Л3.1, Л3.2, Л3.3, Л1.5
2.3. Построение графиков с помощью программы Gnuplot и пакет python3-matplotlib. Обработка изображений. Лабораторные 3 4 Л3.1, Л3.2, Л3.3
2.4. Разработка программы на ООП. Рефакторинг программы с процедурного типа на объектно-ориентированный. Лабораторные 3 4 Л3.1, Л3.2, Л3.3
2.5. Разработка графической программы с использованием библиотеки Tkinter, моделирующую солнечную систему (групповое задание). Лабораторные 3 4 Л3.1, Л3.2, Л3.3
Раздел 3. Блок самостоятельных работ
3.1. Основы языков программирования: Python3, Ruby, Perl и Go. Базовые типы данных. Конструкции используемые в данных языках программирования. Сам. работа 3 12 Л3.1, Л3.2, Л3.3
3.2. Изучение принципов работы систем контроля версий. Изучение основных команд для работы с Git. Сам. работа 3 8 Л3.1, Л3.2, Л3.3
3.3. Освоение принципов работы с библиотекой python3-matplotlib. Основ работы с Gnuplot. И использование Perl для обработки текстовых данных Сам. работа 3 8 Л3.1, Л3.2, Л3.3
3.4. Освоение принципов: функционального программирования, процедурного программированиея, объектно-ориентированного программирования. Работа с UML. Сам. работа 3 14 Л3.1, Л3.2, Л3.3
3.5. Проектирование в команде проекта группового задания и его реализация. Сам. работа 3 24 Л3.1, Л3.2, Л3.3

5. Фонд оценочных средств

5.1. Контрольные вопросы и задания
Контрольные вопросы к зачету/экзамену:
1. Понятие алгоритма. Алгоритмическая система. Алгоритмизация.
2. Технология разработки алгоритмов. Базовые алгоритмические структуры.
3. Парадигмы программирования. Развитие языков программирования.
4. Стандартные типы данных в языках программирования: Python3, Ruby, Perl и Go.
5. Операторы ветвления, циклы в языках программирования: Python3, Ruby, Perl и Go.
6. Принципы создания рекурсивных функций.
7. Обработка текстовых данных с помощью языка программирования Perl.
8. Обработка текстовых данных на языках программирования: Python3, Ruby и Go.
9. Графическая библиотека Tkinter.
10. Научные библиотеки NumPy и Scipy.
11. Построение графиков с помощью Gnuplot и python3-matplotlib.
12. Функции в языке программирования Python3, Ruby и Go. Объявление и определение функций.
13. Функции в языке программирования Python3, Ruby и Go. Локальные и глобальные переменные. Строки, массивы и структуры в качестве параметров функций.
14. Функции в языке программирования Python3, Ruby и Go. Рекурсия.
15. Организация хеш-таблиц для быстрого доступа к данным.
5.2. Темы письменных работ (эссе, рефераты, курсовые работы и др.)
оформление отчёта по командной работе.
5.3. Фонд оценочных средств
Фонд оценочных средств представлен в Приложении (документ ФОС_Языки программирования высокого уровня.doc)
Приложения

6. Учебно-методическое и информационное обеспечение дисциплины

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Синицын С.В., Михайлов А.С., Хлытчиев О.И. Программирование на языке высокого уровня: учебник М.: Академия, 2010
Л1.2 Хахаев И. А. Практикум по алгоритмизации и программированию на Python: курс М.: Национальный Открытый Университет «ИНТУИТ», 2016//ЭБС «Университетская библиотека online» http://biblioclub.ru/index.php?page=book&id=429256&sr=1
Л1.3 Саммерфильд М. Программирование на Go. Разработка приложений XXI века: Уровень образования: Бакалавриат, Магистратура Москва : ДМК Пресс,, 2013 https://e.lanbook.com/book/69944
Л1.4 Фултон Х., Арко А. Путь Ruby: Издательство "ДМК Пресс", 2016 https://e.lanbook.com/book/97341
Л1.5 Мельников С. В. Регулярные выражения Perl и их применение: Учебная литература для ВУЗов Национальный Открытый Университет «ИНТУИТ», 2016 http://biblioclub.ru/index.php?page=book_red&id=428811
Л1.6 Северенс Ч. Введение в программирование на Python: Учебная литература для ВУЗов Национальный Открытый Университет «ИНТУИТ», 2016 http://biblioclub.ru/index.php?page=book_red&id=429184
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Сергиевский Г.М., Волченков Н.Г. Функциональное и логическое программирование: учеб. пособие для вузов М.: Академия, 2010
Л2.2 Г. М. Сергиевский, Н. Г. Волченков Функциональное и логическое программирование: учеб. пособие для вузов Академия, 2010
Л2.3 Л. Рамальо Python. К вершинам мастерства: ДМК Пресс, 2016//ЭБС издательства «Лань» https://e.lanbook.com/book/93273
Л2.4 Эдельсон Д., Лю Г. JRuby. Сборник рецептов: Научно-популярная литература Издательство "ДМК Пресс", 2010 https://e.lanbook.com/book/1264
Л2.5 Хартл М. Ruby on Rails для начинающих: Издательство "ДМК Пресс", 2017 https://e.lanbook.com/book/90110
Л2.6 Златопольский Д.М. Основы программирования на языке Python: Учебники Издательство "ДМК Пресс", 2017 https://e.lanbook.com/book/97359
Л2.7 Буйначев С. К., Боклаг Н. Ю. Основы программирования на языке Python: Учебники и учебные пособия для ВУЗов Издательство Уральского университета, 2014 http://biblioclub.ru/index.php?page=book_red&id=275962
6.1.3. Дополнительные источники
Авторы Заглавие Издательство, год Эл. адрес
Л3.1 Зацепин П.М. Основы программирования. Типизация, простые типы данных, ввод-вывод и операции выбора: метод. указания по выполнению лаб. работ Барнаул: Изд-во АлтГУ, 2009
Л3.2 Зацепин П.М. Основы программирования. Массивы, циклы, множественный выбор: метод. указ. по выполнению лаб. работ Барнаул: Изд-во АлтГУ, 2009
Л3.3 Зацепин П.М. Базовые принципы программирования: метод. указания по выполнению лаб. работ Барнаул: Изд-во АлтГУ, 2009
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет"
Название Эл. адрес
Э1 Golang - изучаем язык программирования GO https://golangs.org/
Э2 Язык Go для начинающих _ Хабр https://habr.com/ru/post/219459/
Э3 Ruby — Викиучебник https://ru.wikibooks.org/wiki/Ruby
Э4 Ruby Programming — Wikibooks, open books for an open world https://en.wikibooks.org/wiki/Ruby_Programming
Э5 Ruby — Документация https://www.ruby-lang.org/ru/documentation/
Э6 Некоторые сведения о Perl 5 — Викиучебник https://ru.wikibooks.org/wiki/%D0%9D%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_Perl_5
Э7 Perl Programming — Wikibooks, open books for an open world https://en.wikibooks.org/wiki/Perl_Programming
Э8 Python_Учебник Python 3.1 — Викиучебник https://ru.wikibooks.org/wiki/Python/%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_Python_3.1
Э9 Welcome to Python.org https://www.python.org/
Э10 Gnuplot — Викиучебник https://ru.wikibooks.org/wiki/Gnuplot
Э11 Курс в Мудле Языки программирования высокого уровня https://portal.edu.asu.ru/course/view.php?id=6562
6.3. Перечень программного обеспечения
ОС: Debian GNU/Linux или LinuxMint
Интерпретаторы и компиляторы для языков программирования: Python3, Ruby, Perl и Go.
Программа для построения графиков: Gnuplot.
Распределённая система управления версиями: Git.
TeXLive с набором для работы с TeX (LaTeX/XeLaTeX), Beamer, Biber.
6.4. Перечень информационных справочных систем
использование не предусмотрено.

7. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное)
419К лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации; Учебная мебель на 17 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; компьютеры: NAIO Corp Z520, НЭТА - 4 in - 13 ед.

8. Методические указания для обучающихся по освоению дисциплины

Изучение курса «Языки программирования высокого уровня» предполагает последовательное изучение всех лекций и примеров программ представленных в разделе «Ресурсы»:
изучение материалов лекций;
ответы на вопросы по лекциям;
прохождение всех итоговых тестов по каждой теме курса;
изучение материалов курса.

Рекомендуется лекционный материал изучать в тот же день, когда была лекция или позднее. После освоения всего лекционного материала рекомендуется изучить ещё раз все материалы представленные в курсе. После этого преступить к выполнению итоговых тестов по курсу.

Зачёт/экзамен проходит в виде лабораторного занятия на котором студент получает билет в котором представлен один вопрос по теории и 2 практических задания, которые нужно реализовать на одном из изученных языков программирования.