SKRIPT PROGRAMIRANJE

Ova stranica je posvećena kursu Skript-programiranje na studijskom programu Informatika. Cilj predmeta je sticanje opštih i specifičnih znanja o skript jezicima, komandnoj liniji i programskoj obradi tekstualnih datoteka. U okviru predmeta obrađuju se teorijski značaj skript jezika, kao i praktične primene. Posebno se obrađuju shell skript jezik Bash i programski jezik Python.

Osnovne informacije:

  • Predmet je obavezan.
  • Predmet se sluša na drugoj godini studijskog programa Informatika.
  • Nastava se održava tokom prolećnog semestra.
  • Predmet vredi 3 boda ESPB.
  • Nastava se odvija jednim časom predavanja i jednim dvočasom vežbi nedeljno.

Sadržaj predmeta:

  • Uvod u skript jezike
    • Karakteristike skript jezika
    • Domeni upotrebe skript jezika
    • Jezici opšte namene
    • Osnovne karakteristike najznačajnijih skript jezika
    • Regularni izrazi (praktični aspekti)
  • Skript jezici za rad u komandnoj liniji
    • Osnove jezika i okruženje za rad
    • Komande za baratanje fajlovima i fajl sistemom (cd, touch, rm, chown, chmod, ...)
    • Komande za obradu teksta (echo, grep, sed, cut, tr, ...)
    • Kompozicija komandi i preusmeravanje ulaza i izlaza (pipe, fg, bg, &&, &, >, ...)
    • Promenljive i interpolacija stringova
    • Kontrola toka izvršavanja
    • Pisanje i pokretanje skriptova
  • Programski jezik Python
    • Osnove jezika Python, interpreter
    • Kontrola toka izvršavanja
    • Funkcije, argumenti, pozicioni i imenovani argumenti
    • Liste i funkcije za baratanje listama
    • Rečnici i kolekcije podataka
    • Rad sa ulazom i izlazom
    • Datoteke i sistem datoteka
    • Rad sa uobičajenim tipovima tekstualnih datoteka (json, csv, tsv, xml)

Literatura:

  • „Learning the Bash shell”, C. Newham
  • „The Linux Command Line”, W. Shotts
  • „Learning Python”, M. Lutz

Predmetni nastavnik:

Asistenti:

  • Stefan Milenković
  • Robert Doža

Predispitne obaveze

Na kursu nema obaveznih ni nenadoknadivih predispitnih obaveza. Tokom semestra se zadaju domaći zadaci koji pokrivaju gradivo obrađeno na časovima vežbi i koji nose dodatne poene. Broj poena na domaćim zadacima će biti određen tokom semestra. Ovi poeni su dodatni i student može ostvariti svih 100 poena na završnom ispitu i bez njih. S druge strane, poeni ostvareni na domaćim zadacima se ne računaju u ukupan ostvareni rezultat prilikom određivanja ispunjenosti uslova za polaganje ispita. Računaju se tek kada student ostvari uslov za polaganje ispita i mogu služiti da eventualno povećaju ostvarenu ocenu.

Tekućoj tabeli sa ostvarenim rezultatima na domaćim zadacima, može se pristupiti preko narednog linka: link

Završni ispit

Završni ispit vredi 100 poena i sastoji se od dva dela: praktičnog i teorijskog. Da bi student položio ceo ispit, mora položiti praktični i teorijski deo ispita, kao i ukupno ostvariti barem 51 poen.

Praktični deo ispita
  • Vredi 70 poena.
  • Na ovom delu ispita se proverava poznavanje gradiva obrađenog na časovima vežbi.
  • Podrazumeva rešavanje praktičnih zadataka (programiranje) na računaru.
  • Vreme za rad je 120 minuta.
  • Da bi student položio ovaj deo ispita, mora ostvariti barem 35 poena.
  • Primer rešenog praktičng ispita se može naći na linku.
Teorijski deo ispita
  • Vredi 30 poena.
  • Na ovom delu ispita se proverava poznavanje gradiva obrađenog na predavanjima.
  • Podrazumeva odgovaranje na teorijska pitanja i čuvanje odgovora na računaru.
  • Vreme za rad je 45 minuta.
  • Da bi student položio ovaj deo ispita, mora ostvariti barem 15 poena.

Informacije o polaganju ispita
  • Praktični deo ispita i teorijski deo ispita se u svakom ispitnom roku održavaju u istom terminu.
  • U jednom ispitnom roku, moguće je polagati:
    • samo praktični deo ispita (bez obzira da li je prethodno polagan teorijski deo ispita);
    • samo teorijski deo ispita (bez obzira da li je prethodno polagan praktični deo ispita);
    • oba dela ispita.
  • Ostvaren rezultat na bilo kom delu ispita važi do kraja školske godine, osim u slučaju ponovnog izlaska na taj deo ispita u nekom od narednih ispitnih rokova. U tom slučaju, studentu važi poslednji ostvareni rezultat, čak i ako pri poslednjem izlasku ne položi taj deo ispita!
