Программирование для лингвистовx

advertisement
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
Правительство Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"
Факультет филологии
Программа дисциплины «Программирование для лингвистов»
для направления 035800.68 «Фундаментальная и прикладная лингвистика»
для магистерской программы «Компьютерная лингвистика»
Автор программы:
Алеквсеевский Д. А., dalexeyevsky@hse.ru
Одобрена на заседании кафедры [Введите название кафедры] «___»____________ 20 г
Зав. кафедрой [Введите И.О. Фамилия]
Рекомендована секцией УМС [Введите название секции УМС] «___»____________ 20 г
Председатель [Введите И.О. Фамилия]
Утверждена УС факультета [Введите название факультета] «___»_____________20 г.
Ученый секретарь [Введите И.О. Фамилия] ________________________ [подпись]]
Москва, 201_
Настоящая программа не может быть использована другими подразделениями
университета и другими вузами без разрешения кафедры-разработчика программы.
1
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
1
Область применения и нормативные ссылки
Настоящая программа учебной дисциплины устанавливает минимальные требования к
знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности.
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных
ассистентов и студентов направления подготовки 035800.68 «Фундаментальная и прикладная
лингвистика», обучающихся по магистерской программе «Компьютерная лингвистика»,
изучающих дисциплину «Программирование для лингвистов».
Программа разработана в соответствии с:

Образовательным
стандартом
федерального
государственного
автономного
образовательного учреждения высшего профессионального образования национального
исследовательского университета «Высшая школа экономики», в отношении которого
установлена категория «национальный исследовательский университет»

