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

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