МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального образования
«Новосибирский государственный университет» (НГУ)
Факультет информационных технологий
УТВЕРЖДАЮ
_
« _» _ 20_г.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ»
НАПРАВЛЕНИЕ ПОДГОТОВКИ 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ
ТЕХНИКА»Квалификация (степень) выпускника Бакалавр Форма обучения очная Новосибирск Программа дисциплины «Парадигмы программирования» составлена в соответствии с требованиями ФГОС ВПО к структуре и результатам освоения основных образовательных программ бакалавриата по «профессиональному» циклу по направлению подготовки «Информатика и вычислительная техника», а также задачами, стоящими перед Новосибирским государственным университетом по реализации Программы развития НГУ.
Автор: Городняя Л.В., к.-ф.м.н., доцент Факультет информационных технологий Кафедра Систем информатики 1. Цели освоения дисциплины Целями освоения дисциплины «ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ» являются:
- систематизация знаний о возможностях и особенностях применения различных парадигм программирования;
- начальное формирование точки зрения аналитика, способного сделать обоснованный выбор парадигмы программирования для решения задач разного типа, умеющего определить критерии этого выбора;
- знание парадигм программирования, успешно применяемых на каждом этапе полного жизненного цикла программного изделия;
- представление о взаимосвязи между показателями качества программы и качества процесса ее разработки на базе основных парадигм программирования;
- видение проблем развития и применения парадигм программирования в разных аспектах – методологическом, управленческом, инструментальном, организационном, стоимостном, внедренческом.
Указанные цели в полной мере отвечают основным целям данной магистерской программы:
- подготовка элитных специалистов для научно-исследовательской деятельности в области применения современных парадигм программирования для науки и производства на основе фундаментального образования, позволяющего выпускникам быстро адаптироваться к меняющимся потребностям общества.
- развитие у студентов личностных качеств и формирование общекультурных и профессиональных компетенций в соответствии с ФГОС ВПО по данному направлению подготовки.
1. Место дисциплины «ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ» в структуре программы бакалавриата по направлению подготовки «Информатика и вычислительная техника»
Данная дисциплина относится к циклу профессиональных дисциплин М2 (вариативная часть). Поддержан дистанционный вариант обучения. С другими частями образовательной программы данная дисциплина соотносится следующим образом:
Дисциплины, предшествующие по учебному плану:
Логические основы программирования Объектно-ориентированное программирование Методы трансляции и компиляции Программирование на языке высокого уровня Основы параллельного программирования Требования к первоначальному уровню подготовки обучающихся для успешного освоения дисциплины:
Уровень «знать»:
Основные понятия и конструкции языков высокого уровня (переменные, константы, выражения, ветвления, процедуры, функции, указатели) Элементы математической логики Базовые схемы описания программ и процессов Важнейшие результаты теории программирования Формальные модели вычисления и управления вычислениями Уровень «уметь»:
Умение проектировать и реализовывать программы на одном из языков низкого Умение составлять и отлаживать программы на языках программирования Умение использовать правила логического вывода и логические операции при написании программы Умение применять базовые схемы и спецификации формальных моделей Дисциплины, последующие по учебному плану:
Итоговая государственная аттестация Технология разработки программного обеспечения Задачи и методы параллельного программирования Логическое программирование Системы и методы искусственного интеллекта Технологии системного программирования Языки, методы и технология параллельного программирования Научно-методический практикум Научно-исследовательская работа 2. Компетенции обучающегося, формируемые в результате освоения дисциплины
«ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ»
В результате освоения дисциплины студент должен:Знать концепции и идеи, на которых основано многообразие современных парадигм программирования и компьютерных- языков проблемы, решаемые при организации жизненного цикла программы особенности эволюции средств и методов производства программ.
характеристики парадигм программирования и компьютерных- языков как стиля мышления и подхода к постановке и решению задач основные подходы к выбору языковых средств при организации процесса Уметь выполнять анализ парадигм программирования и компьютерных языков для удовлетворения требований и создания сценариев использования формализовать и представить концепцию разрабатываемой прогнозировать трудоемкость жизненного цикла программного изделия в зависимости от выбора парадигм программирования и компьютерных провести обучение и консультирование персонала в рамках своей Владеть типовыми парадигмами программирования и компьютерных языков, применяемых для автоматизации процесса разработки программ В результате освоения дисциплины у учащегося формируются следующие компетенции:
Общекультурные компетенции:
Способность совершенствовать и развивать свой интеллектуальный и общекультурный уровень (ОК-1) Способность к самостоятельному обучению новым методам исследования, к изменению научного и научно-производственного профиля своей профессиональной деятельности (ОК-2) Способность свободно пользоваться русским и иностранным языками, как средством делового общения (ОК-3) Способность самостоятельно приобретать с помощью информационных технологий и использовать в практической деятельности новые знания и умения, в том числе в новых областях знаний, непосредственно не связанных со сферой деятельности (ОК-6) Способность к профессиональной эксплуатации современного оборудования и приборов (в соответствии с целями магистерской программы) (ОК-7) Способность использовать углубленные знания правовых и этических норм при оценке своей деятельности, ее социальных последствий (ОК-8) Профессиональные компетенции:
Способность применять перспективные методы исследования и решения профессиональных задач на основе знания мировых тенденций развития вычислительной техники и информационных технологий (ПК-1) Способность разрабатывать концептуальные и теоретические модели решаемых научных проблем и прикладных задач (ПК-2) Способность планировать научно-исследовательскую деятельность, анализировать риски, управлять проектами, командой проекта (ПК-3)
ПРОГРАММИРОВАНИЯ»
Общая трудоемкость дисциплины составляет 5 зачетных единиц, 180 уч.часов).1.1. Многоликое программирование 1.2. Методы определения и спецификации языков программирования 1.3. Венский метод определения языков программирования 1.4. Операционная и реализационная семантика 1.5. Абстрактная машина 1.6. Интерпретаторы 1.7. Компиляторы Языки высокого уровня 2.1. Стандартное (системное) программирование 2.2. Императивно-процедурная парадигма 2.3. Функциональное программирование 2.4. Схемы отложенных и опережающих вычислений (ленивые и жадные) 2.5.Функции высших порядков 2.6. Декларативное (логическое) программирование 2.7.Объектно-ориентированное программирование 3.1. Ассемблеры 3.2. Машино ориентированное программирование 3.3. Макрообработка данных 3.4. Языки управления процессами 3.5.Языки управления базами 3.6.Языки разметки 4. Языки сверхвысокого уровня.
4.2.Параллельное программирование 4.3.Оптимизация и компиляция программ.
4.4.Языки моделирования проектов 4.5.Теоретико-множественные 4.6.Языки презентаций 4.7.Учебные языки 5. Заключение. Разработка программ 5 15 2 10 устный опрос Лабораторная работа 1. Знакомство средств подготовки и отладки программ Лабораторная работа 2.
рекурсия, функциональный базис Лабораторная работа 3.
Лабораторная работа 4. Анонимная Лабораторная работа 5. Функции Лабораторная работа 6. Функции map, reduce, filter Лабораторная работа 7. Замыкания Лабораторная работа 8.
Лабораторная работа 9.
Лабораторная работа 10.
Лабораторная работа 11. Подсчёт Лабораторная работа 12.
Задания по языку F# Лабораторная работа 13.
Анализ заголовков типа MIME.
Лабораторная работа 14.
форматов.
Лабораторная работа 15.
слов в текст и других метрик Лабораторная работа 16.
Реализация архиватора. Сравнение энергичного и ленивого стилей организации вычислений 5. Образовательные технологии При проведении курса широко используются активные и интерактивные формы проведения занятий, в том числе:
компьютерная симуляция моделей систем, разбор конкретных ситуаций, коллективная работа, проектная форма выполнения заданий, учебные мини-конференции, элементы дистанционной поддержки обучения, встречи и семинары с представителями российских и зарубежных ITкомпаний, государственных и общественных организаций, мастер-классы экспертов и специалистов Удельный вес занятий, проводимых в интерактивной форме, составляет до процентов. Доля лекционных занятий от общего числа аудиторных занятий составляет до 40%.
6. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины и учебно-методическое обеспечение самостоятельной работы студентов Виды и порядок выполнения самостоятельной работы 1. Оформление и сдача Лабораторный Прием заданий с См. Раздел 6. 2. Подготовка рефератов Теоретическая Задания по написанию См. разделы 3. Подготовка к экзамену Теоретическая Итоговая аттестация в См. разделы Самостоятельная работа сводится к программированию этюдов с использованием разных систем программирования на различных языках, позволяющих почувствовать различия в подходах к подготовке программ и постановке задач.
6.1. Примерная тематика рефератов Темы рефератов:
1) Сравнительный анализ парадигм программирования и компьютерных языков 2) Сравнение и описание основных семантических систем, присущих конкретным парадигмам программирования и компьютерных языков 6.2. Перечень примерных контрольных вопросов и заданий для самостоятельной работы.
Провести сравнительный анализ работы с память в двух разных языках.
Описать специфику вычислений в языках императивного программирования.
Представить отличия императивной и функциональной модели вычислений.
Дать характеристику особенностей логического программирования в сравнении с функциональным и ООП.
Привести примеры преимуществ ООП в сравнении с другими основными парадигмами 6.3. Примерная тематика этюдов для практических занятий.
Реализовать модель интерпретатора небольшого подъязыка Написать программу синтаксического анализа для фрагмента заданного языка программирования Подготовить макет семантической системы работы со стековой памятью Отладить процедуру отладки подсистемы управления процессами в данном языке Запрограммировать один из известных алгоритмов обхода графа, нагруженный некоторыми действиями.
6.4. Примерный перечень вопросов к экзамену по всему курсу.
1. Приведите примеры различных стилей и техник программирования 2. Венский метод определения языков программирования 3. Особенности программирования на ассемблере 4. Обработка программ на языке F# 5. Ленивый стиль обработки данных.
6. Средства управления процессами в языке Haskell 7. Общая характеристика императивного программирования 8. Общая характеристика функционального программирования 9. Общая характеристика логического программирования 10. Общая характеристика объектно-ориентированного программирования 11. Язык теоретико-множественного программирования SETL как пример языка сверхвысокого уровня.
12. Параллельное программирование на языке APL 13. Компиляция программ как синтаксически управляемый обработчик данных 14. Компьютерные языки, поддерживающие разработку распределенных информационных систем 15. Мемоизация 16. Параллельное программирование на языке Sisal 17. Особенности современных интерфейсов на примере HomeLisp 7. Учебно-методическое и информационное обеспечение дисциплины а) основная литература:
1. Городняя Л.В. Парадигмы программирования. – М.: ИнтернетУниверситет Информационных технологий. -: http://www.intuit.ru, 2. Гарсиа-Молина Г., Ульман Дж.Д., Уидом Д. Системы баз данных.
Полный курс. – М.: Издательский дом “Вильямс”, 2003.
3. Сошников Д. В. Программироване на F#. – М.: ДМК Пресс, 2011. – 4. C# Language Specification Version 3. 5. Файфель Б.Л. http://homelisp.ru/ - Рабочая версия системы программирования для языка Homelisp 6. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления.- СПб.: БХВПетербург, 2002. – 608 с.
б) дополнительная литература:
1. Калинин А.Г., Мацкевич И.В. Универсальные языки программирования.
Семантический подход. – М.: Радио и связь, 1991.
2. Себеста Р.В. Основные концепции языков программирования. 5-е издание. – М.:
Издательский дом “Вильямс”, 2001.
3. Graham P. ANSI Common Lisp. //Prentice Hall, 1996. – 432p.
4. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. – М.: Бином, 1999.
5. Фатрелл Р.Т., Шафер Д.Ф., Шафер Л.И. Управление программными проектами: достижение оптимального качества при минимуме затрат. – М.:
Издательский дом “Вильямс”, 2003.
6. Становление Новосибирской школы программирования / Под ред. проф.
И.В.Поттосина. Новосибирск, 2001. 195 с.
7. Таненбаум Э., ван Стеен М. Распределенные системы. Принципы и парадигмы. СПб.: Питер, 2003. – 877 с.
8. Уоткинс Д., Хаммонд М., Эйбрамз Б. – Программирование на платформе.Net.
9. Стивен Р. Палмер, Джон М.Фелсинг. Практическое руководство по функционально-ориентированной разработке ПО. М.: Вильямс, 2002. 10. Б. Страуструп. Язык программирования С++. Третье издание. – М.: ДМК в) программное обеспечение и Интернет-ресурсы:
MS Office (Word, PowerPoint);
Linux, GNU Clisp, Forth, Perl, Python, HomeLisp, C#, F# Ресурсы Интернета по парадигмам программирования и компьютерных- языков:
http://en.wikipedia.org/wiki/Programming_paradigms http://haskell.org/aboutHaskell.html - Материалы по языку Haskell Непейвода Н.Н. Стили и методы программирования. – М.: Интернет-Университет Информационных технологий. -: http://www.intuit.ru, http://www.gnu.org – добровольческое движение по разработке свободно распространяемого программного обеспечения http://ru.wikipedia.org - открытая всемирная энциклопедия, раздел на русском языке (более полумиллиона статей) Курсы Интернет университета информационных технологий. – url: http://www.intuit.ru.
Технологии XML. World Wide Web Consortium. – url: http://www.w3.org.
http://www.cons.org/cmucl/ - Сайт с материалами по особо эффективной реализации Lisp-а - CMUCL http://www.literateprogramming.com Сайт с материалами по грамотному программированию. Кнут Д. Literate programming http://www.smalltalk.ru – сайт с материалами по языку SmallTalk http://www.parallel.ru - сайт Вл.В Воеводина по суперкомпьютерам и параллельным вычислениям http://en.wikipedia.org/wiki/Programming_paradigms http://haskell.org/aboutHaskell.html – Материалы по языку Haskell.
http://refal.org/rf5_frm.htm – Материалы по языку Рефал.
http://www.erlang.org – Официальный сайт языка Erlang.
http://www.gwydiondylan.org/drm/drm_7.htm – Официальный сайт языка Dylan.
http://www.literateprogramming.com Сайт с материалами по грамотному программированию. Кнут Д. Literate programming.
http://www.optim.ru/cs/1998/4/corba/corba.asp – Сайт с материалами по основам CORBA 8. Материально-техническое обеспечение дисциплины Аудиторный класс Компьютерный класс Ноутбук и мультимедиа проектор для презентаций Рецензент (ы) _ Программа одобрена на заседании Методической комиссии ФИТ от _ года, протокол №