Какво очакваме от вашите проекти?

  1. Очевидното: код.

    Кодът трябва да покрива функционалността, описана в заданието. Също така трябва да се държи адекватно във всички случаи: грешен потребителски вход, грешки от околната среда, паднал таван. Под адекватно се има предвид следното: ако е възможно — нека работи правилно, а ако не е — да уведоми потребителя по подходящ начин защо не може да работи правилно. Unit тестове

    Хубаво ще е тестовете ви да покриват възможно най-голяма част от кода и разклоненията в него. Също така нека са поставени в отделни класове (файлове) в зависимост от логичеката структура на проекта ви. Игри и друг GUI intensive софтуер

    Когато сте избрали да пишете неща, наподобяващи игри — или каквито и да е други проекти, изискващи сериозно GUI — постарайте се да "откачите" основния си код максимално много от рисуването/графиката/GUI-то. Целта ви е да имате много ясно разделение и абстракция между "ядрото" на вашия проект и графичния му интерфейс. Добре би било основната логика на проекта ви да се намира изцяло в "ядрото", под формата на класове, модули и прочее, като това ядро предоставя на своите позлватели някакво API. Тоест, стремите се да пишете въпросното ядро все едно пишете библиотека, която ще се преизползва в друг(и) софтуер(и). От там нататък, GUI-то се прави като wrapper на тази библиотека, ползва публичното й API и е един вид pluggable компонент към нея.

    Можете да минете и само с кода от основното ядро, който имплементира функционалност без GUI, ако сте писали обилно тестове. Този проект е подходящ шанс за вас да пробвате подхода TDD. Допълнително, това ще ви помогне да покриете едно от изискванията, а именно да имате пълно покритие с unit тестове.

    GUI-то е добре да е съвсем просто и може да минете без особено тестване там, освен, евентуално, някой друг инреграционен тест. Може да минете и с най-просто и дървено конзолно UI, което е тънка обвивка около API-то на "ядрото". Ако сте запалени, може да направите повече от едно GUI. Последното е възможно да ви донесе бонус точки :)

    Документация

    На този, който ще чете кода ви ще му бъде нужен някой и друг docstring, опитайте се да бъдат максимално полезни за четящия и да казват същественото, а не само това, което може да се види с един поглед в кода.

    Version control

    Задължително е. Силно препоръчваме да ползвате Git и GitHub. Кодът на проекта трябва да е публичен. Ако все пак държите да ползвате друга version control система, пак ще приемем това изискване за покрито. Важното е да има някакъв version control.

    Оценяване

    Проверката на функционалността на проектите няма да се прави автоматизирано, което означава че ви се дава свобода да изясните по-дребните детайли.

    • 50% от точките, за вeрен и отговарящ на условието код. Трябва като минимум да покриете условието на проекта (по ваш избор можете да го разширите, но не и да променяте/пропускате части от него)
    • 30% за стил, другояче казано: за четим код, добър дизайн, лесни възможности за разширяване на програмата ви, достатъчна документация.
    • 20% отиват при добрите unit тестове.

    Максимален брой точки: 60

  2. Може ли малко по-конкретно инфо? Като например някакви примерни проекти/теми. Има ли условия като минимален обем или минимална функционалност или каквито и да било минимални изисквания ?

  3. Ами не :)

    Искаме просто да измислите нещо, което ви се прави. Ок сме това да е полезна библиотека, забавна игра, уеб приложение, настолно приложение с графичен интерфейс, конзолен туул, мобилно приложение и т.н.

    Не ви караме да пишете есе, че да ви кажем минимум 4000 думи. Искаме просто да видим проект с добре обмислена структура и начин на комуникация между модулите вътре.

    Минималната функционалност зависи от идеята. Ако предложиш нещо твърде елементарно, просто ще ти предложим още feature-и, с които да ти усложним решението (шансът да си избереш друга идея ще е наличен). Ако предложиш нещо твърде комплексно, ще си изберем неща, които няма да изискваме задължително, но ще смятаме за огромен плюс, ако направиш.

    П.П.: Така и така сме подхванали темата. Не очаквайте внезапни отговори, на изпратените предложения. Даваме такива само на проекти, които сме виждали минали години и сме запознати със сложността. За тези с уникални идеи, ще ни трябва малко по-сериозна извадка от предложения, за да можем да си установим възмомжно най-обективни изисквания.

  4. Ще имаме ли code review на проектите- тоест нещо от сорта 1 седмица преди крайния срок някой да им хвърли поглед и каже това и това не е направено добре и ти куца. В други курсове this was immensely invaluable. Ще може ли да постнем няколко идеи до крайния срок и чак след получения коментар да решим какво да пишем.

  5. Може ли да използваме Qt ? Изобщо има ли някакви tools или frameworks който не може да ползваме ?

    Може да използвате всякакви библиотеки, стига да са портнати за Python >=3.3.x. Всъщност, ако идеята ви не е библиотека, ви съветваме да използвате такива.

    Ще имаме ли code review на проектите- тоест нещо от сорта 1 седмица преди крайния срок някой да им хвърли поглед и каже това и това не е направено добре и ти куца.

    Ще имаме линк към вашите хранилища и ще хвърляме по някое и друго око. Имайте предвид, че сте 140 души (поне толкова бяхте на теста) и едва ли ще можем да минем през всички. Но е напълно ок е да си поискате code review по мейл.

    Ще може ли да постнем няколко идеи до крайния срок и чак след получения коментар да решим какво да пишем.

    В един мейл изпрати всичките си идеи, но добре описани. Ние няма да те принудим да избереш конкретна, но ще можем да ти дадем насоки. След което ще очакваме да кажеш коя точно си избрал.

    П.П.: Преди да пуснете мейл, прочетете новината с напътствия. Не са толкова сложни, а вече има хора, които не спазват тривиални неща в тях като изискването за заглавие от типа "Проект на {}".format(faculty_number).

  6. Айде за тези, които имат проблем да се ориентират из сайта, публикувам новината и тук. Току виж са намалили хората, които пращат глупости.

    Трябва да ни изпратите мейл на fmi@py-bg.net с описание на идеята за проект, която сте си избрали, до 19.04.2014, 23:59:59. Subject-а на мейла трябва да е от вида "Проект на XXXXX.", където XXXXX е факултетният ви номер (например: "Проект на 804242"). Ние няма да ви дадем списък от проекти, от които да си избирате. Прочетете какво се очаква от вашите проекти, харесайте си нещо, което ви се прави и го започнете.

    Най-важно за нас е да си изберете нещо, което ви е интересно, което ви се пише, или което ви се струва предизвикателно и от което смятате, че ще научите много. Ако не ви идва на ум нищо, което ви е интересно и което искате да изкодите, може би имате някакъв друг проблем.

    Мейлът не е нужно да съдържа един тон спецификация. Просто накратко ни кажете какво сте решили да правите. Допустимо е и да питате нещо, ако се колебаете много какво да изберете и имате нужда от насока. Важното е да ни пратите мейл по темата с нещото/нещата, които сте избрали.

    Ако не сме получили мейл от вас до тази дата и час и ако искате кредити и оценка, ще трябва да дойдете с проект през септември.

  7. Ако представим проекта септември оценяването и скалата по която ще бъде направено същата ли ще е? Ще бъдем ли санкционирани по някакъв начин и точките натрупани през годината и точките от milestone-ове ще се запазят ли?

Трябва да сте влезли в системата, за да може да отговаряте на теми.