Računarske mreže SI

Course categoryRačunarske nauke

Računarske mreže za grupe 211, 212 i 213

Kreatori kursa: Djordje Babic, Đorđe Babić

Sistemi u realnom vremenu (Računarske nauke)

Course categoryRač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.

Kreatori kursa: Stevan Milinković

Skript Jezici 2024/25

Course categoryRačunarske nauke

Теоријска настава

Основе веб програмирања. Проблеми и задаци презентационог, апликационог и слоја сесије референтог OSI и TCP/IP модела.  Основе развоја клијентске стране веб апликација. Улога клијентских технологија у савременим архитектурама веб система. Размена података са различитим слојевима веб апликације. XML технологије за меморисање, обраду и визуелизацију података презентационог слоја. JSON. JSON API. RESTful архитектуре. Oснове JavaScript-a. ES6. DOM. JS библиотеке. AJAX. Развојни оквири. MVC. VueJS. Примена развојних оквира у развоју апликација. Two-way data binding, управљање догађајима, рендеровање података, компоненте, диркетиве, рад са елементима DOM, Dependency Injection.  Основе развоја серверске стране веб апликација. Улога серверских технологија у савременим архитектурама веб система. Размена података са различитим слојевима веб апликације. RESTful архитектуре. Веб сервиси. Конектори  и адаптери. Развој API-ја. Платформе за управљање API-јем. Упоредни преглед технологија серверске стране. Ruby on rails. Python. Развојни оквири. Примена развојних оквира у развоју апликација. Управљање рутирањем, ОRМ. NodeJS. Управљање сесијом и кеширањем. Оптимизација серверске стране веб апликација.

Практична настава

HTML5, CSS3, CSS препроцесори. XML технологије, DOM и манипулација над XML документима. JSON формат за серијализацију података. Манипулација JSON документима. Фронтенд оквири и библиотеке Bootstrap. Foundation. Semantic. Увод у скриптне језике. DOM. Основе JavaScript програмског језика. Граматика и типови. Контрола тока. Петље и итерације. Функције, изрази и оператори. Текстуално форматирање. Регуларни изрази. IIFE и анонимне функције. Структуре. Колекције. Објекти. Прототипно наслеђивање. Модуларни патерн. JSON. JSON API. Визуелизација. ChartJS. DataTables. XML. JavaScript библиотеке. JQuery. JavaScript оквири. JavaScript компајлери и управљање пакетима. Фронт-енд оквир – VueJS. Верзионисање кода. Git. Увод у серверске веб технологије и скриптне језике. Python. Основна синтакса, променљиве, оператори, контрола тока и итерације, функције и уграђене функције. Nапредне функције за руковање колачићима (cookies), напредне функције за управљање сесијама. Коришћење сесија на примеру форме и веб продавнице. Објектно оријентисано програмирање у Python-u. Имплементација слоја података. Python  и рад са базама података. MySQL и CRUD операције у Python-у. Складиштење и пренос података у веб окружењу. Складиштење динамичких података. Асинхрони позиви ка серверу и ажурирање података у реалном времену. Python, AJAX и MySQL. Сигурност и безбедност у Python апликацијама. Сервисно оријентисана архитектура. SOAP. REST. Веб сервиси. Развој и документација сопственог REST сервиса. Јавни веб сервиси. Имплементација пословне логике. Развој веб апликација. Pазвој апликација са MVC архитектуром. Оквири за развој веб апликација Django/NodeJS.

Kreatori kursa: Miloš Radenković

Softverske komponente

Course categoryRačunarske nauke
Теоријска настава

