I smer
Kurs Konstrukcija kompilatora je izborni kurs na četvrtoj godini I smera u okviru kojeg se proučavaju osnovni koncepti konstrukcije kompilatora (ili kompajlera, eng. compiler):
Spisak ispitnih pitanja možete pronaći ovde. (Moguće su izmene u toku godine, proveriti spisak pitanja u maju.) U okviru ispita, izvlačite pet pitanja sa spiska ispitnih pitanja. Svako pitanje vredi 10 poena. Odgovarate pismeno. Teoriju možete polagati u istom roku sa praktičnim delom ispita (u istom terminu, odmah nakon završenog praktičnog dela) ili u nekom od narednih rokova, u terminima praktičnog dela ispita.
Teorijski deo ispita možete polagati i u toku godine, putem testova, u okviru regularnih termina predavanja. Jedan test je odgovaranje na jedno ispitno pitanje. Svako odogovara na pitanje koje izvuče. Test traje oko 15 minuta. Test nije obavezan, možete raditi test po izboru (tj testovi se međusobno ne uslovljavaju). Takođe, rezultati testa važe u svakom ispitnom roku. Ako položite, na primer, tri pitanja preko testova (npr prvo, drugo i četvrto) onda na ispitu polažete preostala dva (treće i peto). Rezultati testa su konačni, tj kako tu nema iznenađenja (ispitna pitanja su poznata u napred) onda nema ni ponavljanja polaganja istog ispitnog pitanja.
Snimci sa vežbi.
Virtuelna mašina za Konstrukciju kompilatora se može naći ovde.
Kratko uputstvo za podešavanje virtuelne mašine.
Skripta za skidanje unapred buildovane verzije projekta unutar VM-a.
Skripta za ručno buildovanje projekta. Postaviti je u direktorijum llvm-project, tj direktorijum koji ste dobili kada ste klonirali llvm repozitorijum.
Treći test biće održan 25. aprila u okviru predavanja, tj na prvom času. Test obuhvata ispitna pitanja vezana za semanitčku analizu tipova i izvršno okruženje, tj sa spiska ispitnih pitanja to su pitanja od 21 do 30 (uključujući i 21 i 30). Svako odgovara na pitanje koje izvuče. Test traje 15 minuta, a nakon toga imamo regularno predavanje.
Test nije obavezan, možete raditi naredni test ako niste radili ovaj ili ako niste radili prethodni (tj testovi se međusobno ne uslovljavaju). Takođe, rezultati testa važe u svakom ispitnom roku. Ako položite, na primer, tri pitanja preko testova (npr prvo, drugo i četvrto) onda na ispitu polažete preostala dva (treće i peto). Rezultati testa su konačni, tj kako tu nema iznenađenja (ispitna pitanja su poznata u napred) onda nema ni ponavljanja polaganja istog ispitnog pitanja.
20.04.2024.
U okviru predavanja koje će biti održano 04. 04. održaćemo kratak kviz na temu LLVMa sa ciljem da prodiskutujemo teme koje nismo u potpunosti pokrili u okviru prethodnih predavanja. Pročitajte materijale sa slajdova kako biste što bolje odgovarali na ova pitanja!
29.03.2024.
Drugi test biće održan 11. aprila u okviru predavanja, tj na prvom času. Test obuhvata ispitna pitanja vezana za generisanje koda, za LLVM i za semanticku analizu dosega, tj sa spiska ispitnih pitanja to su pitanja od 10 do 20 (uključujući i 10 i 20). Svako odgovara na pitanje koje izvuče. Test traje 15 minuta, a nakon toga imamo regularno predavanje.
Test nije obavezan, možete raditi naredni test ako niste radili ovaj ili ako niste radili prethodni (tj testovi se međusobno ne uslovljavaju). Takođe, rezultati testa važe u svakom ispitnom roku. Ako položite, na primer, tri pitanja preko testova (npr prvo, drugo i četvrto) onda na ispitu polažete preostala dva (treće i peto). Rezultati testa su konačni, tj kako tu nema iznenađenja (ispitna pitanja su poznata u napred) onda nema ni ponavljanja polaganja istog ispitnog pitanja.
29.03.2024.
U četvrtak 28. marta u 16h, Đorđe Todorović će održati predavanje o LLVM-u:
Ovaj sažeti prikaz pružiće dublji uvid u arhitekturu LLVM-a, ključne komponente i praktične primene. Tokom sesije, istražićemo teme kao što su međureprezentacija LLVM-a (IR), tehnike optimizacije i generisanja koda, pružajući uvid u to kako LLVM podstiče modernu izgradnju kompajlera i analizu programa. Pored toga, predstavićemo konkretne primere korišćenja LLVM-a u razvoju alata za validaciju automobilskog koda - Autocheck. Bez obzira da li vas ova tematika privlači ili ne, pridružite nam se za ovu informativnu prezentaciju kako biste otkrili osnovne principe i stvarni uticaj LLVM-a.
Projekat LLVM predstavlja modularnu implementaciju kompajlerske infrastrukture za razne programske jezike kao što su C, C++, Rust, Swift, i drugi. Prevodioci kao što su clang, rustc i swiftc važe za prevodioce koji generišu najbrži produkcijski kod u industriji i bazirani su baš na ekosistemu LLVM. Najveće kompanije kao što su Apple, Google, Facebook, Cisco i AMD su izabrale baš LLVM kao primarni prevodilac za svoje proizvode, a takođe veoma aktivno učestvuju u njegovom razvoju i poboljšanju. Izvorni kod projekta LLVM spada u porodicu otvorenog koda, i jedan je od najpopularnijih projekata na platformi GitHub.
Ako želiš da naučiš nešto novo o programskim prevodiocima zasnovanim na projektu LLVM, ovo predavanje je za tebe!
SYRMIA http://www.syrmia.com/ je softverska kompanija specijalizovana za razvoj ugrađenih sistema, fokusirana na sistemski softver u različitim oblastima, uključujući niske nivoe sistema, alate, kompajlere, emulatore, optimizovane okvire za mašinsko učenje, GPU softver, kao i razne softverske komponente korišćene u automobilskoj i potrošačkoj industriji. Kompanija je izrasla u tim od preko 200 visoko kvalifikovanih inženjera sa različitim iskustvima i pozadinama u Beogradu, Nišu, Novom Sadu i Banja Luci. SYRMIA ima raynovrsne klijente, počevši od malih startap kompanija do velikih igrača iz Silicijumske doline. Bez obzira da li su u pitanju krajnja rešenja, konsultantske usluge, podrška na lokaciji ili razvojni centar u blizini obale, fleksibilan pristup radu omogućava kompaniji SYRMIA da zadovolji sve potrebe klijenata.
Đorđe Todorović je inženjer sa više od 9 godina iskustva u računarskoj industriji. Trenutno je vođa grupe "System Software" u kompaniji SYRMIA i uspešno vodi nekoliko timova, nesebično deli znanje, mentoriše sa mnogo strpljenja, a sve to uz osmeh i volju. Zahvaljujući svom doprinosu, postignućima i komentarima samih zaposlenih, izabran je za najboljeg inženjera 2023. godine u kompaniji SYRMIA. Diplomirao je i stekao master diplomu na Matematičkom fakultetu u Beogradu. Rodni grad mu je Požega, a živi i radi u Beogradu. Autor je raznih funckionalnosti i alata koji su sada deo projekta LLVM i koriste se naširoko, kako u industriji tako i u istraživačke svrhe. Svoj rad je prezentovao na raznim konferencijama kao što su LLVM Dev Meeting, FOSDEM, CGO (Code Generation and Optimization), i druge.
18.03.2024.
15.03.2024.
15.03.2024.
10.03.2024.
U četvrtak 14. marta u 16h, Boris Spasojević će održati predavanje
GraalVM je skup tehnologija okupljenih oko Java Virtuelne Mašine koje omogućavaju izvršavanje koda pisanog u raznim programskim jezicima (Java, Scala, Kotlin, JS, Python, Ruby, itd.) sa fokusom na visokim performansama. U korenu GraalVM se nalazi Graal - kompajler pisan u Javi koji se koristi na nekoliko različitih načina: Kao JIT kompajler za HotSpot JVM, kao AOT kompajler za JVM bajtkod i kao JIT kompajler za dinamičke jezike poput JavaScript-a, Python-a i Ruby-a. U ovom predavanju ćemo proći kroz razne mogućnosti GraalVM-a sa fokusom na to kako ih Graal omogućava.
Oracle Labs je deo komapnije Oracle koji se bavi razvojem i istraživanjima. To je mesto gde se istraživači i inženjeri okupljaju kako bi ponovo zamislili osnove računarstva. Ekspertiza u proizvodnji hardvera i softvera pozicionirala je Oracle labs kao vodeću laboratoriju za industrijsko istraživanje za kreiranje tehnologija koje imaju kapacitet da radikalno promene postojeće paradigme računarske nauke. Oracle labs radi na ovom cilju svakog dana na lokacijama širom sveta, uključujći Beograd.
Boris Spasojević je vodeći istraživač (Principal Researcher) u Oracle Labs-u, koji radi na GraalVM-u. Njegovo istraživanje je usredsređeno na kompajlerske optimizacije za statičke i dinamičke jezike, razvoj alata za programere kao i alate za razvoj programskih jezika. Boris je doktorirao na Univerzitetu u Bernu na temu programerskih alata svesnih softverskog ekosistema.
29.02.2024.
17.02.2024.