Linearna algebra i analitička geometrija - računarske nauke
Funkcionalno programiranje
Циљ и исход предмета
Упознавање са математичким основама функционалног програмирања и парадигмом функционалног програмирања. Стицање вештина за напредно коришћење једног чисто функционалног програмског језика. По завршетку курса студент познаје математичку основу функционалног програмирања, разуме разлику између императивног и функционалног програмирања и уме да препозна проблеме који се решавају функционалним програмирањем. Студент је упознат са једним чисто функционалним програмским језиком, уме да га користи у решавању сложених задатака и изради практичног софтверског пројекта.
Теоријска настава
Функционални програмски језици. Разлика између функционалног и императивног програмирања. Основе ламбда рачуна: апстракција, ламбда функција, ламбда апликација, слободне и везане променљиве. Редукције у ламбда рачуну. Нормална форма. Израчунавање вредности ламбда израза и валидни ламбда изрази. аритметика целих бројева, логички и условни изрази у ламбда рачуну. Рекурзија у ламбда рачуну и ипсилон комбинатор. Апликативни и нормални поредак израчунавања ламбда израза. Лења евалуација. Бесконачне структуре. Ламбда изрази у програмским језицима. Решавање проблема на "функционалан" начин. Функтори, апликативни функтори и моноиди. Монаде. Парсер комбинатори.
Практична настава
Структуре података и синтакса изабраног функционалног програмског језика. Функције вишег реда и каријеве функције. Решавање задатака у изабраном функционалном програмском језику. Преглед уграђених функција и оператора у изабраном функционалном програмском језику. Задаци са функторима, апликативним функторима, моноидима и монадама. Коришћење библиотеке парсер комбинатора на илустративним примерима парсирања текста.
Objektno-orijentisano programiranje
Циљ и исход предмета
Усвајање теоретског знања и практичних вештина за разумевање и коришћење објектно-оријентисане парадигме програмирања. Студент разуме све кључне концепте објектно-оријентисаног програмирања и уме да их примени, способан је да осмисли и имплементира објектно-оријентисани модел података и да имплементира мању апликацију са графичким корисничким интерфејсом уз коришћење фајлова за читање и упис података.
Теоријска настава
Процедурално наспрам објектно-оријентисаног програмирања. Појам класе и објекта, атрибута и операција. Уграђене класе у програмском језику Java. Основни елементи UML дијаграма класа - класе и везе асоцијације. Појам конструктора. Пакети. Видљивост атрибута, операција и класа. Јавабин и енкапсулација. Статик елементи. Листе и низови у Javi. Везе између класа. Синглтон дизајн патерн. Наслеђивање класа и полиморфизам. Надјачавање метода и класа Object. Кључна реч финал. Апстрактне класе и интерфејси. Апстрактне класе и интерфејси на UML дијаграму класа. Представљање везе наслеђивања и имплементације интерфејса на дијаграму класа. Преглед познатих дизајн патерна који користе апстракцију и наслеђивање. Приказ једноставнијих дизајн патерна на UML дијаграму класа. Сложеније колекције објеката. Угњеждене класе. Изузеци - хватање, обрада и испаљивање изузетка. Преглед библиотеке за развој графичког корисничког интерфејса коришћењем принципа објектно-оријентисаног програмирања - преглед компоненти, везивање модела података за компоненту, обрада догађаја, дизајн патерни за апликације са графичким корисничким интерфејсом.
Практична настава
Коришћење основних програмских конструкција у програмском језику Java на практичним примерима - гранање, петље, основни и сложени типови података. Рад са стринговима. Илустративни примери и задаци за илустрацију свих основних концепата објектно-оријентисаног програмирања-класе, објекти, атрибути и операције, конструктори, видљивост, статик елементи. Илустративни примери за приказ апстракције, писање апстрактних класа и интерфејса и њихово наслеђивање односно имплементација. Имплементација модела датог UML дијаграмом класа, укључујући имплементацију класа, интерфејса, веза између класа. Пакет за рад са колекцијама, сортирање колекција. Рад са изузецима. Имплементација компоненти графичког корисничког интерфејса. Имплементација обраде догађаја на корисничком интерфејсу. Рад са фајловима - читање и упис у фајл. Имплементација комплетне апликације са графичким корисничким интерфејсом коришћењем MVC (Model View Controller) дизајн патерна.
Дискретне структуре
Циљ предмета:
Стицање основних знања из дискретне математике.
Исход предмета:
Студент је оспособљен да у даљем образовању решава проблеме базиране на стеченом знању из дискретне математике.
Садржај предмета:
Теоријска настава
Исказни рачун – (прост и сложен) исказ, истинитосна вредност, логички везници и њихов приоритет, таблице истинитости, логички еквивалентни искази. Аргументи и докази – ваљан аргумент, испитивање ваљаности аргумента уз помоћ таблица истинитости, доказ ваљаности аргумента свођењем на контрадикцију, доказивање ваљаности аргумента употребом правила извођења. Примери доказа. Комплетност у исказној логици и Карноове мапе. Скупови – скуповне операције, партитивни скуп, Декартов производ скупова, Венови дијаграми. Релације – домен и опсег релације, инверзна релација, композиција релација, особине релације на скупу, репрезентација релације, релација поретка и релација еквиваленције. Функције – инјективна, сурјективна и бијективна функција, композиција функција. Математичка индукција. Дељивост – најмањи заједнички садржалац и највећи заједнички делилац. Еуклидов алгоритам. Диофантске једначине са две непознате. Прости бројеви – теорема о јединствености факторизације на просте бројеве. Релација конгруенције. Конгруенцијске једначине. Системи конгруенцијских једначина и Кинеска теорема о остацима. Рекурзија – рекурзивне функције и хомогене и нехомогене линеарне рекурентне релације (једначине). Комбинаторика – основни принципи пребројавања (правило збира и правило производа), принцип укључења – искључења, принцип голубарника, пермутације, комбинације, уопштене пермутације и комбинације, пермутације и комбинације са понављањем
Практична настава:
Решавање репрезентативних задатака на табли, из области са којима су студенти упознати на теоријској настави.
Литература:
Андерсон Џ. А., Дискретна математика са комбинаториком, Рачунарски факултет и ЦЕТ, Београд, 2005.
Комбинаторика и теорија графова
Циљ предмета:
Упознавање студената са теоријским и практичним аспектима комбинаторне теорије графова.
Исход предмета:
По завршетку курса студент поседује знања из комбинаторне теорије графова и упознат је са неким њеним применама.
Садржај предмета:
Теоријска настава
Графови и подграфови. Матрице инциденције и матрице суседства. Графовске инваријанте. Путеви и циклуси – детаљнији приступ. Цикломатички број графа. Чворна и гранска повезаност графа. Стабла и њихове примене. Хамилтонови и Ојлерови циклуси и њихове примене. Бојење графова – детаљнији приступ. Планарни графови и графови полиедара. Теорема Куратовски-Понтрјагина. Бојење планарних графова. Спаривања у графовима и примене. Независни скупови, покривачи и клике графа. Унутрашња и спољашња стабилност графа. Примена у линеарној алгебри. Степени квадратних матрица и Марковљеви ланци. Графови протока сигнала.
Практична настава
Решавање репрезентативних задатака на табли, из области са којима су студенти упознати на теоријској настави.
Литература
- Цветковић Д., Теорија графова и њене примене, Научна књига, Београд, 1986.
- Цветковић Д., Комбинаторика – класична и модерна, Научна књига, Београд, 1990.
- Вељан Д., Комбинаторика с теоријом графова, Школска књига Загреб, 1989.
- Петровић В., Теорија графова, Универзитет у Новом Саду, Природно-математички факултет, Нови Сад, 1998.
Paralelni Algoritmi
Računarska grafika
- Osnovnu strukturu grafičkog sistema
- 2D grafika: algoritmi za renderovanje i klipovanje osnovnih grafičkih primitiva (duž, krug, poligon)
- 3D grafika: Modelovanje i renderovanje prostornih situacija (polygonal mesh, CSG, ray casting, ray tracing)
Napredna matematička analiza
Softverske komponente
Теоријска настава
Циљеви и предности развоја софтвера заснованог на компонентама. Појам софтверске компоненте. Основне карактеристике софтверске компоненте. Појам физичке и логичке модуларности. Пракса одвајања спецификације од имплементације софтверске компоненте. Поштовање SOLID принципа и примена дизајн патерна у развоју заснованом на компонентама. Документовање софтверске компоненте. Појам билд алата и управљање повезаним компонентама. Преглед савремених билд алата за програмске језике Јава и Пајтон. Стандарди за развој модуларних система за Јава платформу - OSGi i Jigsaw. Софтверске лиценце и верзије. Сервисно оријентисана софтверска архитектура и веб сервиси. Технологије и стандарди за имплементацију веб сервиса - SOAP i REST. Појам микросервиса и поређење са другим архитектурама. Интеграција микросервиса и коминикација између микросервиса. Микросервиси и кориснички интерфејс, микросервиси и базе података. Кораци у провођењу монолитне у микросервисну архитектуру.
Практична настава
Приказ илустративног примера софтверске компоненте која користи друге компоненте и њено проширење додатним функционалностима. Илустрација особине рејузабилности компоненте. Рад са системима за управљање верзијама. Коришћење билд алата за Јаву - Apache Ant, Apache Maven и Gradle. Креативна вежба креирања компоненте са одвојеном спецификацијом. HTTP протокол и REST архитектура. Имплементација микросервисне апликације коришћењем Spring Boot технологије. Рад са базама података у микросервисној архитектури укључујући релацине и нерелационе базе. Коришћење Hiberante ORM алата за перзистенцију података у релациону базу. Комуникација између микросервиса и коришћење система за размену порука.
Prepoznavanje govora
Teorijska nastava
Modelovanje govora. Obrada akustičkog signala. Odabiranje, A/D konverzija i uokviravanje. Filtriranje i upotreba prozorske funkcije. Furijeova transformacija i spektar snage ulaznog signala. Promena frekventne ose i filtriranje po mel skali. Prelaz u logaritamski domen. Inverzna kosinusna transformacija, kepstralni koeficijenti i njihovi vremenski parametri. Vektori svojstava akustičkog signala. Markovljevi modeli. Skriveni Markovljevi modeli (HMM). Mešavine Gausovih raspodela. Akustički modeli. Fonetsko modelovanje. Robusnost u odnosu na okolinu (buka, šum, eho). Polukontinualni HMM, vezivanje stanja i klasterovanje. Treniranje HMM-a. Baum-Welch i Forward-Backward algoritmi. Normalizacija govora. Jezički modeli. N-gram usrednjavanje. Osnovna pretraživanja. Vremenski sinhrono Viterbi Beam pretraživanje. Stack i A* pretraživanje. Rad sa velikim rečnikom. Pretraživanje po stablu sa jezičkim modelima. Pretraživanje na osnovu gramatike. N-multipass pretraživačke strategije. Upotreba neuralnih mreža i dubokih neuralnih mreža. Hibridni sistemi dubokih neuralnih mreža i HMM.
Praktična nastava
Analiza spektrograma pomoću softvera za rad sa zvučnim signalom. Implemetacija softvera koji može da snima govor. Algoritmi kompresije zvučnog signala. Obrada dobijenog signala, odsecanje, filtriranje i sl. Implementacija i primena (brze) Furijeove transformacije. Implementacija sistema za prepoznavanje govora koji jeste / nije vezan za govornika i formiranje testova za pokazivanje korektnosti rada sistema. Implementacija i testiranje HMM sistema, kao i pretraživačkih algoritama. Rad sa dubokim neuralnim mrežama i njihovo kombinovanje sa klasičnim sistemima za prepoznavanje govora.
Sistemi u realnom vremenu (Računarske nauke)
Teorijska nastava
Koncept vremena. Postizanje predvidivosti. Vremenska ograničenja. Ograničenje prethođenja. Ograničenja resursa. Problem raspoređivanja. Raspoređivanje aperiodičnih taskova. Džeksonov algoritam. Hornov algoritam. Raspoređivanje bez istiskivanja. Bratlijev algoritam. Spring algoritam. Raspoređivanje sa ograničenjem prethođenja. Raspoređivanje periodičnih taskova. Ciklično raspoređivanje. Raspoređivanje monotonim tempom (RM). Earliest Deadline First (EDF). Deadline Monotonic. EDF sa ograničenim rokovima. Serveri sa fiksnim prioritetom. Pozadinsko raspoređivanje. Server sa propitivanjem. Server sa odlaganjem. Razmena prioriteta. Sporadični server. Slack Stealing. Serveri sa dinamičkim prioritetom. Server sa razmenom dinamičkih prioriteta. Dinamički sporadični server. Server sa totalnim opsegom. Earliest Deadline Late server. Poboljšani server sa razmenom prioriteta. Server sa konstantnim opsegom. Protokoli za pristup resursima. Inverzija prioriteta. Protokol bez istiskivanja. Highest Locker Priority protokol. Protokol sa nasleđivanjem prioriteta. Protokol sa gornjom granicom prioriteta. Politika stek resursa. Raspoređivanje sa ograničenim istiskivanjem. Prag istiskivanja. Odloženo istiskivanje. Rastavljanje taskova. Izbor tačaka istiskivanja. Upravljanje preopterećenjem. Rukovanje aperiodičnim preopterećenjem. Prekoračenja. Permanentna preopterećenja.
Praktična nastava
Rad sa FreeRTOS operativnim sistemom u simuliranom okruženju i na mikrokontroleru. Poznavanje elemenata FreeRTOS operativnog sistema kao što su poslovi, redovi, brave, semafori i sl. Tipični problemi konkurentnosti kod sistema u realnom vremenu. Primena i modifikacija FreeRTOS raspoređivača. Implementacija podrške za aperiodične i periodične poslove. Implementacija podrške za ograničenja prethođenja. Zapis i analiza dobijenog rasporeda sistemskog raspoređivača u simuliranom i stvarnom okruženju. Implementacija poslova sa ograničenim resursima i njihovo raspoređivanje.