Учебным
планом
университета
по
направлению
подготовки
035800.68
«Фундаментальная и прикладная лингвистика» для подготовки магистра для магистерской
программы «Компьютерная лингвистика» утвержденным в 2012г.
2
Цели освоения дисциплины
Целями освоения дисциплины «программирование для лингвистов» являются
знакомство с инструментарием языка Python, базовых понятий, структур данных и алгоритмов,
необходимых для изучения прикладных методов компьютерной лингвистики, а также для
самостоятельного решения некоторых задач компьютерной лингвистики. В курсе слушателям
преподаются основы объектно-ориентированного программирования, представления о
вычислительной сложности программ, классические алгоритмы, общие для всех приложений
программирования. С прикладной стороны, в курсе преподаются средства создания
интерфейсов, веб-сервисов и средства работы со структурированными данными.
Дополнительной целью курса является развитие навыка совместной работы в команде, для чего
слушателям преподаются необходимые знания и приёмы работы с репозиториями.
Компетенции обучающегося, формируемые в результате освоения
дисциплины
3
В результате освоения дисциплины студент должен:
Знать основные понятия объектно-ориентированного программирования (класс, объект,
атрибут, метод, наследование, инкапсуляция)
Знать инструменты для работы с исключениям в языке Python
Уметь решать задачи средствами объектно-ориентированного программирования
Уметь обрабатывать данные в формате XML средствами языка Python
Уметь пользоваться языком запросов к XML-документам XPath
Понимать устройство и свойства (асимптотическую сложность базовых операций) для
структур данных: односвязные и двусвязные списки, деревья поиска, хэш-таблицы, графы
Иметь навыки использования средств языка Python для визуализации научных данных
Иметь навыки создания простейших веб-сервисов
Приобрести опыт использования средств языка Python для решения повседневных задач
обработки массовых данных компьютерной лингвистики
2
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
Иметь навыки работы с распределённой системой контроля версий Mercurial для работы
в команде.
В результате освоения дисциплины студент осваивает следующие компетенции:
Компетенция
Код по Дескрипторы – основные признаки
ФГОС/ освоения (показатели достижения
результата)
НИУ
Способен предлагать
СК-2
концепции, модели,
изобретать и апробировать
способы и инструменты
профессиональной
деятельности
Способен осуществлять
лингвистическую
обработку текстов в
производственнопрактических целях
ПК-17
Демонстрирует способность
освоения новых сторонних
пакетов для языка
программирования Python.
Использование английской
терминологии. Чтение
документации на
английском языке. Задания,
подразумевающие
самостоятельное освоение
новых средств.
Применяет навыки
Практические занятия и
программирования для обработки домашние контрольные
текстовых данных, корпусов, задания. Задания включают
статистических данных.
примеры из
лингвистических
дисциплин, изучаемых
магистрантами.
Способен разрабатывать и ПК-18 Использует полученные навыки
совершенствовать
для автоматизации сбора данных
электронные языковые
для лингвистических систем.
ресурсы, лингвистические
компоненты
информационных систем,
лингвистические модули
компьютерных систем
обучения
4
Формы и методы обучения,
способствующие
формированию и развитию
компетенции
Практические занятия и
домашние контрольные
задания.
Место дисциплины в структуре образовательной программы
Настоящая дисциплина относится к циклу математических дисциплин, обязательных для
изучения.
Изучение данной дисциплины базируется на следующих дисциплинах:
Введение в программирование
Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и
компетенциями:
понимать, каким образом информация хранится на электронных носителях и какие способы её
обработки существуют
3
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
иметь представление об HTML, XML
уметь пользоваться текстовым редактором для редактирования исходных кодов программ
знать основы языка Python (переменные, циклы, условия, функции)
уметь строить алгоритмы для решения практических задач
знать английские эквиваленты основных терминов программирования, уметь пользоваться
документацией языка Python на английском языке.
Основные положения дисциплины должны быть использованы в дальнейшем при
изучении следующих дисциплин:
Компьютерная лингвистика
Математические основания компьютерной лингвистики
Лингвистическое программирование
Машинный перевод
Речевые технологии
Онтологии и семантические технологии
Социальные сети
Машинное обучение
Электронное представление гуманитарных знаний
Проектирование лингвистических систем и ресурсов.
5
№
Тематический план учебной дисциплины
Название раздела
Аудиторные часы
Всего
часов
Лекции
Практические
занятия
Самостоятельная
работа
1
Объектно-ориентированное
программирование (ООП) и работа с
исключениями
26
6
4
16
2
Базовые структуры данных, алгоритмы,
вычислительная сложность алгоритмов,
измерение времени работы программ
68
8
12
48
3
Распределённые системы контроля
версий и работа в команде
30
0
6
24
4
Создание графических приложений и
визуализация научных данных
24
4
4
16
5
Работа с XML
12
0
2
10
6
Решение примеров задач из
компьютерной лингвистики
40
0
10
30
7
Создание веб-сервисов
52
2
2
12
4
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
Итого:
6.
216
20
40
156
Формы контроля знаний студентов
Тип контроля
Форма контроля
2 модуль
Текущий
(неделя)
Домашнее задание
*
Практическая домашняя работа
Контрольная работа
*
Письменная работа, 120 мин.
Итоговый
Экзамен
3 модуль
Параметры
Письменный экзамен, 120 мин.
*
6.1 Критерии оценки знаний, навыков
●
Домашняя работа оценивается по двухбалльной системе (1 = сдал / 0 = не сдал). Для
некоторых заданий указываются дополнительные требования («бонусы»), при достижении
каждого из которых оценка увеличивается на 0,5 балла.
●
В оценке домашнего задания оцениваются: работоспособность программы (программа
должна запускаться и выдавать результат), использование изложенных средств и методов.
●
Для каждого домашнего задания отдельно указывается крайний срок сдачи работы.
●
Домашние работы выполняются на компьютере
●
На экзамене оценивается знание алгоритмов, структур данных, и их свойств.
●
Экзаменационная работа проводится в письменной форме.
6.2 Порядок формирования оценок по дисциплине
Преподаватель оценивает самостоятельную работу студентов по каждой из тем,
проверяя домашние работы. Оценки за самостоятельную работу студента преподаватель
выставляет в рабочую ведомость. Суммарная оценка по описанной выше шкале за
самостоятельную работу определяется перед промежуточным или итоговым контролем – Одз.
Одз может принимать значения от 0 до 10 баллов.
Накопленная оценка за текущий контроль равна оценке за домашнюю работу:
Отекущий = Одз ;
Способ округления накопленной оценки текущего контроля: арифметический.
На экзамене студент может получить не более двух дополнительных практических задач,
решение каждой из которых оценивается в 1 балл. Таким образом, результирующая оценка за
итоговый контроль в форме экзамена, выставляется по формуле, где Оэкзамен – оценка за работу
непосредственно на экзамене:
Оитоговый = 0,5·Оэкзамен + 0,5·Отекущий
5
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
Способ округления накопленной оценки промежуточного (итогового) контроля в форме
экзамена: арифметический.
В диплом ставится оценка за итоговый контроль, которая является результирующей
оценкой по учебной дисциплине.
7. Содержание дисциплины
7.1 Объектно-ориентированное программирование (ООП) и работа с исключениями
Введение. Основные понятия ООП. Приёмы применения ООП. Понятие исключения.
Обработка исключений. Способы генерации исключений. Приёмы применения исключений для
создания надёжных / дружественных пользователю программ.
7.2 Базовые структуры данных, алгоритмы, вычислительная сложность алгоритмов,
измерение времени работы программ
Введение. Асимптотические величины. Понятие вычислительной сложности алгоритма.
Модуль timeit для измерения реального времени работы программы.
Односвязные списки, алгоритмы работы с ними и их сложность. Двусвязные списки,
алгоритмы работы с ним, их сложность. Деревья, определение, основные свойства. Деревья
поиска, алгоритмы работы с ними, и их сложность. Графы, определение, основные свойства,
обход графа вширь, обход графа вглубь.
7.3 Распределённые системы контроля версий и работа в команде
Введение и основные понятия. Работа с репозиторием для хранения собственных
программ. Минимальные необходимые представления об асинхронном шифровании. Работа с
репозиторием в команде на примере сервиса http://bitbucket.org/.
7.4 Создание графических приложений и визуализация научных данных
Пакет Tkinter, основые понятия, примеры виджетов, примеры упаковщиков, обработка
событий. Конструкция lambda для обработки событий. Графические примитивы. Проблемы
визуализации научных данных на примере рисования деревьев.
7.5 Работа с XML
Пакет ElementTree, основные классы и методы. Язык запросов к XML-документам XPath
и его использование в ElementTree.
7.6 Решение примеров задач из компьютерной лингвистики
Приёмы работы с табличными данными в формате CSV. Примеры задач компьютерной
лингвистики на обработку табличных данных (совместное решение задач на семинарах).
7.7 Создание веб-сервисов
Введение. Основные понятия разработки веб-сервисов. Пакет flask, основные понятия и
методы. Понятие декораторов. Понятие и примеры шаблонов страниц. Практическое занятие по
созданию простейшего сервиса.
8.
Образовательные технологии
Рекомендуемые образовательные технологии включают лекции, семинары, практические
занятия в классе, домашние задания. Особое внимание следует уделить самостоятельным
занятиям в рамках домашних заданий и диалогу с преподавателем по вопросам, возникшим в
6
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
результате их выполнения. Для самостоятельных занятий необходимо иметь компьютер с
установленным программным обеспечением (см. программные средства в разделе 11).
Домашние задания необходимо присылать на адрес: dalexeyevsky@hse.ru.
9.
Оценочные средства для текущего контроля и аттестации студента
9.1 Тематика заданий текущего контроля
1.
2.
3.
4.
5.
Примерные вопросы/ задания для домашних заданий:
Реализовать задачу с предложенным алгоритмом средствами ООП
Для данной реализации одной из стандартных структур данных реализовать одну из базовых
операций
Написать программу, которая сравнивает данные в строках таблицы в CSV-файле с учётом
контекста
Написать программу, которая визуализирует дерево, полученное поиском из XML-документа (к
заданию прилагается алгоритм планаризации дерева и пример его реализации для случайных
деревьев)
Реализовать веб-сервис, который показывает из текстового файла строку с выбранным
номером.
9.2 Вопросы для оценки качества освоения дисциплины
Примерный список типов вопросов к экзамену:
Сочинить алгоритм решения задачи средней сложности, укладывающийся в данные
асимптотические ограничения по времени работы / памяти.
2.
Дан алгоритм, оценить асимптотически его время работы / потребности в памяти.
3.
Привести на языке Python (или любом другом языке программирования) реализацию
одного из стандартных алгоритмов для одной из страндартных структур данных.
4.
Написать на языке Python (или любом другом языке программирования) программу,
которая извлекает из файла в формате CSV или XML данные по заданным правилам.
5.
Дать описание одному из возможных действий с репозиторием. Привести пример
состояния репозитория до и после.
6.
Дана задача средней сложности. Предложить заголовки классов, методов, и названия
атрибутов, которые нужны для решения данной задачи.
7.
Дано описание программы, якобы написанной кем-то, названия функций и реализация
некоторых из них. Предложить, как нужно изменить приведённые реализации функций так,
чтобы программа стала устойчивой к пользовательским ошибкам и выдавала о них понятные
пользователю сообщения.
1.
10.
Учебно-методическое и информационное обеспечение дисциплины
10.1
●
●
Базовый учебник
Марк Лутц. Изучаем Python (4-е издание). Символ-плюс: М., 2011.
Lutz, M. Learning Python (2-е издание). O'Reilly, 2008
Основная литература
●
Конспекты лекций
●
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Алгоритмы:
построение и анализ. Вильямс: М., 2011 .
●
Guido van Rossum et al. Python Documentation. http://docs.python.org/2.7/
10.2
7
Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины «Программирование для лингвистов» для направления
035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра
●
●
●
Armin Ronacher. Flask Documentation. http://flask.pocoo.org/docs/
Joel Spolsky. Hg Init. http://hginit.com/
Bryan O'Sullivan. Mercurial: The Definitive Guide. http://hgbook.red-bean.com/
Программные средства
Для успешного освоения дисциплины, студент использует следующие программные
средства:
●
Интерпретатор языка Python версии 2.7, текстовый редактор IDLE, http://python.org/
Пакет flask, http://flask.pocoo.org/
Система контроля версий Mercurial, http://mercurial.selenic.com/
10.3
11.
Материально-техническое обеспечение дисциплины
Для проведения семинаров необходим компьютерный класс. Для проведения лекций и
семинаров необходим проектор.
Автор программы: _________________________ (Алексеевский Д. А.)
Подпись обязательна.
8
Download