Циљеви и предности развоја софтвера заснованог на компонентама. Појам софтверске компоненте. Основне карактеристике софтверске компоненте. Појам физичке и логичке модуларности. Пракса одвајања спецификације од имплементације софтверске компоненте. Поштовање SOLID принципа и примена дизајн патерна у развоју заснованом на компонентама. Документовање софтверске компоненте. Појам билд алата и управљање повезаним компонентама. Преглед савремених билд алата за програмске језике Јава и Пајтон. Стандарди за развој модуларних система за Јава платформу - OSGi i Jigsaw. Софтверске лиценце и верзије. Сервисно оријентисана софтверска архитектура и веб сервиси. Технологије и стандарди за имплементацију веб сервиса - SOAP i REST. Појам микросервиса и поређење са другим архитектурама. Интеграција микросервиса и коминикација између микросервиса. Микросервиси и кориснички интерфејс, микросервиси и базе података. Кораци у провођењу монолитне у микросервисну архитектуру.

Практична настава

Приказ илустративног примера софтверске компоненте која користи друге компоненте и њено проширење додатним функционалностима. Илустрација особине рејузабилности компоненте. Рад са системима за управљање верзијама. Коришћење билд алата за Јаву - Apache Ant, Apache Maven и Gradle. Креативна вежба креирања компоненте са одвојеном спецификацијом. HTTP протокол и REST архитектура. Имплементација микросервисне апликације коришћењем Spring Boot технологије. Рад са базама података у микросервисној архитектури укључујући релацине и нерелационе базе. Коришћење Hiberante ORM алата за перзистенцију података у релациону базу. Комуникација између микросервиса и коришћење система за размену порука.

Teorija algoritama, automata i jezika

Course categoryRačunarske nauke

Alfabet, reč i jezik nad alfabetom. Formalne gramatike. Jezik definisan gramatikom. Hijerarhija formalnih gramatika prema Čomskom.

Regularni jezici. Deterministički konačni automati. Nedeterministički konačni automati. NKA sa spontanim prelazima. Regularni izrazi. Ekvivalentnost DKA, NKA i regularnih izraza. Minimizacija DKA. Pumping lema za regularne jezike.

Kontekstno-slobodni jezici. Potisni automati. Deterministički potisni automati. Ekvivalentnost potisnih automata i kontekstno-slobodnih jezika. Osobine kontekstno-slobodnih jezika. Normalna forma Čomskog za kontekstno-slobodne gramatike. Pumping lema za kontekstno-slobodne jezike.

Tjuringova mašina. Tjuringova mašina sa više traka. Nedeterministička Tjuringova mašina. Neodlučivost. Rekurzivno nabrojivi i rekurzivni jezici.

Klase problema P i NP, NP-kompletni problemi. Doka NP-kompletnosti problema CSAT i 3SAT.

Upravljanje Informacijama 2024/25

Course categoryRačunarske nauke

Теоријска настава

Основни концепти науке о подацима, Data Science. Историјски преглед развоја метода за складиштење, управљање подацима и извештавање. Моделирање података, њихове семантике, знања и информација: скуп, бинарна релација (key-value, хешинг и индекс), н-арна релација (табела), стабло (XML) и граф. Апстракције и свођење н-арне релације на бинарну, сортирање бинарне релације, индекси, пролази кроз стабло и претраживање графова. Codd-ов релациoни модел. Релациона алгебра као апарат за генерисање извештаја, SQL. Пројектoвање информационог система. Анализа захтева. Логичко пројектовање структуре  и  динамике информационог система, SSA.  Објектно-оријентисани  приступ моделовању информационих система - UML. Aнализа  захтева у објектном приступу. Случајеви  коришћења.  Опис динамике информационог система. Дијаграми  секвенци. Концептуални модел система. Патерне у моделовању ИС. Имплементација у реалном окружењу. Пројектовање релационе базе података на основу објектног UML модела. Објектно релациони брокери, Hibernate. Системи за управљање базама података, Oracle, MSSQL, PostgreSQL. Пресликавање података објектног модела у key-value базе података, Redis. Објектне базе података, MongoDB.

Практична настава

