Links & Materials

Без систематического чтение стать приматом невозможно

Без систематического чтения стать приматом невозможно

Для успешного прохождения курса Вам могут понадобиться книги и программное обеспечение. На этой странице Вы сможете ознакомиться с нашими рекомендациями на этот счёт. Конечно же сканированные книги здесь выложены исключительно в целях предварительного ознакомления перед покупкой у официального распространителя.

Дополнительная литература

Начинаю с дополнительной литературы поскольку считаю её важнее основной. Изучить основы программирования не прочитав ни одного учебника возможно. Конечно самые-самые основы. Можно также получить фрагментарное представление о предмете и успешно сдать все лабораторные задания. Но стать настоящим специалистом не освоив алгоритмов очень сложно. Возможно это слегка провокационное заявление, но я должен как-то стимулировать Вас хоть попытаться освоить этот материал:

  1. Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein. Introduction to Algorithms, Third Edition// MIT Press, 2009.
    Имеется перевод
    Кормен Т., Лейзерсон Ч., Ривест Р., Штайн K. — Алгоритмы. построение и анализ — 2013.

    Замечание: Если вы видите надпись «Что-то пошло не так…», то скорее всего мы нечаянно нарушили авторские права и Dropbox заблокировал эту ссылку. Даже если ссылка открывается и видна книга в программе предпросмотра, лучшее ее загрузить на свой компьютер и открыть, например, в STDU Viewer.

    Поскольку часть материала из второго издания в третьем опущена, стоит посмотреть и его. Например, чтобы познакомиться с биномиальными кучами. Так же авторы поступили и со вторым изданием — добавили новое, но убрали часть интересного материала. В результате приходится покупать все три издания, пока кто-то не соберёт все в одной компиляции. По крайней мере у меня есть эти книги в бумажном виде.

  2. Стивен Скиена. Алгоритмы: руководство по разработке// Второе издание. — БХВ.- 2011.
  3. Robert Sedgewick and Kevin Wayne. Algorithms (Fourts edition) // Princeton University.- 2011 — Имеется перевод.
  4. S.Dasgupta, C.H.Papadimitriou, U.V.Vazirani. Algorithms// McGraw-Hill.- 2006. — Имеется перевод.
  5. Грэхем Р., Кнут Д., Паташник О. Конкретная математика. Основание информатики. Пер. с англ. —М.: Мир, 1998. — 703 с.

Учебники

  1. С.Б.Липпман, Ж.Л.Лажойе, Б.Е.Му. Язык программирования С++. Базовый курс. Пятое издание.- 2014
    (Stanley B. Lippman, Josée Lajoie, Barbara E. Moo. C++ Primer: Fifth Edition.- Addison Wesley, 2013)

    Одна из книг вполне приемлемых для начального ознакомления с основами языка С++ 11-й версии. Читать нужно короткими порциями. Сначала английский, потом русский текст. Я бы посоветовал повторить эту процедуру для уточнения или закрепления материала и лексики. Подобный подход позволит Вам выучить по крайней мере один из языков.

  2. С.Прата. Язык программирования C++. Лекции и упражнения.- 2012
    Prata S. C++ Primer Plus

    Книга также по 11-й версии языка С++. Возможно немного более серьезный подход к изложению материала по сравнению с п.1. Но еще более желательно читать английский вариант в вперемешку с русским переводом. Перевод (как и в большинстве подобных книг) довольно сырой и местами будет невозможно что-либо понять без английского текста. Например, вместо того, чтобы указать, что short это сокращенная форма записи short int переводчики сообщает, что «тип short имеет более узкий диапазон значений, чем тип short int». Фильтровать подозрительные места Вам поможет английская версия книги.

  3. По использованию структур данных можно почитать довольно старенькую книжку Аммерааль Л. STL для программистов на C++. Или её обновлённые редакции на английском.

К сожалению мы не сможем полностью выучить по настоящему современные возможности языка С++. Но у Вас есть возможность разобраться с этим по книге Скотта Мейерса Эффективный и современный С++. 42 рекомендации по использованию С++ 11 и С++ 14.

Задачники

  1. С.А.Абрамов, Г.Г.Гнездилова, Е.Н.Капустина, М.И.Селюн. Задачи по программированию. — Вологда, 2000
    Один из многих вариантов добротного задачника по программированию. Используется как основной для базового уровня. Если Вы умеете решать задачи этого сборника и оформлять решения по предъявляемым требованиям, то можете смело считать, что минимальная оценка Вам гарантирована.
  2. А.Юркин. Задачник по программированию. — СПб: Питер, 2002, 192 с.
    Несколько более трудные в среднем задачи по сравнению с предыдущим задачником. Трудность объясняется не столько объемом или запутанностью кода решения, сколько большими размышлениями над алгоритмом.

Программное обеспечение

  1. ideOne
    Среда программирования развернута в облаках и позволяет компилировать и выполнять на сервере программы на различных языках программирования. Написанный код можно (нужно!) сопроводить пояснением. Срок хранения Ваших текстов не ограничен. Есть возможность красивой публикации кода программы на своих сайтах в сети (справа есть блок «<script…» для копирования и вставки на свой сайт). Мы выбираем язык программирования С++ 14. В качестве альтернативы можно порекомендовать jdoodle.
  2. Microsoft Visual Studio Express 2013 для Windows Desktop с обновлением 3
    Как не удобна ideOne для первых опытов, в ней не хватает отладчика с возможностью пошагового выполнения программы и просмотра значений переменных. Если Вы хотите поскорее испытать удовольствие от «профессиональной» работы, то можете загрузить и установить этого монстра. Панель управления и меню будут напоминать самолётный кокпит. Сотни кнопочек, лампочек и движков позволят Вам легко ввести среду программирования в штопор. Код, генерируемый при создании проекта, имеет некоторые особенности, которые первое время сбивают. При публикации код нуждается в некотором несложном редактировании.
  3. CodeLite
    Эта неплохая среда программирования может работать не только под Windows, но и под Linux, и в MacOS. В состав данной инсталляции входит возможно лучший из существующих компиляторов GNU С++ и система поддержки тестов. Довольно простой интерфейс и вполне взрослые возможности. Если интерфейс системы Вам не понравился, можно вместо неё установить аналогичную среду Code::Blocks.
  4. Koding
    Полноценная бесплатная среда разработки в браузере. См. инструкцию здесь.

