Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bibliography.pdf
Скачиваний:
73
Добавлен:
22.05.2015
Размер:
163.14 Кб
Скачать

БИБЛИОГРАФИЯ

(в редакции от 20.07.2013)

© 2010 – 2013, Симоненко Евгений А. <easimonenko@mail.ru>

ОТ АВТОРА

Библиографическая подборка разделена на несколько частей:

книги по языкам программирования C++ и C# (поддержка этого языка недавно появилась в некоторых соревнованиях по программированию);

книги по алгоритмам и структурам данных;

книги по математике (в первую очередь по дискретной математике);

сборники задач;

разное (для общего развития);

ссылки на ресурсы Интернет.

Книги, выделенные полужирным курсивом, рекомендуются особо, что нисколько не должно умалять ценность остальной приведённой здесь литературы. Сборники задач рекомендуются все.

РЕКОМЕНДАЦИИ ПО УРОВНЯМ ПОДГОТОВЛЕННОСТИ

Ниже я попытаюсь дать рекомендации о выборе литературы для чтения и использования в подготовке в зависимости от уровня подготовленности. Читатель волен сам решать на каком уровне он находится, но при этом я рекомендую сначала просмотреть рекомендации для более низких уровней, чтобы не упустить что-то важное и интересное.

Нулевой уровень

В первую очередь рекомендуется взяться за освоение одного из языков программирования, например, C или C++. Но при этом освоение программирования не должно сводиться к ознакомлению с операторами языка программирования, нужно много времени потратить на отработку техники программирования. Поэтому я настоятельно рекомендую воспользоваться онлайн-задачниками [E-Olimp] и [MCCME]. Найдите на этих порталах задачи для начинающих и прорешайте их все. К сожалению мне не известны книги для начинающих программировать на языке C или C++, а вот для будущих паскалистов (хотя и не только для них) могу порекомендовать [Окулов: программирование], только будьте осторожны – в книге много опечаток. Параллельно можно почитывать любые книжки по математике, например, книжки для школьников на нешкольные темы. Наконец, каждый начинающий олимпиадник должен прочитать онлайн-статьи:

«Как стать чемпионом Урала по программированию», «Как стать чемпионом Мира по программированию или разбор полётов» и «Блог Фёдора Царёва». Кроме того, чтобы постоянно находиться в курсе олимпиадных событий регулярно посещайте олимпиадные сайты, на сегодня самая активная «жизнь» на [CodeForces]. По мере освоения техники программирования начните принимать участие в онлайн-соревнованиях для школьников, которые регулярно проводит портал

[E-Olimp].

Начальный уровень

На этом уровне рекомендуется осваивать стандартную библиотеку выбранного языка программирования, например, STL языка C++. Здесь можно порекомендовать [Керниган, Пайк],

2 Симоненко Е.А. Олимпиадная подготовка по программированию. Библиография

[Липпман], [Страуструп]. Следует начать знакомиться с основными алгоритмами и структурами данных, например, по книгам [Окулов: программирование], [Шень]. Начните также знакомиться с дискретной математикой. Очень хорошее введение в предмет даётся в [Грэхем, Кнут, Паташник], но в этой книге рассматривается только часть вопросов, поэтому потребуется привлечение другой

литературы по предмету, например, по

комбинаторике [Виленкин], по

теории графов

[Оре: Теория графов], в целом хорошее и

краткое введение в предмет в

[Кузьмин] и в

[Краснов и др.]. Можно также почитать [Пойа: Математическое открытие]. Не стоит на этом уровне сильно углубляться в алгоритмы и дискретную математику, лучше отточить навыки программирования и использования простых и основных алгоритмов, методов и техник. Решайте задачи по [Брудно, Каплан]. Начните принимать участие в онлайн-соревнованиях проводимых на

[E-Olimp] и [CodeForces].

Средний уровень

Это уровень серьёзной подготовки. Решение простых задач и чтение литературы типа «введение в предмет» уже ничего не даёт. Здесь следует штудировать серьёзную литературу как по языкам программирования, так и литературу по алгоритмам и дискретной математике. Неплохо также улучшать свои знания и в других областях математики, таких как геометрия, теория вероятностей и математическая статистика, математическое программирование. По алгоритмам можно порекомендовать: [Ахо, Хопкрофт, Ульман], [Кормен и др.], [Круз], [Левитин], [Макконнелл], [Окулов: алгоритмы], [Окулов: строки], [Седжвик], [Скиена: алгоритмы], [Уайс]. По дискретной математике: [Окулов: дискретная математика], [Оре: теория графов], [Хаггарти], [Харари]. По математическому программированию: [Беллманн], [Беллман, Дрейфус], [Вентцель: динамическое программирование], [Сигал, Иванова]. По геометрии: [Препарата, Шеймос]. Решайте задачи сначала по [Порублев, Ставровский], потом по [Меньшиков], привлекайте другие задачники, в том числе онлайн. Не пропускайте серьёзных соревнований таких как [CodeForces], Yandex.Algorithm, Russian Code Cup и другие. Так как многие, попав на этот уровень, становятся помощниками тренеров и преподавателей, капитанами команд и даже тренерами и руководителями команд, то не плохо познакомиться с методической литературой: [Пойа: как решать задачу], [Демарко, Листер], [Креншоу].