Napomena: materijali trpe konstantne promene tokom semestra. Za sva pitanja, nedoumice i predloge, javiti se mejlom predmetnom nastavniku.

Predavanje 1 - Uvod u skript jezike

  • Pojam i uloga skript jezika
  • Razilka između skriptnih i kompajliranih jezika
  • Karakteristike skript jezika
  • Pregled domena primene: sistemska administracija, automatizacija, analiza podataka
  • Primer upotrebe nad učestalim tipovima tekstualnih datoteka: JSON, CSV, TSV, XML

Predavanje 2 - Jezici opšte namene i pregled skript jezika

  • Jezici opšte namene
  • Pregled najznačajnijih skript jezika (Bash, Python, PowerShell, JavaScript)
  • Osnovne karakteristike i uporedna analiza
  • Kriterijumi za izbor skript jezika

Predavanje 3 - Regularni izrazi

  • Osnovni koncepti regularnih izraza
  • Sintaksa i najčešći obrasci
  • Praktični aspekti primene regularnih izraza
  • Primena u komandnoj liniji i Python-u

Predavanje 4 - Skript jezici za rad u komandnoj liniji

  • Komandna linija i okruženje za rad
  • Uloga shell-a
  • Osnovni koncepti rada u terminalu
  • Pregled alata i tipičnih scenarija upotrebe

Predavanje 5 - Obrada podataka u komandnoj liniji

  • Rad sa fajlovima i fajl sistemom
  • Komande za obradu teksta
  • Kompozicija komandi
  • Preusmeravanje ulaza i izlaza

Predavanje 6 - Pisanje i izvršavanje shell skriptova

  • Promenljive i interpolacija stringova
  • Kontrola toka izvršavanja
  • Pisanje, pokretanje i testiranje skriptova
  • Osnove debagovanja

Predavanje 7 - Uvod u Python kao skript jezik

  • Python kao interpretirani jezik
  • Python interpreter i okruženje za rad
  • Osnovna sintaksa
  • Struktura Python programa

Predavanje 8 - Kontrola toka i funkcije u Python-u

  • Uslovne strukture i petlje
  • Funkcije
  • Pozicioni i imenovani argumenti
  • Dobra programska praksa

Predavanje 9 - Strukture podataka u Python-u

  • Liste i funkcije za rad sa listama
  • Rečnici i kolekcije podataka
  • Osnovni algoritmi nad strukturama podataka

Predavanje 10 - Rad sa ulazom, izlazom i datotekama u Python-u

  • Standardni ulaz i izlaz
  • Rad sa datotekama i sistemom datoteka
  • Rad sa uobičajenim tipovima tekstualnih datoteka
    • JSON
    • CSV/TSV
    • XML

Predavanja 11-13 - Primeri iz prakse

  • Primeri u realnim scenarijima
Materijali (kod pisan na času, beleške i dr.) se mogu pronaći na narednom GitHub repozitorijumu: link

Napomena: materijali trpe konstantne promene tokom semestra. Za sva pitanja, nedoumice i predloge, javiti se predmetnim asistentima.

Dvočas 1

  • Uvod u praktični deo kursa
  • Rad u komandnoj liniji
  • Fajl sistem, putanje, fajlovi i direktorijumi
  • Priručnik man, komanda help
  • Rad sa fajl sistemom (komande pwd, ls, cd, touch, rm, mkdir, rmdir, pushd, popd, find)
  • Prava pristupa (komanda chmod)

Dvočas 2

  • Pisanje Beš skriptova
  • Ekspanzije
  • Argumenti komandne linije
  • Kontrola toka - grananje, „for each” petlja

Dvočas 3

  • Kontrola toka (nastavak)
    • grananje (case)
    • petlje (for, while, until)
  • Funkcije
  • Globovanje

Dvočas 4

  • Izlazni status komandi
  • Kombinovanje komandi logičkim operatorima
  • Ulazni i izlazni tokovi komandi
  • Redirekcija u Bešu

Dvočas 5

  • Regularni izrazi
  • Alat grep

Dvočas 6

  • Alati grep i sed
  • Komande uniq, sort, head i tail

Dvočas 7

  • Komande cut i tr
  • Kompleksniji zadaci sa obradom teksta