Анализа  система  и  захтева  корисника на конкретном примеру. Пример пројектовања база података: Нормализација релација. Анализа и пројектовање ИС. Функционална декомпозиција, SSA. Речник  података.  PMOV.  IDEF1X,  IE. Примери пројектовања  објектим приступом коришћењем UML нотације.  Случајеви  коришћења.  Узори  у  фази  анализе система. Вишеслојна архитектура  апликација.  Дијаграми  секвенци. Примери трансформација  концептуалних  модела у реално имплементационо окружење. Коришћење key-value Redis базе података за кеширање података. Примена Hibernate брокера.  Израда комплексног пројекта слоја података за информациони систем.

Kreatori kursa: Miloš Radenković

Uvod u programiranje

Course categoryRačunarske nauke
Циљ и исход предмета

Стицање општих знања и практичних вештина из програмирања. Студент разуме све најважније концепте процедуралног програмирања и уме да их примени, способан је да осмисли и имплементира једноставније алгоритме и да користи основне структуре података у програмима за командну линију.

Теоријска настава

Основни појмови програмирања: прогармски језик, алгоритам, команда, изворни код, компајлирање, окружење за извршавање програма. Представљање података у рачунару, бројевни системи, представљање карактера (ASCII табела) и реалних бројева. Читање са системског улаза и испис на системски излаз. Прости типови података и променљиве. Операције над подацима - аритметичке, битовне, релационе, логичке. Контрола тока програма - гранања и петље. Функције и опсег видљивости променљивих. Рекурзија и њена примена у задацима. Сложенији типови података - низови, стрингови и структуре. Показивачи и управљање меморијом. Динамичке структуре података - листе и бинарна стабла. Рад са фајловима.

Практична настава

Упазнавање са окружењем за имплементацију програма. Имплементација програма са секвенцијалним извршавањем команди уз читање података са системског улаза и испис на системски излаз. Илустрација коришћења различитих типова података и операција над њима. Коришћење разних уграђених функција, писање нових функција. Имплементација програма са различитим варијантама гранања - if, switch, тернарни условни оператор. Програми који користе петље. Илустрација различитих врста петљи (фор, wхиле, до-wхиле) на примерима задатака. Угњеждене петље. Примери програма који користе рекурзију. Програми са низовима. Рад са стринговима као низовима и коришћење уграђених функција над стринговима. Илустрација примера са показивачима. Рад са низовима и стринговима преко показивача. Задаци са једноструко повезаном листом, имплементација операција над листом на два начина - итеративно и рекурзивно. Задаци који користе уређено бинарно стабло. Имплементација операција над уређеним бинарним стаблом на рекурзиван и итеративан начин. Читање из фајла и упис у фајл. Учитавање података из фајла у динамичку структуру података и обрада тих података преко операција над структуром.

Kreatori kursa: Milan Tomić

Uvod u Pronalaženje Informacija

Course categoryRačunarske nauke
  • Буловски модел претраживања информација.
  • Основне структуре података и алгоритми за индексирање информација.
  • Метрике сличности текста и докумената и претраживање информација
  • Технике за компресију индекса.
  • Векторски модел претраживања информација.
  • Рангирање резултата претраге.
  • Евалуација система за претраживање.
  • Релевантност резултата претраге, експанзија упита и интеракција са корисником.
  • Пробабилистички модели проналажења информација.
  • Језички модели за проналажење информација (LLM).
  • Интелигентне технике за рангирање, класификацију, категоризацију и филтрирање резултата претраге.
  • Архитектура система за претраживање веба и проналажење информација на вебу. 
Kreatori kursa: Jelena Mladenovic
Asistent: MIlan Bojić

Veliki Podaci 2024/25

Course categoryRačunarske nauke

Теоријска настава