Высокий уровень

Имеет ли право что-то рекомендовать человек, который на таком уровне не находится? …

C++

1.Дейтел Х. М., Дейтел П. Дж. Как программировать на C++. – 5е изд. – М.: Бином-Пресс, 2008. – 1456 с.

2.Джосьютис Н. C++. Стандартная библиотека. Для профессионалов. – СПб.: Питер, 2004. – 730 с.

3.Дьюхерст С. C++. Священные знания. – Пер. с англ. – СПб.: Символ-Плюс, 2007. – 240 с.

4.Касперски К. Техника оптимизации программ. Эффективное использование памяти. - СПб.: БХВ-Петербург, 2003. - 464 с.: ил.

5.[Керниган, Пайк] Керниган Б., Пайк Р. Практика программирования. – Пер. с англ. – М.: Вильямс, 2004. – 288 с.

6.Леен Аммерааль. STL для программистов. – М.: ДМК, 1999. – 240 с.

7.Либерти Дж. C++. Энциклопедия пользователя.

Симоненко Е.А. Олимпиадная подготовка по программированию. Библиография

3

8.[Липпман] Липпман С., Лажойе Ж., Му Б. Язык программирования C++. Вводный курс, 4-е издание. – Пер. с англ. – М.: Вильямс, 2007. – 896 с.

9.Лишнер Р. STL. Карманный справочник. – СПб.: Питер, 2005. – 187 с.

10.Мозговой М.В. C++ мастер-класс. 85 нетривиальных проектов, решений и задач. – СПб.: Наука и Техника, 2007. – 272 с.

11.Мейерс С. Эффективное использование STL. Библиотека программиста. – СПб.: Питер, 2002. – 224 с.

12.Мюссер Д., Дердж Ж., Сейни А. C++ и STL: справочное руководство. – 2-е изд. – Пер. с англ. – М.: М.: Вильямс, 2010. – 432 с.

13.Прата С. Язык программирования C++. Лекции и упражнения. Учебник. – Пер. с англ. – СПб.: ООО «ДиаСофтЮП», 2005. – 1104 с.

14.Саттер Г., Александреску А. Стандарты программирования на C++. – М.: Вильямс, 2005. – 224 с.

15.Саттер Г. Новые сложные задачи на C++. – Пер. с англ. – М.: Вильямс, 2005. – 272 с.

16.Саттер Г. Решение сложных задач на C++: Пер. с англ. – М.: Вильямс, 2008. – 400 с.

17.Седжвик Р. Алгоритмы на C++. – Пер. с англ. – М.: Вильямс, 2011. – 1056 с.

18.Степанов А.А, Мас-Джонс П. Начала программирования. – Пер. с англ. – М.: Вильямс, 2011. – 272 с.

19.Стефенс Д.Р., Диггинс К., Турканис Д., Когсуэлл Д. C++. Сборник рецептов. – Пер. с англ. – М.: Кудиц-Пресс, 2007. – 624 с.

20.[Страуструп] Страуструп Б. Язык программирования C++. – 3-е изд. – СПб.: Невский диалект, М.: Бином, 1999. – 991 с.

21.Топп У., Форд У. Структуры данных в C++: Пер. с англ. – М.: БИНОМ, 1999. – 816 с.

22.Уайс М. Организация структур данных и решение задач на C++: Пер. с англ. – М.: ЭКОМ Паблишерз, 2008. – 896 с.

23.Уилсон М. C++: практический подход к решению проблем программирования. – М.: Кудицобраз, 2006. – 736 с.

24.Уилсон М. Расширение библиотеки STL для C++. Наборы и итераторы. – М.: ДМК-Пресс, СПб.: БХВ-Петербург, 2008. – 608 с.

25.Хэзфилд Р., Кирби Л. и др. Искусство программирования на C. Фундаментальные алгоритмы, структуры данных и примеры приложений. – Пер. с англ. – К.: ДиаСофт, 2001. – 746 с.

26.Шилдт Г. C++: руководство для начинающих. – 2-е изд. – Пер. с англ. – М.: Вильямс, 2005. – 672 с.

27.Шилдт Г. C++: базовый курс. – 3-е изд. – Пер. с англ. – М.: Вильямс, 2010. – 624 с.

28.Эккель Б. Философия C++. Введение в стандартный C++. – 2-е изд. – СПб.: Питер, 2004. – 572 с.

29.Эккель Б., Эллисон Ч. Философия C++. Практическое программирование. – СПб.: Питер, 2004. – 608 с.

30.Элджер Д. C++. Библиотека программиста. 1999.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]