Professional Documents
Culture Documents
ученически проекти
shalamanov.marin@gmail.com
Линк към този файл: sofiacode.com/noit
Всеки има права да коментира в документа. Ако нещо не е ясно, не сте съгласни или
искате да допълните, моля коментирайте.
Съдържание
Цел на документа
Състезания
Ръководство
Предварителна подготовка
Идея за проект
Лоши идеи за проект
Определяне на катерогия
Определяне на технологии
Реализация
Зачитане на авторски права
Усложняване на проекта
Документация за НОИТ
Заглавна страница
Идея и цели на проекта
Основни етапи в реализирането на проекта
Ниво на сложност на проекта
Логическо и функционално описание на решението
Реализация
Използвани технологии
Описание на приложението
Предаване на проекта
Защита на проекта
Благодарности
Цел на документа
Целта на този документ е да събере на едно място полезна информация за
ръководителите на ученически проекти по информатика и информационни технологии.
Документът ще бъде от специална полза за участващите в Националната олимпиада по
Информационни технологии (НОИТ). Фокусът на документа е състезателната група 9-12
клас и по-скоро категориите “Интернет приложения” и “Приложни програми”. Въпреки това
насоките тук могат да бъдат полезни и за учениците в другите категории (Мултимедийни
приложения), възрастови групи (5-8 кл.) и състезания (напр. УчИМИ).
Състезания
Документът е основно насочен към участващите в националната олимпиада по
информационни технологии. В нея ученици задочно разработват технологични проекти,
документират постигнатото и го представят пред комисия. Олимпиадата се провежда в
три кръга. На първия кръг се кандидатства с идея за проект и обикновено всички
участници преминават на втория областен кръг. Там учениците защитават проекта пред
комисия. Областната комисия избира проекти, които заслужават да продължат нататък.
Всички избрани проекти се разглеждат от национална комисия, която задочно избира по
20 проекта в категория, които се допускат до трети кръг (това невидимо пресяване често
се нарича “междинен кръг”). На третия кръг участниците защитават проекта си и попълват
тест по обща култура в сферата на технологиите. Повече информация, регламент и
срокове може да намерите на страницата на олимпиадата - http://edusoft.fmi.uni-sofia.bg/
Ръководство
Ролята на ръководителя на проекта, който много често е учителя по информатика или
информационни технологии от училище, е да помага на ученика сам да изпълни проекта
си. От ръководителите не се очаква да определят идеята на проекта, да пишат код, да
дебъгват и т.н.
Относно идеята на проекта:
Най-добре е ученикът да я измисли. Това което си мислят учениците е “това е моята идея
и аз работя по нея” спрямо “това ми даде учителя и аз трябва да го правя”. Учителят
може да помогне с насоки, напр. “Разгледай неща за изкуствен интелект”, “разгледай
какъв софтуер се използва в медицината”, “говори с Х за идеи”, “много подобна идея е
представяна вече, помисли как да я промениш малко”, “има вече подобни разработки в
интернет, с какво твойта е по-добра и/или по-различна”.
Относно разработването на проекта учителят ще е изключително полезен със съвети за
това къде ученикът да търси отговори на въпросите си (сайтове, форуми, групи, познати с
повече опит), но определено от него не се очаква да може да програмира на всички езици
или да използва всички технологии.
Предварителна подготовка
Ако ученикът има желание да разработва проект, и има достатъчно време до крайния
срок (повече от 3 - 4) месеца, е препоръчително преди да започнете с конкретната работа
да отделите време за учене. Идеалният вариант за това е по време на лятната ваканция,
преди да е започнала учебната година. Полезни теми за изучаване са:
● Писане на качествен програмен код / Writing clean code
● Обектно ориентирано програмиране / Object Oriented Programming
● Design patterns
● Git, Github, Gitlab
● Бази от данни (напр. MySQL )
● Въведение в изкуствения интелект
● Уеб разработка / Web development
● Тестване на софтуер - Unit tests, Integration tests
По всички тези теми има множество онлайн курсове (Udacity, Coursera, Udemy, edX,
YouTube), както и книги, блог постове и пр.
Идея за проект
Някои насоки за намиране на идея:
Разбира се, по подобни теми все още може да се работи, но бъдете сигурни, че можете
да представите нещо ново по темата.
Определяне на катерогия
Категориите в НОИТ за старшата възрастова група са Интернет приложения, Приложни
програми, Мултимедийни приложения. Следват примерни типове проекти за всяка
категория:
● Интернет приложения
○ Информационна система
○ Уеб игра
○ Корпоративен сайт на институция
○ Уеб приложение за мобилни телефони
○ Уеб интерфейс към друго приложение
● Приложни програми
○ Мобилно приложения
○ Десктоп приложения
○ Вградени системи (напр. Arduino, Raspberry Pi)
○ Настолни игри
● Мултимедийни приложения
○ Интерактивна електронна галерия
○ Интерактивен филм
○ Мултимедийно интерактивно портфолио
○ Интерактивно уеб-базирано мултимедийно приложение (напр. уеб базирана
игра)
Често има проекти, които участват в грешната категория. В такъв случай комисията е
длъжна да дисквалифицира проекта.
Определяне на технологии
За различните части от проекти има множество технологии, които могат да се използват
за реализацията му. Как да изберем най-подходящите?
Най-общо можем да разделим технологиите в три групи:
● Остарели: напр. VisualBasic, Delphi, FORTAN, Lisp
● Масово използвани: Java, .Net, Spring boot, Angular, Docker
● Нови: Serverless, Dart, Elm
За състезания като НОИТ кодът на проекта е много важна част. Бъдете сигурни, че е
добре структуриран и следва добрите практики.
● Не трябва да има закоментиран код.
● Да бъде добре форматиран. Отварящите и затварящите скоби {} да следват един
и същи стил, да се спазват табулациите.
● Ясен стил за именуване на променливите, класовете, функциите.
● Функционалността е разделена логически по файлове.
● Няма файлове с код на няколко езика (напр. HTML и CSS трябва да са в отделни
файлове. В PHP кода трябва да има минимално SQL, които да е отделен в
специални класове за комуникация с базата).
Полезна книга за писане на качествен код е Code Complete на Steve McConnell. Може да
се намери онлайн.
Усложняване на проекта
Ако ученикът е реализирал проекта, може да се мисли за усложняване.
Как скалира системата, ако трябва да работи с много данни или много потребители.
Например, ако правим сайт за библиотека, тествайте системата с 10 000, 100 000 или 1
000 000 книги (заглавията на книгите и авторите може да генерирате случайно). Какво
става ако едновременно със сайта работят двама потребители? Ами ако са 10 или 100?
При работа с големи данни изникват множество проблеми. Ако демонстрирате, че вашето
приложение се справя с тези големи размери, това ще се оцени високо. Примерни
проблеми, с които може да се сблъскате:
● Двама потребители си пречат, докато правят едно и също действие (например
двамата едновременно резервират последния билет за кинопрожекция и успяват и
двамата да го вземат)
● Някои операции са пропорционални на броя на данните, с които работим.
Например сканираме всички редове от базата от данни. Така като имаме 1 милион
реда в базата, цялото приложение става бавно. (Решението е да се сложат
индекси на базата, да се добавят in memory caches).
Документация за НОИТ
Документацията има определен структура, описана в регламента на олимпиада, и тя
трябва да се следва. Към момента на писането на този документ структурата е:
1. ТЕМА:
2. АВТОРИ (за всеки се посочват: трите имена, ЕГН, адрес, телефон, имейл, училище,
клас):
3. РЪКОВОДИТЕЛ (трите имена, телефон, имейл, длъжност):
4. РЕЗЮМЕ:
4.1. Цели (предназначение, кратък анализ на потребностите и на съществуващите
решения)
4.2. Основни етапи в реализирането на проекта (основни дейности, роли на авторите)
4.3. Ниво на сложност на проекта − основни проблеми при реализация на поставените цели
4.4. Логическо и функционално описание на решението – архитектура, от какви
модули е изградено, какви са функциите на всеки модул, какви са взаимодействията
помежду им и т.н.
4.5. Реализация − обосновка за използвани технологични средства, алгоритми, литература,
програмни приложения и др.
4.6. Описание на приложението – как се стартира и/или инсталира, как се използва, как
се поддържа
4.7. Заключение – какъв е основният резултат, дали има приложения до момента, какви
възможности съществуват за развитие и усъвършенстване
Заглавна страница
Заглавната страница на проекта включва информация за темата на проекта,
направлението и номера на проекта, авторите и ръководителя.
Реализация
Използвани технологии
Технологиите включват:
● използваните езици за програмиране (напр. Java, C#, Typescript, HTML, CSS).
● Frameworks (напр. Angular 4, Spring)
● външни библиотеки (напр. Picasso, Guava)
● Технологии за тестване (напр. JUnit, Jasmine)
● използван сървър (напр. Apache2, JBoss)
● база от данни (напр. MySQL, MongoDB)
● технологии за управление на пакетите - package management (напр. npm)
● технологии за управление на сорс кода (напр. Git, Mercurial)
● текстови редактори и среди за разработка (напр. Sublime text, Web Storms)
Описание на приложението
Тази секция съдържа кратко ръководство за потребителите на приложението. Как се
инсталира, използва, поддържа, деинсталира. Ако става дума за мобилно приложение
опишете и как се разгръща (deploy).
Предаване на проекта
Когато предавате проекта бъдете сигурни, че качвате всички необходими файлове:
● Документацията в .pdf формат
○ НЕ използвайте .rtf
● Програмният код
○ Забележка: В регламента на олимпиадата пише, че кодът трябва да се
предаде в текстов формат. Това означава, че трябва да може да се
редактира от текстов редактор (notepad или IDE) - напр. .cpp, .java, .py и т.н.
НЕ изпращайте проекта в .doc, .txt или .pdf формат!
● Слайдове на презентацията
● Ако се ползва база от данни, то трябва да се предаде и dump с примерни данни.
● Ако има потребители - трябва да се дадат примерни потребителски имена и
пароли. Ако има различни потребителски роли - за всяка от тях. Тези пароли
обикновено са част от документацията.
● Рекламни материали
Защита на проекта
Добре е като стил на защитата да се използва презентация, която е кратко резюме на
документацията и включва демонстрация на самия проект. Обикновено защитата е около 15
минути, което включва 10 минутно изложение и 5 минути за въпроси.
Типични грешки:
● Оправдания и да казват какво не работи в проекта, вместо да се фокусират на
това, което са направили.
● Презентацията е научена наизуст или се чете от лист. Това прави
презентирането тягостно какво се презентиращия, така и за публиката.
● Прекалено много информация. В деня на състезанието комисията трябва да
изслуша 20 проекта един след друг. Докато ученика презентира, членовете на
комисията паралелно преглеждат записките си, припомнят си документацията,
кода и проекта, дописват записките си и попълват оценъчните карти. Подгответе
презентация, която акцентира на най-важното и го представя по лесен за
възприемане начин.
● Цък
Съвети
● Направете няколко пробни защити с ръководителя. Ако има няколко ученици от
едно училище, е хубаво да си представят един на друг и да си дават съвети за
подобрение. Тренирайте за време.
● Минимално количество текст на слайдовете. Използвайте ключови думи и
картинки.
● Задавайте въпроси към публиката. Така те ще запомнят проекти ви много по-
добре.
● Ако се губите в презентирането, или забравяне важни неща, напишете на лист
най-важните неща, с ключови думи и големи букви. Изполвайте цветове. Трябва
да може да се ориентирате в “пищова” с един поглед. В никакъв случай не четете
от лист, нито учете думите наизуст.
● Направете демонстрация на проекта, по време на защитата.
● Когато говорите за кода, използвайте графики - възприемат се много по-лесно.
● Не спорете с комисията или публиката. Отговаряйте на въпросите учтиво и с
респект, дори и да не получавате същото от другата страна.
Материали за подготовка
● Конспект
● Примерен тест за 5-8 клас
● Примерен тест за 9-12 клас
● Видеa от Telerik Academy
● Няколко полезни видеа
Evocation
Автор Симеон Стойнев, Денислав Колев
Документация Цък
Презентация
Код https://github.com/SimeonStoinev/Evocation
Оптичен кардиограф
Автор Николай Пашов
Документация Цък
Презентация
Код https://github.com/nikifaets/optical-cardiograph
West Moon
Автор Александър Кръстев, Марин Шаламанов
Кратко
описание
Документация цък
Презентация
Код https://bitbucket.org/marshal40/westmoon
GeoSolve
Автор Марин Шаламанов
Документация Цък
Презентация Цък
Код https://bitbucket.org/marshal40/geometry/src/master/
GeoDraw
Автор Марин Шаламанов
Документация Цък
Презентация Цък
Код https://bitbucket.org/marshal40/geometry/src/master/
Благодарности
Благодаря на Десислава Рачева, Евгений Василев, Звездин Бесарабов, Мирослава
Николова, Нели Георгиева, Николай Пашов и всички останали за изчерпателната обратна
връзка.