Курс для школьников Силаэдра по приложениям языка Python
Перед освоением этого курса школьник должен знать и уметь следующее.
Окружающая среда. Уметь запускать код на Python с помощью командной строки (и, возможно, из IDE). Понимать древовидную структуру файлов и папок. Уметь создавать заданную структуру директорий. Уметь пользоваться менеджером пакетов pip (pip install lib, чтение сообщений об ошибках).
Базовые знания языка программирования. Уметь работать с переменными. Знать, какие типы данных представлены в языке и при каких операциях одни типы превращаются в другие и по каким правилам. Уметь работать со строками: явное задание строк, срезы, неизменяемость строк. Уметь работать с массивами (lists): доступ по индексу, вставка, удаление, (*) list comprehension. Уметь писать циклы вида for element in container и вида for i in range(len(container)). Уметь работать с функциями: создавать функции и вызывать их, принимать и возвращать от нуля до нескольких аргументов.
Усиленные знания языка программирования. Уметь работать со словарями. Понимать, что такое deep copy и shallow copy, уметь привести пример кода, который приводит к неожиданным с точки зрения не владеющего знаниями о копировании результатам. Знать на базовом уровне, что такое сложность алгоритма. Знать сложности операций с изученными структурами данных (массивом, словарем). Понимать, чем отличаются вызов функции от присваивания функции в переменную (в чём разница написания имени функции со скобками и без).
ООП. Владеть концепцией класса и объекта класса. Понимать, что такое методы класса. Уметь создавать классы с заданными полями. Понимать, для чего нужно ключевое слово self. Иметь представление о наследовании.
Отладка кода. Уметь использовать отладочную печать, иметь навык самостоятельного решения проблем с кодом: поиска как минимум конкретной строки, на которой произошла ошибка, умение сформулировать, что именно не так.
Культура написания кода. Уметь писать docstring и понимать, зачем они нужны. Знать о PEP-8. Уметь проверять свой код на соответствие заданным style-guides и исправлять код соотвественно. Осознавать важность написания хорошего кода.
Использовалось явно (урок такой тематики):
- Графы: GraphViz, networkx (урок был про networkx, но интерфейс GraphViz очень похож, и в целом сильной разницы нет)
- Работа с картами: geoplotlib (на дататоне, надо переделать в полноценный урок)
- Графики и данные: matplotlib
- Простые алгоритмы машинного обучения: kNN
- Flask
- Работа с изображениями (модель RGB, работа с картинкой как с массивом)
- Основы работы с текстами: токенизация, работа со словарем токенов, ...
- wikipedia
Использовалось неявно (как подзадание к каким-то урокам):
- Системы контроля версий: Git(Hub)
- Парсинг веб-сайтов: Beautiful Soup
- Работа с csv
- multithreading
Ещё не использовалось:
- Сохранение классов: pickle
- Перевод: Google Translate API
Будет использовано в будущем:
- Динамическая графика: PyGame
- telebot, VK API
- TkInter / Qt
- Сеть: sockets, server-clients
- map/reduce
- Простые алгоритмы машинного обучения: деревья, регрессия,
- Django
- Работа с аудио (librosa?)
- Работа с видео
- Тех
- Работа с байт-кодом (?)
- Подключение кода на С++
- multithreading
- Написание своей библиотеки для чего угодно
- numpy
Полезное: https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks https://leetcode.com/problemset/all/
Случайные идеи
- Сделать диаграмму Вороного по точкам
Для бота в мессенджере:
- Отправляем названия понравившейся картины в музее, бот изредка присылает похожую картину.