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