Г о с

advertisement
Правительство Российской Федерации
Государственное образовательное бюджетное учреждение
высшего профессионального образования
Государственный университет –
Высшая школа экономики
Факультет БИЗНЕС-ИНФОРМАТИКИ
Программа дисциплины
Программирование прикладных задач
для направления 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
Download