Dvočas 8

  • Uvod u programski jezik Pajton
  • Interpretator
  • Ulaz i izlaz programa
  • Aritmetičke operacije
  • Kontrola toka - grananje i petlje
  • Funkcije
  • Modul sys i argumenti komandne linije
  • Liste

Dvočas 9

  • Uvod u programski jezik Pajton (nastavak)
  • Modul „sys”, argumenti komandne linije
  • Metode za rad sa niskama
  • Skupovi
  • Torke
  • Rečnici
  • Komprehenzija listi, skupova i rečnika

Dvočas 10

  • Sortiranje kolekcija
  • Čitanje sadržaja fajlova, pisanje u fajlove
  • Modul „os” i oblizak fajlova i direktorijuma
  • Obrada fajlova u formatu CSV
  • Modul „json” i obrada fajlova u formatu JSON

Dvočas 11

  • Regularni izrazi u Pajtonu
  • Modul „re” za korišćenje regularnih izraza

Dvočas 12

  • Vežbanje za praktični deo ispita

Rezultati teorijskog dela ispita u Junu 2

Rezultati teorijskog dela ispita u roku Jun 2 se mogu videti ovde.

Kompletni rezultati nakon roka Jun 2 se mogu videti ovde.

Za uvid u teorijske radove se javite predmetnom nastavniku do ponedeljka, 17.7.2026. u 23.59. Upis ocena u indeks nije obavezan da bi ocena bila upisana u Hypatiju. Zainteresovani za upis ocena u indeks treba da se jave predmetnom nastavniku. Ko želi da poništi ispit treba da se javi predmetnom nastavniku do 17.7.2026. u 23.59.

14.8.2026.

Rezultati praktičnog dela ispita u Junu 2

Rezultati praktičnog dela ispita u roku Jun 2 se mogu naći na linku.

Za uvid u radove se javite predmetnom asistentu dodeljenom na Hipatiji do petka, 14.8.2026. u 23.59.

8.8.2026.

Organizacija ispita u Junu 2

Ispit će biti održan u sredu, 22. jula, u zgradi na Studentskom trgu po sledećem rasporedu:

  • teorijski deo ispita od 09.00 do 09.45
  • praktični deo ispita od 10.00 do 12.00
Studenti koji planiraju da polažu samo jedan deo ispita mogu doći samo u terminu održavanja tog dela.

21.7.2026.

Odbrana drugog domaćeg zadatka

Studenti kojima je drugi domaći zadatak obeležen komentarom "odbrana", neophodno je da dođu na odbranu, kako bi dobili poene na tom zadatku. Odbrane će se održati onlajn. Ako student nije u mogućnosti da dođe na odbranu, neophodno je to da javi mejlom najkasnije u četvrtak, 16.7. u 23.59 radi zakazivanja alternativnog termina. Dolazak na odbranu nije obavezan. Ukoliko se student ne javi i ne dođe na odbranu, biće ocenjen sa 0 poena na drugom domaćem zadatku. U nastavku su termini odbrana.

Termini odbrana kod Stefana Milenkovića:

  • 023/2024: nedelja, 19.7. u 12.00
  • 038/2024: nedelja, 19.7. u 12.10
  • 047/2024: nedelja, 19.7. u 12.20
  • 147/2024: nedelja, 19.7. u 12.30
  • 232/2024: nedelja, 19.7. u 12.40

Termini odbrana kod Roberta Dože:

  • 153/2024: nedelja, 19.7. u 11.00
  • 211/2024: nedelja, 19.7. u 11.15
  • 215/2024: nedelja, 19.7. u 11.30
  • 239/2024: nedelja, 19.7. u 11.45
  • 227/2025: nedelja, 19.7. u 12.00
  • 163/2024: nedelja, 19.7. u 12.15
  • 131/2024: nedelja, 19.7. u 12.30
  • 161/2024: nedelja, 19.7. u 12.45

15.7.2026.

Rezultati drugog domaćeg zadatka

Rezultati drugog domaćeg zadatka, kao i ukupni rezultati na domaćim zadacima, mogu se pogledati preko sledećeg linka: link.

Kako je počeo ispitni rok, odlučili smo se da neće biti više domaćih zadataka. Studenti koji su radili prvi zadatak su ocenjeni sa najviše 4 poena, i isto važi za drugi zadatak. Za sve nedoumice, pisati mejlom svom (na Hipatiji dodeljenom) asistentu.

Dodatno, na drugom domaćem su određeni studenti ocenjeni sa 0 poena, uz komentar "odbrana". Studenti za koje to važi, neophodno je da dođu na odbranu da bi bili ocenjeni. Termini odbrane će biti objavljeni u posebnom obaveštenju.

