Домашни > Време е да помислите за проектите си!


Време е да помислите за проектите си!
Краен срок: 04.01.2024 18:00
Точки: 10

Ако все още не сте го направили, време е да помислите малко за курсовите си проекти. Ще ви стимулираме да го направите, като ще оценим дефиницията, която сте подготвили. Тук оценяваме качествата на дефиницията, а не самия проект. Целта е вие да подготвите идея, а ние да ви дадем обратна връзка за това доколко тя е удачна като сложност за защитата. Приготвили сме ви темплейт, по който да работите, както и пример с нашата идея за проект. Описанията на проектите си предавайте както нормално домашно - качвате файл с *.py разширение. За да качите без да имате синтактични грешки, закоментирайте всичко с тройни кавички. Реално очакваме файл с един голям коментар. Знаете - колкото по-рано предадете, толкова по-рано ще можем да ви върнем обратна връзка. :) ## Инструкции за [The Final Project/Заветното Начинание] [Title/Звание] Кратко заглавие на проекта, с което майка ви би се гордяла. ``` Де-бил ``` [Description/Обрисовка] Общо описание на проекта, с което да хванете вниманието на всички популярни рекрутъри в LinkedIn. ``` Де-бил - Дебилно мобилно приложение, което при наличието на бил (сметка), позволява на потребителя да се дебилне (да отмени ефекта на сметката върху личните си финанси), чрез автоматично разделяне на разходите между членовете на компанията, в която се намира. ``` [Functionalities/Надарености] По какъв начин потребителят може да взаимодейства с програмата и какви операции извършва програмата в отговор на това. Това включва и задкулисните действия на приложението ви (не подробно алгоритмично описание, а накратко - с по едно изречение). ``` Приложението следи Revolut за изходящи транзакции и при засечено плащане, което подсказва, че има обща сметка, която трябва да се дебилне, сканира околността за други дебилни потребители, които са участвали във вечеринката. Приложението автоматично разпределя сметката между участниците спрямо коефициента им на дебилност по време на срещата. Приложението следи времето, което потребител е прекарал в цъкане на телефона си и прилага по-висок коефициент на дебилност за тези, които са прекарали повече време пред екрана си. Де-бил прави реверанс към дамите, които са в седмицата преди месечния си период на недоволство, като понижава коефициента им на дебилност. Де-бил е съпричастен с футболната привързаност на господата и в случай на футболно дерби, с участието на любимият им отбор, което се състои по време на вечеринката, им позволява да следят резултата, като понижава коефициента им на дебилност. ``` [Milestones/Възлови точки] Разбивка, показваща по-големите логически обособени парчета от проекта. С други думи - описание на отделните модули* на проекта. В някои случаи това могат да са отделните парчета функционалност (модул за комуникация с потребителя, модул за конфигуриране на приложението, модул за persistence, който ви позволява да save-вате играта), в други няма едно към едно взаимоотношение с конкретно взаимодействие на потребителя с програмата (модул за scheduling на задачи, модул за web scraping, модул за AI на ботовете в играта). Кръстили сме ги "Milestones/Възлови точки", защото на практика това ще са стъпките, през които ще трябва да минете, за да имате финалния вид на работещото ви приложение (може би не в същата последователност, както първоначално ще предположите). **Писали сме "модули", но не е задължително да са модули в Python смисълa на думата.* ``` Гръбнак (контролер), който обработва логиката. Графичен интерфейс. Мониторинг система за време, прекарано на мобилното устройство. Сканиращ модул за дебилни потребители в близост до мобилното устройство. Комуникация с Revolut. Комуникация с Google календар. Комуникация с LiveScore. ``` [Estimate in man-hours/Времеоценка в човекочасове] Груба оценка на това колко време ще ви отнеме проектът, във формата, в която очакваме да го видим и оценим ние. С други думи, ако желаете да си разкрасите web проекта със CSS, да си нарисувате красиви sprite-ове за играта и прочие - това няма да оценяваме, съответно не ни е важно колко време ще ви отнеме, ако решите да надградите проекта си извън контекста на "Въведение в програмирането на Python". Ако искате, можете да си направите и разбивка по milestones, но няма да държим на това. ``` 42 часа ``` [Usage of technologies/Потребление на технологии] Разпишете какви frameworks/модули/библиотеки ще използвате за проектите си - Django, Flask, Numpy и Pandas, PyQt или Pygame, etc. ``` Интерфейс - Kivy Комуникация с Google - google-api-python-client, google-auth-httplib2, google-auth-oauthlib Комуникация с Revolut - revolut-python Комуникация с LiveScore - наши хора сме с девовете там и ще ни дадат API, което ще използваме с requests. ``` # Бел. ред. - Очакваме проектите ви да са качени в github. - Напомняне - проектите носят до 60 точки и са **задължителни**. С други думи - няма да пишем оценки на хора, които нямат дори минимален проект. Сори. - Не забравяйте, оценяването на проектите е следното - 33% функционалност, 33% стил, 33% тестове, 1% вариация в настроението на проверяващите! - Проектите се предполага да демонстрират знания и разбиране на Python. Не се впускайте в прекалено много CSS, JavaScript, красив UI за desktop приложенията или игрите и прочие. Не че няма да го оценим, но би следвало да ви е с доста по-нисък приоритет и да инвестирате в това само ако ви остане време. - За тази задача ще получите точки, съобразени с това, колко добре сте разписали проектите си (малко по-субективно от юнит тестове, но ще ви върнем обратна връзка). - Нашият примерен проект по-горе е в стремеж да ви покажем къде какво се предполага да има като съдържание. Не е пример, който ще бъде оценен с 10 точки, имайте го предвид. ## P.S. Ето ви и версия за copy-paste: ``` [Title/Звание] [Description/Обрисовка] [Functionalities/Надарености] [Milestones/Възлови точки] [Estimate in man-hours/Времеоценка в човекочасове] [Usage of technologies/Потребление на технологии] ```
 1import unittest
 2
 3
 4class TestPseudo(unittest.TestCase):
 5
 6    def test_pseudo(self):
 7        pass
 8
 9