На предавањима се предочава разноврсност могућих очекивања од великих података и приказује се шта је то што омогућава брз одговор на та очекивања. Студенти се упућују у основе инфраструктуре која се користи у раду са великим подацима. Приказује се покрет NoSQL, те основни концепти, технике и обрасци потребни за дистрибуирани рад база података. Кроз анализу решења попут Amazon Dynamo уводи се концепт база података кључ-вредност. Представљају се документ-оријентисане базе података, са фокусом на MongoDB. Кроз осврт на имплементацију Google BigTable и кратак преглед технологије GFS/HDFS објашњава се функсионисање колонских база података.

Практична настава 

На вежбама се доминантно користе технологије Dell EMC. Одговара се на питање када у обради великих података користити релационе, а када нерелационе базе података. Дефинише се шта подразумева решење на платформи Hadoop и разрађује се архитектура HDFS. Пореде се софтверски базирана решења и наменска решења. Студенти на примерима у брижљиво осмишљеној лабораторијској вежби уче како да концепт архитектуре Dell EMC Isilon OneFS искористе за обраду великих података. При томе се упућују како да поставе и скалирају решење, како да управљају сториџима, те како да обезбеде поузданост. На још једној лабораторијској вежби студенти уче како да изврше интеграцију Hadoop и решења у претходно уведеној архитектури, при чему се, поред осталог, ради конфигурисање решења за HDFS, припрема се сервер Ambari и примењује се платформа Hortonworks Data. 

Kreatori kursa: Miloš Radenković

Дискретне структуре

Course categoryRačunarske nauke

Циљ предмета:

Стицање основних знања из дискретне математике.

Исход предмета:

Студент је оспособљен да у даљем образовању решава проблеме базиране на стеченом знању из дискретне математике.

Садржај предмета:

Теоријска настава

Исказни рачун – (прост и сложен) исказ, истинитосна вредност, логички везници и њихов приоритет, таблице истинитости, логички еквивалентни искази. Аргументи и докази – ваљан аргумент, испитивање ваљаности аргумента уз помоћ таблица истинитости, доказ ваљаности аргумента свођењем на контрадикцију, доказивање ваљаности аргумента употребом правила извођења. Примери доказа. Комплетност у исказној логици и Карноове мапе. Скупови – скуповне операције, партитивни скуп, Декартов производ скупова, Венови дијаграми. Релације – домен и опсег релације, инверзна релација, композиција релација, особине релације на скупу, репрезентација релације, релација поретка и релација еквиваленције. Функције – инјективна, сурјективна и бијективна функција, композиција функција. Математичка индукција. Дељивост – најмањи заједнички садржалац и највећи заједнички делилац. Еуклидов алгоритам. Диофантске једначине са две непознате. Прости бројеви – теорема о јединствености факторизације на просте бројеве. Релација конгруенције. Конгруенцијске једначине. Системи конгруенцијских једначина и Кинеска теорема о остацима. Рекурзија – рекурзивне функције и хомогене и нехомогене линеарне рекурентне релације (једначине). Комбинаторика – основни принципи пребројавања (правило збира и правило производа), принцип укључења – искључења, принцип голубарника, пермутације, комбинације, уопштене пермутације и комбинације, пермутације и комбинације са понављањем

Практична настава:

Решавање репрезентативних задатака на табли, из области са којима су студенти упознати на теоријској настави.

Литература:

Андерсон Џ. А., Дискретна математика са комбинаториком, Рачунарски факултет и ЦЕТ, Београд, 2005.

Profesor: Mladen Zekić

Интегрисани информациони системи

Course categoryRačunarske nauke

Циљ предмета је упознати студенте са великом и значајном облашћу информатике коју чине интегрисани информациони системи, са терминологијом, технологијама, концептима и основним начелима по којима ова област функционише. Студент се припрема за једну или више следећих ситуација: пројектовање и програмирање у развоју интегрисаног информационог система, рад у интегрисаном информационом систему, одржавање и администрација интегрисаног информационог система, консалтинг у домену интегрисаних информационих система и менаџмента, развој решења која се конектују на интегрисани информациони систем, вршење квантитативне пословне аналитике и руковођење.