Исходные данные

  1. Для задач по обработке текстов потребуется текст большого объёма. Рекомендуется использовать этот текст или большой отрывок из него
  2. В некоторых задачах необходим словарь. Точнее просто перечень слов. Предлагаю воспользоваться списком 2500 наиболее употребительных английских слов (составлен Александром Васильевым).

Дистанционное (online) обучение

Эти странные длительные каникулы позволят Вам полностью забыть весь материал и утратить приобретенные навыки. Конечно 2-3 раза в неделю мы будем встречаться и заниматься программированием. Однако это исключительно на добровольных началах. Т.е. часть студентов ходить на эти занятия не станет. Для них полезным выходом является домашнее онлайн обучение. Или как минимум просмотр видеолекций (смотри ниже).

  1. Для быстрого старта можно порекомендовать курс Основы C/C++ для спортивного программирования. С помощью этого курса нельзя изучить язык программирования С++. Но можно быстро начать на нем программировать. Странно? Да, но так бывает. Я рекомендую начать с этого курса. Для его прохождения обычно требуется от недели до месяца.
  2. Полноценный курс С++ скорее выглядит немного иначе — Программирование на языке C++. Я бы рекомендовал его пройти вторым. Так быстро вы с ним не справитесь, но получите предстовление о большинстве принципиально важных вещей.
  3. Если у Вас есть бесплатный доступ к Coursera.org, то вы можете пройти несколько курсов специализации Искусство разработки на современном C++. Если Вы пройдете за семестр два предыдущих курса и закрепите знания и навыки получение белого и цветных поясов, то будете чувствовать себя очень уверено.
  4. C++ Institute. Англоязычный ресурс (пока бета версия) на котором есть два учебных курса:
    • CLA — по языку программирования Си
    • CPA — по языку С++ и объектно-ориентированному программированию.

    Начать лучше с первого. Можно смотреть учебные материалы и нужно проходить тесты. После прохождения бесплатного курса идёт платный экзамен и выдаётся сертификат. Делаем только то, что бесплатно.

  5. Introduction to Computer Programming.
    • Часть 1 в настоящее время заканчивается, но материалы будут доступны в архиве.
    • Часть 2 начинается в конце сентября. Можно просматривать и проходить курс и позже в любое время (будет доступен архив).
  6. Несколько курсов Стэнфордского университета. Не так много конкретного или остро актуального материала, но много концептуально полезных понятий. Как минимум два из трёх курсов очень интересно слушать. Яркое ток-шоу талантливых преподавателей.

    Посмотрите по кусочку какой-либо лекции из середины каждого курса и сделайте выбор, что будете изучать. А можно подряд. Или только второй курс.

  7. Object-Oriented Programming in C++ — хороший и довольно объёмный курс. Много конкретного, полезного учебного материала. Не так ориентирован на практическое программирования как то, чем занимаемся мы. Но в этом его преимущество.
  8. Видеолекции. К сожалению не всегда студент может присутствовать на лекции. Для этого случая как нельзя лучше подходят видеолекции. Мне понравились лекции Евгения Линского с проекта «Открытая библиотека видеолекций». Их полезно посмотреть и тем, кто присутствовал на занятиях, поскольку у Евгения другой подход к изложению и подбору материала. В тоже время у нас близкое понимание языка и того как его нужно изучать.

А это наши попытки:

  1. Epistemic Modal Logic

    Субботнее 05/11/16 популярное занятие о логике знаний на английском языке.
    Тема: Временная логика
    Докладчик: к.ф.-м.н., доцент Антоненко Александр Сергеевич.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.
    Занятие проходит в рамках субботнего факультатива по алгоритмам и программированию в Одесском национальном университете имени И.И.Мечникова.

  2. Fibonacci Sequence

    Субботнее 12/11/16 популярное занятие о логике знаний на английском языке.
    Тема: Алгоритмы вычисления чисел Фибоначчи.
    Докладчик: к.ф.-м.н., доцент Антоненко Александр Сергеевич.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.

  3. Twenty divisors

    Субботнее 19/11/16 популярное занятие по факторизации чисел на английском языке со вступлением на русском.
    Тема: Задача про двадцать простых делителей.
    Докладчик: к.ф.-м.н., доцент Антоненко Александр Сергеевич.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.

  4. Functional programming in JS

    Субботнее 27/11/16 популярное занятие (первый доклад) по JavaScript на английском языке.
    Тема: Функциональное программирование в JavaScript
    Докладчик: Дмитрий Тинитилов.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.

  5. Numerical differentiation

    Субботнее 27/11/16 популярное занятие (второй доклад) по методам численного дифференцирования.
    Тема: Численное дифференцирование.
    Докладчик: Виктор Васильевич Вербицкий, к.ф-м.н., доцент.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.

  6. Computational Complexity

    Субботнее 3/12/16 популярное занятие по алгоритмам и программированию.
    Тема: Вычислительная сложность алгоритмов.
    Докладчик: Максимов Артур Леонидович, старший преподаватель.
    Введение: к.т.н., доцент Мазурок Игорь Евгеньевич.

Related Images: