Указания към проектите за курса “Програмиране с Python”#
Какво е проект ?#
Въпреки че темите за проекти са отворени, можем да ви дадем няколко идеи какво очакваме. Ще разделим проектите на няколко типа, и ще дадем общи насоки за всяка от тях:
Общи насоки:#
Очакваме различни функционалности, в зависимост от темата. Примерно, ако правите приложение за бележки през конзолата, очакваме да имате начин за запазване на бележки, категоризиране, напомняния и т.н.
Проектите ви трябва да могат да бъдат пуснати на друга машина - кратък INSTALL.md или инструкции в README.md биха ни свършили работа
Може да използвате всякакви библиотеки, но очакваме да имате достатъчно функционалност написана от вас
Трябва да имате тестове
Трябва проекта да е качен в Git (Github, Gitlab, Bitbucket, т.н.)
Добър error handling е очакван
Очакваме демонстрация на проекта - 5-10 минути демонстрация и 5 минути за въпроси
Примерни идеи и насоки към тях#
Уеб приложение
Може да използвате Flask, Django, или някакъв друг web framework
Ще се оценява частта написана на Python (т.е. ако използвате Angular/JS/TS за front-end-а, а backend-а е на Python, ще оценяваме само Python частта)
Може да напишете и само backend/API, но очакваме да може да демонстрирате работата му по някакъв начин
Конзолно приложение
The sky is the limit here - може да направите много неща, в зависимост от вашите интереси
Очакваме да имате адекватен CLI
Четене/писането от файл е препоръчителна функционалност
Desktop приложение
Въпреки, че в рамките на курса няма да успеем да разгледаме примери за GUI framework, остава възможността някой да направи desktop приложение с GUI
Може да използвате PySimpleGui, TKInter, PyQT или друг framework
Няма да оценяваме красота на интерфейса, но ще оценяваме начина по който е написан
Игри
Както и при desktop приложенията, въпреки че не сме разглеждали framework за игри, все пак даваме възможност за създаване на игра
Може да използвате PyGame или други
Може и да пропуснете графичния интерфейс, и да направите игра, която да се играе в конзолата (текстов интерфейс е валиден вариант), но тогава очакваме малко повече функционалности
Друго
Ако проекта ви не се вписва в никоя от горните 4 категории - поздравления, ще правите нещо много интересно
Ако ще ни показвате някакъв проект свързан с AI/ML - ще се изкефим, но очакваме нещо повече от невронна мрежа с
pytorch,kerasилиtensorflowАко имате идея да напишете библиотека за нещо което го няма - очакваме много добро пакетиране, разделение на модули, тестове, добри абстракции и error handling
Wrap-ването на някаква C/C++ библиотека в Python също би било интересен проект, но ще очакваме малко повече от един wrapper
Как да си избера тема проект ?#
Измисляте си тема
Записвате я в канала
projectsв ДискордОбсъждате я с нас
Одобряваме я или я пращаме за rework
Крайният срок за избирането на тема е края на семестъра - 19.01.2023. Крайният срок за проектите е 11.02.2023
Какви са критериите за проект ?#
Total: 40 точки
Защита - 10 точки
Функционалност - 10 точки
Разделение на модули - 3 точки
Използване на “Питонизми” - 3 точки
list comprehensions, generators, any/all, slicing
Използване на type hints - 3 точки
Автоматично оценено, чрез
mypy
PEP-8 - 3 точки
Автоматично оценено, чрез
pylint
Тестове - 5 точки
Автоматично оценено, чрез
coverage
requirements.txt - 1 точка
Автоматично оценено
Git - 1 точки
README - 1 точка