Fakultet tehničkih nauka

Predmet: Napredne tehnike programiranja (17.SIT060)

Matične organizacione jedinice predmeta:
Osnovne informacije:
 
Kategorija Stručni
Uža naučna oblast Primenjene računarske nauke i informatika
Multidisciplinarna Ne
ESPB 7
Cilj:

Upoznavanje studenata sa naprednim tehnikama programiranja i savladavanje osnovnih teorijskih znanja i tehnika. Osposobljavanje studenata za analizu i primenu adekvatne metodologije programiranja za postavljeni zadatak i uočavanje prednosti i mana različitih metodologija.

Ishod:

Po okončanju predmeta studenti su sposobni da razumeju različite metodologije programiranja, terminologiju iz ove oblasti, analiziraju i primene adekvatne metodologije i tehnike za postavljen zadatak i kritički evaluiraju rešenje i navedu prednosti i nedostatke. Takođe su osposobljeni za praktičnu upotrebu određenih tehnika i alata u domenu naprednih metodologija programiranja.

Sadržaj:

Teorijska nastava: metodologije i modeli programiranja: objektno-orijentisano, imperativno, delarativno, programiranje orijentisano ka procesima, funkcionalno, konkurentno, programiranje vođeno događajima (event-driven programming), korisnički orijentisano (end-user programming). Tehnike i pojmovi: iteratori, generatori, korutine, mixins, lenja evaluacija, prototipi, meta-programiranje, sistem tipova. Funkcionalno programiranje: lambda calculus, nepromenjivost (immutability), propratni efekti (side-effects), funkcije višeg reda, rekurzija;algoritmi za obradu velikih količina podatka – (map-reduce); funkcionalni programski jezici (Lisp, Scheme, Clojure, Haskel, Erlang). Programiranje orijentisano ka aspektima (Aspect-Oriented Programming – AOP). Skript jezici i dinamičko programiranje. Programski jezici sa više paradigmi (multi-paradigm) - Python/Jython, Java, Scala, C++. Upotreba i kombinovanje više programskih jezika (language polyglotism): mehanizmi integracije, integracione platforme, konverzije tipova, alati. Praktična nastava: obuka za korišćenje i praktičnu primenu programskih jezika, tehnika i alata baziranih na različitim metodologijama i programskim modelima. Primena naučenog u implementaciji projektog zadatka uz upotrebu različitih programskih jezika, tehnika i alata i integracija programskog koda u jedinstveno rešenje.

Metodologija izvođenja nastave:

Predavanja; Računarske vežbe; Konsultacije. Rešavanje projektnog zadatka kroz rad u okviru projektnih timova. Poslednjih nedelja semestra organizuju se javne prezentacije projektnih zadataka najuspešnijih timova i diskutuju se postignuti rezultati. Odbrana projekta je usmena. Završni ispit je usmeni. Ocena ispita se formira na osnovu uspeha sa odbrane projektnog zadatka i završnog usmenog ispita.

Literatura:
Autori Naziv Godina Izdavač Jezik
Chassell, R.J. Introduction to Programming in Emacs Lisp 2009 GNU Press Engleski
Malbaški, D. Odabrana poglavlja metoda programiranja 2002 Tehnički fakultet, Zrenjanin  Srpski jezik
Ducasse, S., Zagidulin, D., Hess, N., Chloupis, D. Pharo by Example 2017 Square Brackets Associates Engleski
Poppendieck, M., Poppendieck, T. Implementing lean software development 2007 Addison-Wesley, Upper Saddle River Engleski
Poppendieck, M., Poppendieck, T. Lean Software Development : An Agile Toolkit 2003 Addison-Wesley, Upper Saddle River Engleski
Doxsey, C. An Introduction to Programming in Go 2012 Caleb Doxsey - selfpublished Engleski
Ducasse, S., Zagidulin, D., Hess, N., Chloupis, D. Pharo by Example 2017 Square Brackets Associates Engleski
Poppendieck, M., Poppendieck, T. Leading lean software development 2010 Addison-Wesley, Upper Saddle River Engleski
Doxsey, C. An Introduction to Programming in Go 2012 Caleb Doxsey - selfpublished Engleski
Formiranje ocene:
Predmetna aktivnost Predispitna Obavezna Broj poena
Predmetni projekat Da Da 50.00
Teorijski deo ispita Ne Da 50.00
Izvođači nastave:
Predavanja
Računarske vežbe
Predavanja