Правительство Российской Федерации Государственное образовательное бюджетное учреждение высшего профессионального образования Государственный университет – Высшая школа экономики Факультет БИЗНЕС-ИНФОРМАТИКИ Программа дисциплины Программирование прикладных задач для направления 010500.62– Прикладная математика и информатика подготовки бакалавров Автор Объедков С.А. (sergei.obj@gmail.com) Рекомендована секцией УМС «Прикладная математика и информатика» Одобрена на заседании кафедры Анализа данных и искусственного интеллекта Председатель __________________ Кузнецов С.О. «_____» __________________ 200___ г. Зав. кафедрой __________________ Кузнецов С.О. «_____» __________________ 200___ г. Утверждена УС факультета бизнес-информатики Ученый секретарь __________________ Фомичев В.А. « ____» ___________________200___ г. Москва 1 Пояснительная записка Требования к студентам Изучение курса «Программирование прикладных задач» предполагает наличие у студентов базовых навыков процедурного и объектно-ориентированного программирования. Аннотация Практические навыки программирования необходимы специалисту в области анализа данных. Написание эффективных программ для решения прикладных задач требует как правило владения не только синтаксисом определенного языка программирования, но и (среди прочего) умения пользоваться его библиотеками и средствами интеграции с программными модулями, написанными на других языках. В курсе используется современный язык программирования Python, хорошо подходящий для оперативной разработки прикладных программ в силу простоты синтаксиса, хорошо разработанной системы типов данных, большого количества библиотек, расширяемости, интерактивности (не требует компиляции), поддержки нескольких парадигм программирования (объектно-ориентированной, процедурной и функциональной). Знакомство с языком происходит постепенно, через написание программ для решения конкретных задач. Учебные задачи курса В результате изучения курса «Программирование прикладных задач» студенты должны приобрести навыки написания практически полезных программ на языке Python с использованием его различных библиотек, а также получить представление о некоторых методах обработки и анализа данных. Тематический план учебной дисциплины № Название темы Всего часов по дисциплине Аудиторные часы Лекции 1 2 3 4 5 Самостоятельная работа Сем. и практ. занятия Введение в программирование на языке 10 Python Программирование рекомендательных 28 систем Программирование поисковых систем 22 2 2 6 6 4 18 4 6 12 Программирование моделей ценообразования Классификация данных 28 6 4 18 20 4 4 12 108 22 20 66 Итого: ----------------------------------------------------------------------------------------------------------------------------- ---------------------------- Базовый учебник Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Главы 1, 2, 4, 8, 9, 12). ---------------------------------------------------------------------------------------------------------------------- ----------------------------------- Формы контроля: итоговый контроль – зачет Итоговая оценка по учебной дисциплине складывается из следующих элементов: Работа на практических занятиях (решение задач, упражнения по программированию) – 10% 2 Письменный зачет (120 мин.) - 90% ----------------------------------------------------------------------------------------------------------------------------- ---------------------------- Содержание программы Тема 1. Введение в программирование на языке Python. Среда разработки и исполнения программ. Типы данных, операции и структуры управления. Функции, модули и классы. Основная литература Сузи Р.А. Язык программирования Python. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. С. 17 – 43. Тема 2. Программирование рекомендательных систем. Коллаборативная фильтрация. Меры сходства, основанные на евклидовом расстоянии и коэффициенте корреляции Пирсона. Выработка рекомендаций в системах социальных закладок. Основная литература Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Глава 2). Тема 3. Программирование поисковых систем. Индексация интернет-страниц, модули urllib2, urlparse, BeautifulSoup. Работа с базами данных. Выборка страниц по запросу. Ранжирование результатов на основе содержания страниц. Ранжирование результатов на основе внешних ссылок, алгоритм PageRank. Улучшение ранжирования при помощи обучения с использованием нейронных сетей. Основная литература Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Главы 4, 12). Дополнительная литература Рассел С., Норвиг П. Искусственный интеллект: современный подход, 2-е изд. М.: Вильямс, 2006. С. 976 – 991 Сузи Р.А. Язык программирования Python. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. С. 213 – 220, 223 – 239. Тема 4. Программирование моделей ценообразования. Алгоритм «k ближайших соседей» и его модификации. Кроссвалидация. Комбинирование разнородных переменных в рамках одной модели. Построение графиков с использованием библиотеки matplotlib. Работа с данными в XML-формате, модули httplib и xml.dom.minidom. Основная литература Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Главы 8, 12). Дополнительная литература Рассел С., Норвиг П. Искусственный интеллект: современный подход, 2-е изд. М.: Вильямс, 2006. С. 972 – 976 Сузи Р.А. Язык программирования Python. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. С. 178 – 186. Тема 5. Классификация данных. 3 Простая линейная классификация. Числовые и нечисловые признаки, масштабирование данных. Ядерные методы. Метод опорных векторов, библиотека LIBSVM. Основная литература Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Главы 9, 12). Дополнительная литература Рассел С., Норвиг П. Искусственный интеллект: современный подход, 2-е изд. М.: Вильямс, 2006. С. 991 – 995 --------------------------------------------------------------------------------------------------------------------- ------------------------------------ Вопросы для оценки качества освоения дисциплины а) Опишите особенности наследования в языке Python. б) Дан набор закладок на интернет-ресурсы и таги, присвоенные им пользователями. Вычислите сходство между тагами и укажите пары практически идентичных тагов. в) Напишите функцию, выделяющую слова в тексте и способную распознавать такие слова, как "C++", "$20", "Ph.D", "916-123-45-67" и т.п. г) Напишите функцию, осуществляющую поиск ноутбуков с определенным типом процессора на интернет-аукционе Ebay. д) Опишите метод линейной классификации. е) В чем различие между списками и кортежами в языке Python? ж) Запрограммируйте функцию, вычисляющую коэффициент Танимото для двух векторов, представленных списками. з) Напишите программу, получающую с сайта del.icio.us данные о пользовательских закладках и тегах, которыми они помечены. и) Напишите программу, строящую индекс для заданного корпуса текстов. к) В чем состоит идея алгоритма PageRank? л) Запрограммируйте функцию, вычисляющую оптимальное значение k в алгоритме «k ближайших соседей» для конкретного набора данных. м) Запрограммируйте алгоритм кросс-валидации, который использует один экземпляр данных в качестве тестового набора, а все остальные экземпляры данных – в качестве обучающего набора. н) Каковы возможные приложения байесовского классификатора? о) В каких случаях может потребоваться масштабирование данных? ------------------------------------------------------------------------------------------------------- -------------------------------------------------- Автор программы: _____________________________/ Объедков С.А./ 4 Подпись обязательна. 5 Учебно-методическое обеспечение дисциплины Базовый учебник: Сегаран Т. Программируем коллективный разум. М.: Символ-Плюс, 2008 (Главы 1, 2, 4, 8, 9, 12). Дополнительные источники: 1. Рассел С., Норвиг П. Искусственный интеллект: современный подход, 2-е изд. М.: Вильямс, 2006 2. Сузи Р.А. Язык программирования Python. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007 3. Лутц М. Изучаем Python. М.: Символ-Плюс, 2008. 4. http://www.python.org Методические рекомендации для студентов На лекциях будут даны лишь основные сведения о синтаксисе и типах данных языка Python; основной упор будет сделан на использовании языка Python в программировании прикладных задач. Ожидается, что студенты будут самостоятельно изучать язык при помощи учебников и интернет-ресурсов, для чего им безусловно необходим доступ к компьютеру во внеучебное время. Реализацию языка Python (интерпретатор и стандартные библиотеки) можно бесплатно загрузить с сайта http://www.python.org. На данный момент, следует использовать Python 2.6. В качестве среды программирования можно порекомендовать среду IDLE, распространяемую вместе с интерпретатором языка. 6