Skip to content

Instantly share code, notes, and snippets.

@freetonik
Last active July 1, 2019 18:50
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save freetonik/3f5994353be0503b7a06 to your computer and use it in GitHub Desktop.
Save freetonik/3f5994353be0503b7a06 to your computer and use it in GitHub Desktop.

Если бы я строил полную учебную программу по computer science, то мат основа там была бы примерно такая:

  1. Логика и дискретная математика. Тут же основы теории множеств и теории чисел. Эти штуки можно изучать в изоляции от всего остального, многим даже далеким от математики эти темы нравятся (особенно теория чисел), и эта среда хорошо подходит для привыкания к мат. доказательствам, индукции и пр.

  2. Мат анализ. Не критично, но как минимум для тренировки мозга очень важный курс, можно экспрессом.

  3. Линейная алгебра. Сильно зависит от будущих целей. Если интересна графика, игры, виртуальная реальность — то линейная алгебра обязательна. Но если нет — то как минимум экспрессом один курс желателен. Отлично вправляет мозги, развивает абстрактное мышление, очень важное в программировании в целом. Представлять себе многомерные структуры и их взаимосвязь — это очень круто. Главное в линейке не попасться в ту же ловушку, в которую попадаются при изучении мат. анализа: в этих штуках можно запомнить механически правила и все задачи решать на 5+ СОВЕРШЕННО НЕ ПОНИМАЯ ЧТО ПРОИСХОДИТ я в школе, как и все, изучал мат анализ, но понятия не имел что это и зачем. только в универе нормально осознал, что все на самом деле проще и имеет практический смысл с линейкой то же самое: можно выучить правила умножения матриц и нахождения ортогональных структур, но очень важно понимать что происходит на абстрактном уровне, находить аналогии с понятным нам трехмерным миром В интернете сейчас куча интерактивных инструментов для визуализации этих вещей.

  4. Статистика и комбинаторика. Если с линейкой можно сказать “я буду писать офисные приложения, мне не нужна линейная алгебра”, и это по большей части справедливо, то со статистикой и комбинаторикой все хитрее. Может казаться, что эти темы вообще не используются в твоей жизни, но косвенно они используются даже на подсознательном уровне когда вы рассуждаете об алгоритмах и о процессах.

В идеале в самом начале нужен такой обзорный курс, в который входит:

  • базовая логика
  • дискретная математика / теория чисел / теория множеств (это все за неделю можно понять)
  • основы статистики

А дальше углубляться в указанном выше порядке. Это все — математическая основа, еще не имеющая отношения к информатике и программированию

Дальше переходим к пограничной зоне. Тут самая важная тема, имхо, это теория алгоритмов. В русском языке принято такое название, но оно не очень удачное, по-английски это звучит «Theory of computation» Это то, что лежит в основе тем, о которых Кирилл постоянно рассказывает здесь и в наших курсах. И мы это покрывает частично в курсе по алгоритмам на Хекслете Лямбда-исчисление, машина Тьюринга, анализ сложности, полнота, грамматика, теория автоматов

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

Зато после этого вы понимаете, почему алгоритмы выполняются и компьютеры на самом деле работают всегда :simple_smile: Уже вне базового набора есть очень важная тема — криптография. К ней стоит приступать с хорошей мат. подготовкой (нужно чувствовать себя комфортно со всеми темами, описанными выше) , но это мега-интересная штука!

@mvaload
Copy link

mvaload commented Jul 1, 2019

Было бы здорово увидеть такой курс на хекслете.

@freetonik
Copy link
Author

Было бы здорово увидеть такой курс на хекслете.

Я уже не принимаю участие в развитии Хекслета, но вот на codexpanse.com планирую такой курс сделать :)

@mvaload
Copy link

mvaload commented Jul 1, 2019

Кул, вот только надо английский подтянуть.

@freetonik
Copy link
Author

Может пригодится :) https://rakh.im/english_learning_ebook/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment