├── .gitignore ├── README.md ├── cli ├── .dockerignore ├── .flake8 ├── README.md ├── docs │ ├── interface.png │ ├── interface.xmind │ ├── remember.png │ ├── scheme.png │ └── scheme.xmind └── knowledge_base.db ├── materials └── index.md └── plan ├── education.drawio ├── education.png ├── map.png └── map.xmind /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | # Byte-compiled / optimized / DLL files 3 | __pycache__/ 4 | *.py[cod] 5 | *$py.class 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | cover/ 54 | 55 | # Translations 56 | *.mo 57 | *.pot 58 | 59 | # Django stuff: 60 | *.log 61 | local_settings.py 62 | db.sqlite3 63 | db.sqlite3-journal 64 | 65 | # Flask stuff: 66 | instance/ 67 | .webassets-cache 68 | 69 | # Scrapy stuff: 70 | .scrapy 71 | 72 | # Sphinx documentation 73 | docs/_build/ 74 | 75 | # PyBuilder 76 | .pybuilder/ 77 | target/ 78 | 79 | # Jupyter Notebook 80 | .ipynb_checkpoints 81 | 82 | # IPython 83 | profile_default/ 84 | ipython_config.py 85 | 86 | # pyenv 87 | # For a library or package, you might want to ignore these files since the code is 88 | # intended to run in multiple environments; otherwise, check them in: 89 | # .python-version 90 | 91 | # pipenv 92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 95 | # install all needed dependencies. 96 | #Pipfile.lock 97 | 98 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 99 | __pypackages__/ 100 | 101 | # Celery stuff 102 | celerybeat-schedule 103 | celerybeat.pid 104 | 105 | # SageMath parsed files 106 | *.sage.py 107 | 108 | # Environments 109 | .env 110 | .venv 111 | env/ 112 | venv/ 113 | ENV/ 114 | env.bak/ 115 | venv.bak/ 116 | 117 | # Spyder project settings 118 | .spyderproject 119 | .spyproject 120 | 121 | # Rope project settings 122 | .ropeproject 123 | 124 | # mkdocs documentation 125 | /site 126 | 127 | # mypy 128 | .mypy_cache/ 129 | .dmypy.json 130 | dmypy.json 131 | 132 | # Pyre type checker 133 | .pyre/ 134 | 135 | # pytype static type analyzer 136 | .pytype/ 137 | 138 | # Cython debug symbols 139 | cython_debug/ 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Схема обучения на 3 года 2 | 3 | На данный момент я программист около 6 полных лет коммерческой разработки. Моя специализация -- backend, основной язык -- Python. 4 | 5 | Ставлю себе план обучения на следующие 3 года с целью закрыть пробелы в образовании и лучше узнать прикладную облась. Буду очень рад дополнениям и комментариям 6 | 7 | - [Индекс материалов по общему плану](materials/index.md) 8 | 9 | **Пишите коментарии и дополнения по программе в issue или ко мне в telegram https://t.me/p141592** 10 | 11 | #### Схема v2 12 | ![map](plan/education.png) 13 | 14 | ![](plan/map.png) 15 | 16 | 17 | -------------------------------------------------------------------------------- /cli/.dockerignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode 3 | # Byte-compiled / optimized / DLL files 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | share/python-wheels/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | MANIFEST 30 | 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .nox/ 45 | .coverage 46 | .coverage.* 47 | .cache 48 | nosetests.xml 49 | coverage.xml 50 | *.cover 51 | *.py,cover 52 | .hypothesis/ 53 | .pytest_cache/ 54 | cover/ 55 | 56 | # Translations 57 | *.mo 58 | *.pot 59 | 60 | # Django stuff: 61 | *.log 62 | local_settings.py 63 | db.sqlite3 64 | db.sqlite3-journal 65 | 66 | # Flask stuff: 67 | instance/ 68 | .webassets-cache 69 | 70 | # Scrapy stuff: 71 | .scrapy 72 | 73 | # Sphinx documentation 74 | docs/_build/ 75 | 76 | # PyBuilder 77 | .pybuilder/ 78 | target/ 79 | 80 | # Jupyter Notebook 81 | .ipynb_checkpoints 82 | 83 | # IPython 84 | profile_default/ 85 | ipython_config.py 86 | 87 | # pyenv 88 | # For a library or package, you might want to ignore these files since the code is 89 | # intended to run in multiple environments; otherwise, check them in: 90 | # .python-version 91 | 92 | # pipenv 93 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 94 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 95 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 96 | # install all needed dependencies. 97 | #Pipfile.lock 98 | 99 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 100 | __pypackages__/ 101 | 102 | # Celery stuff 103 | celerybeat-schedule 104 | celerybeat.pid 105 | 106 | # SageMath parsed files 107 | *.sage.py 108 | 109 | # Environments 110 | .env 111 | .venv 112 | env/ 113 | venv/ 114 | ENV/ 115 | env.bak/ 116 | venv.bak/ 117 | 118 | # Spyder project settings 119 | .spyderproject 120 | .spyproject 121 | 122 | # Rope project settings 123 | .ropeproject 124 | 125 | # mkdocs documentation 126 | /site 127 | 128 | # mypy 129 | .mypy_cache/ 130 | .dmypy.json 131 | dmypy.json 132 | 133 | # Pyre type checker 134 | .pyre/ 135 | 136 | # pytype static type analyzer 137 | .pytype/ 138 | 139 | # Cython debug symbols 140 | cython_debug/ -------------------------------------------------------------------------------- /cli/.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 160 3 | -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | # Инструменты для работы с материалами и планом 2 | 3 | Для качественного освоения и изучения материалов, нужны инструменты, нативно интегрирующиеся в тем жизни. 4 | Материалы должны быть оценены, взвешаны и предложены в наиболее подходящий момент. 5 | Материалы нужно обсуждать, а результатами делиться. Без этого процесс образования становится не полноценным. 6 | 7 | - Индексация и упорядочивание материалов, процесса обучения 8 | - Повторение материалов / Quiz 9 | - Обсуждение 10 | - Статистика по результатам 11 | 12 | ## Объекты 13 | 14 | ### Схема данных 15 | 16 | ![Схема](docs/scheme.png) 17 | 18 | ### Материалы/ресурсы 19 | 20 | Материалы и ресурсы составляют больший объем. Они содержат все, что нужно выучить в атомарной форме, чтобы учиться по частям 21 | 22 | 1. Добавляются ресурсы, тегируются, помечаются секцией 23 | 2. Из ресурса формируются материалы, материалы должны содержать только текст либо ссылку на неделимый объект 24 | 3. Материалы могут состоять из других материалов 25 | 4. Материалы должны быть оценены по времени, тегированы, привязаны к секциям и темам 26 | 5. Материалы должны быть покрыты Квизами 27 | 28 | Тип ресурса: 29 | 30 | - Статья 31 | - Книга 32 | - Лекция 33 | - Доклад 34 | - Документация 35 | - Интерактив 36 | 37 | Тип материала: 38 | 39 | - Текст 40 | - Видео 41 | - Интерактив 42 | - live 43 | 44 | ### Квизы 45 | 46 | Нужны для повторение/усвоения материалов/самоконтроля 47 | 48 | 1. Квизы привязаны к материалам. Если не правильно ответить на квиз, нужно отправить ссылку на материал, который нужно повторить 49 | 2. Квиз может быть какой-то задачей на запоминание. К примеру: `Что делает команда?` Или `С помощью какой команды можно ...` 50 | 51 | Типы квизов: 52 | 53 | - Свободный ответ 54 | - True/False 55 | - Один правильный ответ 56 | - Несколько правильных ответов 57 | 58 | ![Кривая забывания](docs/remember.png) 59 | 60 | ### Уроки 61 | 62 | Уроки формируются из материалов. Один урок может cостоять несколько других материалов. Уроки должны включать в себя все, 63 | что связанно с самим процессом обучения. 64 | 65 | - Мотивация урока: Зачем учить это, что мне это даст 66 | - Которкая выжимка: о чем этот урок 67 | - Цель урок: Список квизов, которые включены в этот урок 68 | - Резюме по уроку: Ответы на квизы 69 | 70 | 1. Перед началом урока можно посмотреть -- какие есть квизы по уроку 71 | 2. В процессе можно создавать свои собствственные квизы 72 | 3. В процессе можно добавлять заметки 73 | 4. В уроки добавляются таймеры -- сколько потрачено на него времени 74 | 75 | Типы уроков: 76 | 77 | - Лекция 78 | - Экзамен 79 | - Зачет 80 | - Лабораторная работы 81 | - Дискуссия 82 | - Мастер-класс 83 | - Экскурсия 84 | - Презентация 85 | - Короткая практическая задача 86 | 87 | ### Курс 88 | 89 | Объект, содержащий информацию о последовательности тем 90 | 91 | 1. Курс состоит из последовательностей 92 | 2. Последовательности разбиты на временные промежутки 93 | 3. Темы разбиты на последовательности 94 | 4. Неделя в курсе объявляется под какой-то темой и пользователь учит только связанные с этой темой уроки на протяжении этого времени 95 | 96 | ### Расписание 97 | 98 | Объект, содержщий информацию о рассписании. С помощью него нужно планировать время и рассписание занятий 99 | 100 | 1. Получает информацию из календаря о доступных слотах 101 | 2. Следит за своевременным исполнением квизов 102 | 3. Если квиз выполнен не правильно, переформировывает по нему расписание 103 | 104 | ### Определение 105 | 106 | Список определений. Их нужно постоянно держать перед глазами и повторять. Определения связаны с материалами. После изучения материалов, нужно контролировать их запоминание. 107 | 108 | ### Вопрос 109 | 110 | Что-то не получается и нужно найти решение проблемы. Вопрос записывается в базу, тегируется 111 | 112 | Когда решение найдено, ответ на него нужно раскрыть и приложить материалы. 113 | 114 | ### Лента 115 | 116 | Материалы, которые подтягиваются из глобальных источников. 117 | 118 | К примеру я хочу получать новые release noutes / RFC / PIP / Высокооцененные материалы на тему 119 | 120 | ## Деление обучения 121 | 122 | - Регулярные занятия 123 | - Цель дня 124 | - Тема недели 125 | - Главная тема 126 | - Quiz 127 | - Определения 128 | - Проект 129 | 130 | ### Регулярные занятия 131 | 132 | Стоят в календаря по определенным дням и определенное время 133 | 134 | - Английский / Домашка (2 часа в неделю) 135 | - Работа с OpenSource (2 часа в неделю) 136 | - Алгоритмы (1 час в неделю x2) 137 | - Stackoverflow (1 час в неделю) 138 | - Работа над ошибками недели / Более грубокое изучение материала / Закрытие недели (4 часа в неделю) 139 | 140 | ### Тема недели 141 | 142 | Выбирается случайная тема недели, материалы по которой будут появляться всю неделю 143 | 144 | ### Цель дня 145 | 146 | В начале дня ставится какая-то цель, совпадающая с темой недели. Задача должна быть маленькой и практической 147 | 148 | ### Главная тема 149 | 150 | Тема main line, по которой идет какая-то длинная программа, которую нельзя прервать. К примеру курс с дедлайнами или какой-то дургой не делимый крупный материал. Изучение в течении недели должно быть не больше, чем тема недели. Но при этом достаточной, чтобы изучить все в нужные сроки. Приоритет главной темы выше, чем у темы недели. Раз в 2 недели подтема из главной темы должна становится темой недели 151 | 152 | ### Quiz 153 | 154 | Вопросы, которые сыпятся в течении дня куда-то. На них нужно ответить сразу, когда они приходят 155 | 156 | ### Определения 157 | 158 | Лента из определний, которые можно учить nonstop, если нечего делать 159 | 160 | ### Проект 161 | 162 | ## Интерфейс 163 | 164 | Интерфейс должен подключаться к базе. В настройках указывается DB_DSN 165 | 166 | ```Если cli загружается впервые, нужно проинициализировать базу фикстурами``` 167 | 168 | Базовая ручка интерфейса -- работа с материалами в сыром виде 169 | 170 | ### Инструментыи 171 | 172 | - Добавлять новые объекты в несортированное с подсказками по полям объекта 173 | - Получение списка не сортированных материалов 174 | - Создавать законченные материалы из несортированных 175 | - Добавить результаты 176 | - Добавить URL на календарь, по которому строить слоты расписания 177 | - Добавить quiz 178 | - Добавить определение 179 | - Подписаться на RSS 180 | - Отобразить индекс материалов 181 | -------------------------------------------------------------------------------- /cli/docs/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/docs/interface.png -------------------------------------------------------------------------------- /cli/docs/interface.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/docs/interface.xmind -------------------------------------------------------------------------------- /cli/docs/remember.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/docs/remember.png -------------------------------------------------------------------------------- /cli/docs/scheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/docs/scheme.png -------------------------------------------------------------------------------- /cli/docs/scheme.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/docs/scheme.xmind -------------------------------------------------------------------------------- /cli/knowledge_base.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/cli/knowledge_base.db -------------------------------------------------------------------------------- /materials/index.md: -------------------------------------------------------------------------------- 1 | # Индекс материалов 2 | 3 | ## Базовые знания работы компьютерных систем 4 | 5 | ### Курсы: 6 | - https://www.coursera.org/learn/comparch (Архитектура ЭВМ) 7 | - https://stepik.org/course/253/promo (Архитектура ЭВМ) 8 | - https://www.edx.org/course/compilers (Compilers) 9 | - https://www.coursera.org/specializations/c-plus-plus-modern-development (Искусство разработки на современном C++ Specialization) 10 | - https://www.coursera.org/learn/programming-languages 11 | - https://www.coursera.org/learn/programming-languages-part-b 12 | - https://www.coursera.org/learn/programming-languages-part-c 13 | - https://training.linuxfoundation.org/training/linux-kernel-internals-and-development/#prerequisites ( Linux Kernel ) 14 | - https://www.coursera.org/learn/build-a-computer#syllabus (Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)) 15 | 16 | 17 | ### Книги: 18 | - Code (Charles Petzlod) https://www.ozon.ru/context/detail/id/125884/ 19 | - Operating Systems: Three Easy Pieces https://github.com/mthipparthi/operating-systems-three-easy-pieces/blob/master/book.pdf 20 | - Structure and Interpretation of Computer Programs (Harold Abelson) https://web.mit.edu/alexmv/6.037/sicp.pdf 21 | - Compilers: Pearson New International Edition: Principles, Techniques, and Tools (A.V. Aho) http://ce.sharif.edu/courses/94-95/1/ce414-2/resources/root/Text%20Books/Compiler%20Design/Alfred%20V.%20Aho,%20Monica%20S.%20Lam,%20Ravi%20Sethi,%20Jeffrey%20D.%20Ullman-Compilers%20-%20Principles,%20Techniques,%20and%20Tools-Pearson_Addison%20Wesley%20(2006).pdf 22 | - Linux Kernel Development, 3rd Edition https://github.com/eeeyes/My-Lib-Books/blob/master/Linux%20Kernel%20Development%2C%203rd%20Edition.pdf 23 | - АРХИТЕКТУРА КОМПЬЮТЕРА (Э. ТАНЕНБАУМ) https://nsu.ru/xmlui/bitstream/handle/nsu/9054/tanenbaum_AC.pdf 24 | - Linux System Programming (Robert Love) https://doc.lagout.org/programmation/unix/Linux%20System%20Programming%20Talking%20Directly%20to%20the%20Kernel%20and%20C%20Library.pdf 25 | - Parallel programming for multicore and cluster systems (Thomas Rauber) https://doc.lagout.org/science/0_Computer%20Science/5_Parallel%20and%20Distributed/Multicore%20Programming/Parallel%20Programming%20for%20Multicore%20and%20Cluster%20Systems.pdf 26 | 27 | 28 | ### Лекции: 29 | - https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter 30 | 31 | ## Сети 32 | 33 | ### Курсы 34 | - https://www.coursera.org/learn/crypto (Cryptography I) 35 | - https://www.udacity.com/course/computer-networking--ud436 (Security and Software Defined Networking) 36 | - https://www.coursera.org/specializations/networking-basics (Cisco Networking Basics Specialization) 37 | - https://www.coursera.org/specializations/computer-communications (Computer Communications Specialization) 38 | 39 | ## Базовые знания математики 40 | 41 | ### Курсы: 42 | - https://www.coursera.org/learn/mathematical-thinking (Introduction to Mathematical Thinking) 43 | - https://www.coursera.org/learn/matematika-dlya-vseh (Математика для всех) 44 | - https://stepik.org/course/2461 (Линейная алгебра) 45 | - https://www.coursera.org/learn/algebra-lineynaya (Линейная алгебра) 46 | - https://www.coursera.org/learn/probability-theory-basics (Теория вероятностей для начинающих) 47 | - https://stepik.org/course/3089 (Теория вероятностей) 48 | - https://www.coursera.org/learn/kombinatorika-dlya-nachinayushchikh (Комбинаторика для начинающих) 49 | - https://stepik.org/course/126/syllabus (Основы теории графов) 50 | - https://www.coursera.org/learn/teoriya-grafov (Теория графов) 51 | - https://www.coursera.org/learn/sluchajnye-graphy (Случайные графы) 52 | - https://www.coursera.org/learn/gametheory (Теория игр) 53 | - https://stepik.org/course/902/syllabus (Введение в дискретную математику) 54 | 55 | 56 | ### Книги: 57 | - https://github.com/hmemcpy/milewski-ctfp-pdf/ (Category Theory for Programmers) 58 | 59 | ## Алгоритмы 60 | 61 | ### Курсы 62 | - https://stepik.org/course/83 (Дискретные структуры) 63 | - https://www.coursera.org/specializations/algorithms (Специализация Алгоритмы) 64 | - https://www.coursera.org/learn/sportivnoe-programmirovanie (Спортивное программирование) 65 | 66 | ## Базы данных 67 | 68 | 69 | 70 | ## Проектинование ПО 71 | 72 | ### Курсы 73 | - https://stepik.org/course/75/syllabus (Функциональное программирование на языке Haskell) 74 | - https://stepik.org/course/693/syllabus (Функциональное программирование на языке Haskell (часть 2)) 75 | 76 | 77 | ## Облачная инфраструктура 78 | 79 | ### Курсы 80 | - https://ocw.mit.edu/courses/mathematics/18-337j-parallel-computing-fall-2011/ (Parallel Computing) 81 | - https://www.coursera.org/specializations/cloud-computing (Cloud Computing Specialization) 82 | - https://www.coursera.org/professional-certificates/gcp-cloud-architect (Cloud Architecture with Google Cloud Professional Certificate) 83 | 84 | ### Сертификаты: 85 | - https://training.linuxfoundation.org/certification/certified-kubernetes-application-developer-ckad/ (CKAD) 86 | 87 | 88 | ## Offtop материалы, которые советуют пройти 89 | 90 | ### Курсы 91 | - https://www.coursera.org/specializations/deep-learning (Deep Learning Specialization) 92 | 93 | ## Индекс материалов о языках 94 | 95 | ### Курсы 96 | - https://www.coursera.org/specializations/google-golang 97 | - https://www.coursera.org/learn/julia-programming 98 | 99 | -------------------------------------------------------------------------------- /plan/education.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/plan/education.png -------------------------------------------------------------------------------- /plan/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/plan/map.png -------------------------------------------------------------------------------- /plan/map.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p141592/cs_education/6968ecd448abf6b2bb39c6ea3a506ee77d763976/plan/map.xmind --------------------------------------------------------------------------------