Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Национальный исследовательский университет „Высшая школа экономики‟» Факультет филологии Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» для магистерской программы «Компьютерная лингвистика» 1 курс магистратуры Автор программы: Д. А. Алексеевский ([email protected]) Одобрена на заседании профессорско-преподавательского состава направления подготовки «Фундаментальная и прикладная лингвистика» «04» апреля 2013 г. Руководитель направления: Рахилина Е.В. Рекомендована секцией УМС по лингвистике, филологии и журналистике «18» мая 2013 г. Председатель: Поливанов К.М. Утверждена УС факультета филологии «14» февраля 2014 г. Ученый секретарь Никишина Е.А. ________________________ [подпись] Москва, 2012 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра 1 Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчётности. Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 035800.68 «Фундаментальная и прикладная лингвистика», обучающихся по магистерской программе «Компьютерная лингвистика», изучающих дисциплину «Введение в программирование». Программа разработана в соответствии с: Образовательным стандартом НИУ ВШЭ по направлению подготовки 035800.68 «Фундаментальная и прикладная лингвистика», магистерская программа «Компьютерная лингвистика»; Образовательной программой «Компьютерная лингвистика» подготовки магистра по направлению 035800.68 «Фундаментальная и прикладная лингвистика»; Рабочим учебным планом НИУ ВШЭ по направлению подготовки 035800.68 «Фундаментальная и прикладная лингвистика» магистерской программы «Компьютерная лингвистика», утвержденным в 2012 г. 2 Цели освоения дисциплины Цель курса — адаптировать слушателей, не имеющих опыта программирования, к изучению дальнейших дисциплин магистерской программы, связанных с использованием компьютерных технологий. В курсе слушателям преподаются теоретические основы и базовые навыки программирования с расчётом на дальнейшее использование полученных знаний для решения практических задач компьютерной лингвистики (извлечение и анализ текстовых данных, информационный поиск, машинное обучение и др.). Основное содержание курса составляют базовые приёмы программирования на языке Python, некоторые стандартные алгоритмы и регулярные выражения, а также дополнительные теоретические вопросы, связанные с работой вычислительных систем и обработкой текстовых данных. 3 Компетенции обучающегося, формируемые в результате освоения дисциплины В результате освоения дисциплины студент должен: понимать, каким образом информация хранится на электронных носителях и какие способы её обработки существуют; иметь представление о форматах, используемых для хранения текстовых данных; уметь использовать средства языка Python для реализации алгоритмов; приобрести достаточные навыки программирования на языке Python для решения практических задач, возникающих в последующих дисциплинах магистерской программы; знать язык регулярных выражений, используемый в языке Python, и уметь его применять для решения практических задач; знать английские эквиваленты всех используемых в курсе терминов и понятий, уметь пользоваться документацией языка Python и его расширений на английском языке. 2 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра Компетенция Дескрипторы – основные признаки освоения Код по ФГОС/ НИУ (показатели достижения результата) Способен планировать научноисследовательскую деятельность, проводить самостоятельные исследования и получать новые научные результаты в области профессиональной деятельности Способен анализировать языковые данные с применением качественных и количественных методов, различных инструментальных средств Способен осуществлять лингвистическую обработку текстов в производственнопрактических целях 4 Формы и методы обучения, способствующие формированию и развитию компетенции ПК-1 Использует средства Лекции, практические занятия, программирования для домашние контрольные автоматизации рутинных работы, разбор типовых вычислений. примеров. ПК-10 Воспроизводит эталонные Лекции, практические занятия, решения простых домашние контрольные лингвистических задач работы, разбор типовых (токенизация, построение примеров. частотного словаря). ПК-17 Применяет средства программирования для чтения данных из текстового файла. Лекции, практические занятия, домашние контрольные работы, разбор типовых примеров. Место дисциплины в структуре образовательной программы Настоящая дисциплина является адаптационной и предназначена для магистрантов, не изучавших аналогичной дисциплины в бакалавриате. Основные положения дисциплины должны быть использованы в дальнейшем при изучении следующих дисциплин: Компьютерная лингвистика, Математические основания компьютерной лингвистики, Лингвистическое программирование, Машинный перевод, Речевые технологии, Онтологии и семантические технологии, Социальные сети, Машинное обучение, Электронное представление гуманитарных знаний, Проектирование лингвистических систем и ресурсов. 5 № Тематический план учебной дисциплины Название темы Всего часов по дисциплине Аудиторные часы Лекции Сем. и практ. занятия Самостоятельная работа 1 Вычислительные системы и способы организации текстовых данных 6 6 0 4 2 Основы программирования на языке Python 12 2 10 28 3 Алгоритмы и их реализация на языке Python 8 4 4 20 10 4 6 20 108 16 20 72 4 Регулярные выражения и автоматическая обработка текстовых данных с помощью языка Python Итого: 3 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра Формы контроля знаний студентов 6 Тип контроля Форма контроля 1 модуль Текущий Домашнее задание * домашняя контрольная работа Итоговый Экзамен * письменный экзамен, 120 минут 6.1 Комментарий Критерии оценки знаний, навыков Домашние задания, если явно не указано иное, необходимо присылать до начала семинара. При оценивании программы в первую очередь обращается внимание на то, насколько её работа соответствует требованиям, описанным в задании. Программа, не запускающаяся из-за синтаксических ошибок, не может получить оценку выше 4 баллов. Баллы могут сниматься, в частности, за неточное выполнение задания и отсутствие разбора случаев, из-за которых при исполнении программы может произойти ошибка. Во вторую очередь могут оцениваться оптимальность решения (в смысле времени работы программы и количества строк кода) и стиль. На домашней контрольной проверяется умение реализовывать алгоритмы на языке Python и знание некоторых стандартных алгоритмов. На экзамене проверяются все знания и умения, приобретённые во время изучения настоящей дисциплины. Все контрольные мероприятия проводятся в письменном виде; все практические задания выполняются на компьютере. 6.2 Порядок формирования оценок по дисциплине Преподаватель каждую неделю оценивает самостоятельную работу студентов, проверяя домашние работы. Оценки за самостоятельную работу студента выставляются в рабочую ведомость. Накопленная оценка по десятибалльной шкале за самостоятельную работу определяется перед промежуточным или итоговым контролем — Осам. р. Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: Онакопленная= Отекущий Оценка за текущий контроль равна оценке за домашнюю контрольную работу: Отекущий = Одз. Результирующая оценка за итоговый контроль в форме экзамена выставляется по следующей формуле, где Оэкзамен — оценка за работу непосредственно на экзамене: Оитоговый = 0,4·Оэкзамен + 0,2·Отекущий + 0,4·Осам. р. 7 Содержание дисциплины 1. Обработка данных без использования языков программирования. Хранение данных на электронных носителях, единицы хранения информации. Хранение текстов: кодирование символов, стандарт Unicode. Использование текстового редактора Notepad++ для редактирования 4 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра текстов и поиска. Формат CSV. Общее представление об устройстве других текстовых языков разметки на примере HTML и XML. 2. Основы программирования на языке Python. 2.1. Введение. Принцип работы программ. Процесс разработки программы, отладка. Возможные ошибки в программе (синтаксические ошибки, ошибки во время исполнения). Использование интерпретатора языка Python: интерактивный режим, интерпретация программного кода в файле. 2.2. Основные понятия и синтаксические конструкции. Переменная, значение, присваивание, оценка выражения. Операторы. Арифметические операторы, логические операторы, операции над строками, порядок выполнения операций. Встроенные математические функции. Функции для работы со строками. Типы данных. 2.3. Операторы для реализации нелинейных алгоритмов. Условный оператор, операторы цикла while и for. Прерывание цикла. Оформление блоков кода в Python и других языках. 2.4. Функции, аргументы, возвращаемые значения. Модули и библиотеки в Python. Чтение и запись файлов. Работа со случайными числами и вероятностными распределениями. 2.5. Структуры данных. Массивы, адресация элементов массива, функции для работы с массивами, срезы массивов. Строка как массив. Ассоциативные массивы (словари), способы их задания в Python и функции для работы с ними. 3. Алгоритмы и их реализация на языке Python. 3.1. Разбор простых алгоритмов (нахождение максимума массива, алгоритм Евклида и т. п.), их представление в виде блок-схем, псевдокода и реализации на языке Python. 3.2. Задача сортировки массива, её связь с задачей поиска. Квадратичные алгоритмы сортировки массива (сортировка пузырьком и др.). Эффективные алгоритмы (heapsort, mergesort и/или qsort). Поиск информации в отсортированном массиве методом бисекции, его сложность. 4. Регулярные выражения и их использование для поиска и обработки информации. 4.1. Понятие регулярного выражения, примеры регулярных выражений с объяснением принципов их действия. Функции языка Python для работы с регулярными выражениями. Предварительная компиляция регулярных выражений. Использование регулярных выражений для поиска и замены в Python и редакторе Notepad++. 4.2. Основные элементы регулярных выражений: диапазоны символов, итерация (оператор «звёздочка»), количество повторений, дизъюнкция, escape-последовательности для обозначения системных символов и групп символов (\w, \d и т. п.), символы начала и конца строки. «Жадные» и «нежадные» квантификаторы. 4.3. Группы и их использование для анализа данных. Нумерация групп в выражении. Токенизация строк с помощью регулярных выражений и функций Python. Прогрессивные и регрессивные незахватывающие группы. Обратные ссылки (backreferences). Использование групп для замены. 8 Образовательные технологии Для изучения дисциплины необходим компьютер и следующее программное обеспечение: текстовый редактор Notepad++ или любой другой, поддерживающий подсветку синтаксиса, переключение между разными кодировками и поиск с использованием регулярных выражений; интерпретатор языка Python. Домашние задания необходимо присылать электронной почтой на адрес [email protected]. 9 Оценочные средства для текущего контроля и аттестации студента 5 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Введение в программирование» для направления 035800.68 «Фундаментальная и прикладная лингвистика» подготовки магистра Вопросы для оценки качества освоения дисциплины 9.1 Примерный список типов вопросов к контрольным и зачётам по курсу: Реализовать на языке Python алгоритм средней сложности (предполагаемая длина менее 150 строк кода) по текстовому описанию. Реализовать на языке Python программу, читающую и пишущую CSV-файлы (например, во входном файле по одному слову на строке, в выходном файле для каждого слова указано количество его упоминаний) Написать регулярное выражение для поиска или замены определённой информации в тексте. Использовать регулярные выражения и язык Python для извлечения свойств текста (например, найти все даты). 10 Учебно-методическое и информационное обеспечение дисциплины 10.1 Основная литература Конспекты лекций 10.2 Дополнительная литература Марк Лутц. Изучаем Питон (4-е издание). Символ-плюс: М., 2011 Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ. Вильямс: М., 2011 Джеффри Фридл. Регулярные выражения (3-е издание). Символ-плюс: М., 2008 (главы из книги) Интернет-ресурсы Документация по языку Python: http://docs.python.org/ 10.3 Программные средства текстовый редактор Notepad++ или любой другой, поддерживающий подсветку синтаксиса, переключение между разными кодировками и поиск с использованием регулярных выражений; интерпретатор языка Python (http://www.python.org/download/). 11 Материально-техническое обеспечение дисциплины Для проведения семинаров необходим компьютерный класс. Для проведения лекций и семинаров необходим проектор. Автор программы: _____________________________ (Д. А. Алексеевский) Подпись обязательна. 6