10if __name__ == '__main__':
11    unittest.main()
1
Дискусия
Божидар Кьоров
29.01.2024 18:43

да, ще мога онлайн, благодаря!
Георги Кунчев
25.01.2024 10:53

Ако защитата е онлайн, можеш ли през същия уикенд? ПП: По принцип промени правим само по изключение с основателна причина, а не за удобство :(
Божидар Кьоров
25.01.2024 10:43

Възможно ли е да се представя на по ранна дата от 17ти, защото на мен не ми е удобна
Георги Кунчев
03.01.2024 16:46

Няма изисквания за естеството на проекта. Ако е достатъчно предизвикателен, може и в чисто конзолен вариант.
Лора Христова
03.01.2024 15:38

Здравейте! Исках да попитам по-скоро за насоката на проекта, отколкото за домашното. Въпросът ми е, задължително ли е проектът да има WEB репрезентация, тъй като ми се искаше да направя игра, но единственият начин, по който си представям реализацията ѝ е чрез конзолата?
Георги Кунчев
23.12.2023 21:27

Звучи добре. Колко дълбоко ще влезеш зависи от теб, но посоката е ок
Данаил Тодоров
23.12.2023 19:26

Това адекватно ли е да се пише: 3.2 Визуализация за съответна книга (по заглавие): 3.2.1 Намиране на съответната книга от базата данни 3.2.2 Принтиране на информацията за съответната книга. Като Визуализация за съответна книга (по заглавие) е една от функционалностите? Реално почнах да пиша за всяка функционалност как се изпълнява, това ли се очаква?
Георги Кунчев
23.12.2023 15:57

Функционалностите описват самия проект. Какво и как ще прави. Възловите точки описват твоите стъпки за реализиране на този проект. В доста ситуации двете се припокриват, но не е задължително това да се случи. Например функционалност дефинирана като "анализиране на писмата, дошли при Дядо Коледа", може да включва възлови точки от типа на: - сортиране на писма; - регекс, който парсва текста на едно писмо; - добавяне на синтезирана информация от писмо към база данни.
Данаил Тодоров
23.12.2023 15:25

Един въпрос: Не разбирам много каква е разликата между възлови точки и функционалности? Понеже мисля да правя Информационна система за библиотека и ще имам добавяне на книги, махане, сортиране и тн...то това са фунцкионалности и не знам какво трябва да се напише на възловите точки. Ако може някакъв съвет? :))