15.7.2026.

Rezultati teorijskog dela ispita u Junu 1

Rezultati teorijskog dela ispita u roku Jun 1 se mogu naći na linku.

Za uvid u teorijske radove se javite predmetnom nastavniku do srede, 15.7.2026. u 23.59.

Upis ocena u indeks biće organizovan u četvrtak 16.7.2026. od 14 časova u kabinetu 716 na Studentskom trgu.

Upis ocena u indeks nije obavezan da bi ocena bila upisana u Hypatiju.

Ko želi da poništi ispit treba da se javi predmetnom nastavniku do 22.7. u 09.00.

14.7.2026.

Rezultati praktičnog dela ispita u Junu 1

Rezultati praktičnog dela ispita u roku Jun 1 se mogu naći na linku.

Za uvid u radove se javite predmetnom asistentu dodeljenom na Hipatiji do utorka, 14.7.2026. u 23.59.

12.7.2026.

Organizacija ispita u Junu 1

Ispit će biti održan u subotu, 4. jula, u zgradi u Jagićevoj ulici po sledećem rasporedu:

  • teorijski deo ispita od 17.00 do 17.45
  • praktični deo ispita od 18.00 do 20.00
Studenti koji planiraju da polažu samo jedan deo ispita mogu doći samo u terminu održavanja tog dela.

2.7.2026.

[Grupe 2i1a, 2i1b] Radna subota

U skladu sa zvaničnim rasporedom aktivnosti, u subotu, 6. juna 2026. će biti održan dvočas vežbi. Dvočas će biti održan u zgradi na Studentskom trgu, u sali 718, od 14č do 16č.

5.6.2026.

Drugi domaći zadatak

Drugi domaći zadatak se može naći na linku.

Domaći se predaje slanjem mejla odgovarajućem predmetnom nastavniku do 23.6.2026. u 23.59. Naslov mejla treba da bude [SP] Domaci 2, a rešenje treba da bude skripta zapakovana u arhivu pod nazivom sp_domaci_2.zip koju treba priložiti u mejlu.

4.6.2026.

[Grupe 2i2v] Nadoknada vežbi

Nadoknada vežbi za grupu 2i2v (petak, kod Stefana Milenkovića) će se održati u petak, 22. maja u terminu 12.15-14.00 u učionici 704. Redovan čas će se održati nakon toga.

15.5.2026.

[Grupe 2i1a, 2i1b, 2i1v] Otkazane vežbe u petak i u subotu

U petak, 15. maja, i u subotu, 16. maja, neće biti održane vežbe predviđene za grupu 2i1v i grupe 2i1a i 2i1b, redom. Termin nadoknade biće naknadno objavljen.

11.5.2026.

Rezultati prvog domaćeg zadatka

Rezultati prvog domaćeg zadatka se mogu pogledati na preko sledećeg linka: link.
Za sve nedoumice, pisati mejlom svom (na Hipatiji dodeljenom) asistentu. Rezultati domaćeg zadatka su izraženi procentualno, dok, tokom semestra, ne bude određeno koliko domaći zadaci vrede dodatnih poena (ukupno, kao i svaki pojedinačno).

6.5.2026.

[Grupa 2i2v] Nadoknada vežbi

Nadoknada izgubljenog časa vežbi za grupu 2i2v (koja se drži petkom kod Stefana Milenkovića) će biti održana u petak, 24. aprila u terminu 12.15-14.00 u učionici 704. Redovan čas će se održati nakon toga.

17.4.2026.

[Grupe 2i1a, 2i1b, 2i1v] Radna subota

Po dogovoru sa časa, u subotu, 18. aprila 2026. će biti održan dvočas vežbi na kome će biti obrađeno gradivo predviđeno za četvrtu nedelju semestra. Dvočas će biti održan u zgradi na Studentskom trgu, u sali 718, od 14č do 16č.

16.4.2026.

Prvi domaći zadatak

Prvi domaći zadatak se može naći na linku.

Domaći se predaje slanjem mejla odgovarajućem predmetnom nastavniku do 26.4.2026. u 23.59. Naslov mejla treba da bude [SP] Domaci 1, a rešenje treba da bude skripta zapakovana u arhivu pod nazivom sp_domaci_1.zip koju treba priložiti u mejlu.

16.4.2026.

Stranica kursa u izradi

Stranica kursa je i dalje u izradi. Informacije koje se tiču načina polaganja ispita biće blagovremeno postavljene.

26.3.2026.

Početak semestra

Svim studentima želimo uspešan početak prolećnog semestra!

25.3.2026.

Matematički fakultet, Univerzitet u Beogradu
školska 2025/26. godina