Skip to main content

IT - Unix Programming Tools

Subject name

Unix Programming Tools

Details
Code
VSITE125
Abbrev.
UNIX
ECTS
5
Year
3
Semester
Summer semester
Type
elective
NQF Level 6
Bachelor study
E-Learning
0%
Activities
IT zg - Win 24/25
ECTS
Units
Hours
Total
T
1
15
2
30
N
0.5
15
1
15
L
0.5
7
2
15
S
0
0
0
0
PN
0
0
0
0
PT
0
2
1
0
PR
0
0
0
0
EN
0
0
0
0
ET
0
1
2
0
AL
3
1
90
90
TeachersLeaders: Ivan Capan, pred., Tomislav Soldo, pred.
PrerequisitsNone
Content

Unix - višezadačni i višekorisnički operacijski sustav: Povijesni razvoj Unixa. Verzije Unixa danas u upotrebi. Linux i Open Source. Tipična Unix sjednica. Unix datotečni sustav: Karakteristike, vrste datoteka, imenovanje, dozvole pristupa. Direktoriji Unixa. Hijerarhija datotečnog sustava. Standardna struktura direktorija u Unixu. Upravljanje datotekama i direktorijima. Vrste programskih alata pod Unixom: Osnovna filozofija Unix programskih alata. Alati za manipulaciju datotekama. Uređivači teksta. Alati za administriranje sustava. Awk. Interpreteri (Tcl/Tk). Ljuska (shell): Definicija. Vrste. Rad ljuske. Osnove rada sa ljuskom. Varijable, izrazi. Upravljanje datotekama. Standardne datoteke, preusmjeravanje ulaza i izlaza, povezivanje procesa kanalima (pipe). Osnove upravljanja procesima. Skripte. Uređivane teksta: Pregled uređivača teksta u Unixu. Vi editor. Osnovni rad sa vi i emacs editorima. Regularni izrazi i njihova primjena. Osnove administracije Unixa: Procesi - definicija, vrste, životni ciklus, atributi. Programski alati za praćenje i upravljanje procesa. Programiranje u unixu: Editiranje izvornog koda. C, C++ programski prevoditelji za Unix. gcc. Linker. Debuger. Tipična struktura projekta u programskom jeziku C. Make programski alat i njegovo korištenje. Osnove X-windows programskog sustava: Client - server arhitektura. X - server. Display manager. Window manager. X-terminal. Grafička okruženja.

Learning objectives

OPĆA ZNANJA:
Studenti će se upoznati sa razvojnim ciklusom pisanja aplikacija koji obuhvaća planiranje, pisanje, prevođenje povezivanje, testiranje i ispravljanje pogrešaka.
Studenti će upoznati osnovne uloge koje ima operativni sustav u računalima. Studenti će se upoznati sa nastankom, svojstvima i ulogom TCP/IP-a.
POSEBNA ZNANJA:
Studenti će se upoznati sa svojstvima i ulogama: UNIX datotečnog sustava, korisničkim ljuskama, pisanjem i korištenjem skripti. Saznati će važnost i načine profiliranja programa.
Naučiti će kako da koriste, mijenjaju i skriptno obrađuju tekstualne datoteke kao osnovne jedinice pohrane podataka u UNIX/Linux okolini.
Biti će upoznati sa anatomijom grafičke okoline u UNIX/Linux sustavima , X-windows sustav, grafička okolina, desktop.
Naučiti će kako se pišu startaju i koriste UNIX/Linux sistemski servisi.
Naučiti će kako se uz pomoć make/gmake alata automatizira izrada ( build ) složenih projekata.
Biti će upoznati sa pojmom repozitorija verzija i kako se on koristi razvoju inačica složenih projekata

Learning outcomes

1. Log in to a UNIX/Linux system. Properly use a file system. Productively use and administrate his/her user account and shell.
2. To assemble and successfully use shell and awk scripts.
3. To write, translate, test and correct programs and program libraries in a UNIX/Linux environment with the help of gcc and gdb.
4. To productively use X-windows environment, graphical environments and desktop environments.
5. To successfully use TCP/IP stack in everyday work and in writing programs.

Competencies

Kolegij pruža specijalistička znanja s područja programiranja kao nadogradnju jezgre računarstva i osposobljava polaznika za korištenje i razvoj programa za operacijski sustav iz obitelji UNIX sustava

Recommended Literature

1. Richard Stevens: " Advanced Programming in the UNIX(R) Environment", Addison-Wesley, 1992. 2. Jerry Peek, Tim O'Reilly, Mike Loukides: " UNIX Power Tools, 2nd Edition", O'Reilly & Associates, 1997. 3. Arthur Griffith "GCC: The Complete Reference", McGraw-Hill Osborne Media, 2002.

Additional Literature
lectures (T)
  1. Nastanak i povijest UNIX-a i osnovna UNIX svojstva i filozofija, nastanak C programskog jezika, Linux, koncept alata i sistemske pomoći. GNU licenca. Pregled distribucija Linuxa.
  2. UNIX datotečni sustav, inode i data blokovi, sadržaj inode-a, jedinstveno UNIX stablo direktorija, mode i vlasništvo svojstva datoteka i direktorija. Kako su svi elementi sustava povezani u jedinstveno stablo UNIX datotečnog sustava. Imenovanje datoteka, puna i relativna imena datoteka. Procesi, životni ciklus UNIX procesa, kernel i user space, code i data area, sistemski pozivi, informacije o procesima. Fork sistemski pozivi.
  3. Procesi, prekidi i komunikacija sa sustavom. Upravljanje procesima (zaustavljanje, prekidanje, promjena prioriteta). Shell (naredbeni redak) - korištenje, pokretanje programa. Dozvole nad datotekama.
  4. Administratorske privilegije (sudo). Obični i privilegirani korisnik. Upravljanje korisnicima i grupama. Mrežne postavke na serveru. Instalacija softvera i upravljanje arhivama. Cron - pokretanje procesa u određeno vrijeme.
  5. Preusmjeravanje ulaza i izlaza u shellu. Naredba grep za pretraživanje. Razne sitne Linux naredbe. Shell programiranje; osnovna skripta. Osnove korištenja Nano editora. Provjera uvjeta u skriptama. Kontrola toka; petlje (while, for).
  6. Dodatne naprednije stvari u shell programiranju. Aritmetika u skriptama. Ulančavanje naredbi. Konfiguracija shella, aliasi, varijable okoline. Vi editor, osnovno i napredno korištenje.
  7. Regularni izrazi, opis što su regular expressions, zamjenski znakovi i posebni nizovi. Osnovni i napredni primjeri.
  8. FIND naredba za pretraživanje po stablu direktorija. Naredba tr. AWK i sed, AWK patterni i akcije. Definicija i pisanje patterna, definicija i pisanje akcija, varijable i nizovi u awk-u, kontrola toka, ugrađene funkcije.
  9. SED stream editor. Zamjena teksta u datoteci uz pomoć SED-a. Regularni izrazi u SED-u. Osnovni primjeri.
  10. GCC Gnu C compiler, opis, povijest, svojstva i upotreba. Faze prevođenja izvornog koda.
  11. MAKE i Makefile, upravljanje procesom izrade projekta po vremenskoj bazi, važnost, načini kako se to radi, upotreba make alata u softverskim i drugim projektima. Makefile - sintaksa, varijable, macroi, pravila, uvjeti.
  12. Verzionirani repozitorij kao uređen skup verzija dijelova projekta, verzije dijelova i cijelog projekta, grane ( branches ) u repozitoriju, kako se koristi i održava repozitorij. GIT repozitorij - osnovno i napredno korištenje. Diff i patch naredbe za usporedbu tekstualnih datoteka.
  13. Koraci prevođenja gotovog softverskog paketa - naredba/skripta configure. Izrada configure skripte. Autotools alati za pomoć kod pripreme okoline za prevođenje. Izrada Debian DEB paketa. Osnove nadzora izvođenja nekog gotovog programa naredbom strace.
  14. GDB Gnu debbuger, opis, svojstva i upotreba, važnost traženja i ispravljanja grešaka u programima. Profiling, važnost analize rada programa u runtime-u, skupljanje podataka, analiza podataka, unaprijeđenje programa
  15. Programski jezici koji se interpretiraju i često koriste u UNIX okolini PERL, PHP, Phyton, struktura i upotreba, varijable, kontrole toka, sintaksa.
numeric exercises (N)
  1. Nastanak i povijest UNIX-a i osnovna UNIX svojstva i filozofija, nastanak C programskog jezika, Linux, koncept alata i sistemske pomoći. GNU licenca. Pregled distribucija Linuxa.
  2. UNIX datotečni sustav, inode i data blokovi, sadržaj inode-a, jedinstveno UNIX stablo direktorija, mode i vlasništvo svojstva datoteka i direktorija. Kako su svi elementi sustava povezani u jedinstveno stablo UNIX datotečnog sustava. Imenovanje datoteka, puna i relativna imena datoteka. Procesi, životni ciklus UNIX procesa, kernel i user space, code i data area, sistemski pozivi, informacije o procesima. Fork sistemski pozivi.
  3. Procesi, prekidi i komunikacija sa sustavom. Upravljanje procesima (zaustavljanje, prekidanje, promjena prioriteta). Shell (naredbeni redak) - korištenje, pokretanje programa. Dozvole nad datotekama.
  4. Administratorske privilegije (sudo). Obični i privilegirani korisnik. Upravljanje korisnicima i grupama. Mrežne postavke na serveru. Instalacija softvera i upravljanje arhivama. Cron - pokretanje procesa u određeno vrijeme.
  5. Preusmjeravanje ulaza i izlaza u shellu. Naredba grep za pretraživanje. Razne sitne Linux naredbe. Shell programiranje; osnovna skripta. Osnove korištenja Nano editora. Provjera uvjeta u skriptama. Kontrola toka; petlje (while, for).
  6. Dodatne naprednije stvari u shell programiranju. Aritmetika u skriptama. Ulančavanje naredbi. Konfiguracija shella, aliasi, varijable okoline. Vi editor, osnovno i napredno korištenje.
  7. Regularni izrazi, opis što su regular expressions, zamjenski znakovi i posebni nizovi. Osnovni i napredni primjeri.
  8. FIND naredba za pretraživanje po stablu direktorija. Naredba tr. AWK i sed, AWK patterni i akcije. Definicija i pisanje patterna, definicija i pisanje akcija, varijable i nizovi u awk-u, kontrola toka, ugrađene funkcije.
  9. SED stream editor. Zamjena teksta u datoteci uz pomoć SED-a. Regularni izrazi u SED-u. Osnovni primjeri
  10. GCC Gnu C compiler, opis, povijest, svojstva i upotreba. Faze prevođenja izvornog koda.
  11. MAKE i Makefile, upravljanje procesom izrade projekta po vremenskoj bazi, važnost, načini kako se to radi, upotreba make alata u softverskim i drugim projektima. Makefile - sintaksa, varijable, macroi, pravila, uvjeti.
  12. Verzionirani repozitorij kao uređen skup verzija dijelova projekta, verzije dijelova i cijelog projekta, grane ( branches ) u repozitoriju, kako se koristi i održava repozitorij. GIT repozitorij - osnovno i napredno korištenje. Diff i patch naredbe za usporedbu tekstualnih datoteka.
  13. Koraci prevođenja gotovog softverskog paketa - naredba/skripta configure. Izrada configure skripte. Autotools alati za pomoć kod pripreme okoline za prevođenje. Izrada Debian DEB paketa. Osnove nadzora izvođenja nekog gotovog programa naredbom strace.
  14. GDB Gnu debbuger, opis, svojstva i upotreba, važnost traženja i ispravljanja grešaka u programima. Profiling, važnost analize rada programa u runtime-u, skupljanje podataka, analiza podataka, unaprijeđenje programa
  15. Programski jezici koji se interpretiraju i često koriste u UNIX okolini PERL, PHP, Phyton, struktura i upotreba, varijable, kontrole toka, sintaksa.
laboratory exercises (L)
  1. Instalacija Debian (desktop ili server varijante) Linux-a na računalo ( u vlastitu particiju, unutar Windowsa, u virtualnu mašinu )
  2. Rad u komandnoj liniji, rad na udaljenom serveru, osnovne naredbe komandne linije, pravilno adresiranje i pozicioniranje u stablu direktorija, korištenje osnovnih naredbi, chmod i chown, rad s procesima, osnove sudo naredbe
  3. Rad sa kompresiranim arhivama, cron poslovi, log direktoriji, uređivanje teksta nano editorom, mini shell skripta
  4. Naprednije shell skripte, petlje, uvjeti. Osnove uređivanja teksta vi editorom.
  5. Regularni izrazi, osnove i naprednije korištenje. Pronalaženje datoteka naredbom find. Osnove AWK skriptnog jezika.
  6. SED i AWK napredniji primjeri.
  7. GCC - prvi C kompajlirani source, primjer Makefile datoteke za malo kompleksniji C source.
preliminary exam - theory (PT)
  1. Test se polaže pismeno, traje 1 školski sat, 15 pitanja, različite težine i bodovanja (teorijski 5%, praktični 10%). Jedinice predavanja 1-8. Na oba kolokvija studenti moraju postići prosjek od 50% ili veći. U slučaju nezadovoljenja na testu, test se ponavlja u redovitim terminima zimskog ispitnog roka.
  2. Test se polaže pismeno, svako pitanje se vrednuje 5 ili 10 bodova/postotaka. Traje 1 školski sat. Jedinice predavanja 9-15. Na oba kolokvija studenti moraju postići prosjek od 50% ili veći. U slučaju nezadovoljenja na testu, test se ponavlja u redovitim terminima zimskog ispitnog roka.
exam - theory (ET)
  1. Zimski i ljetni ispitni rokovi: odvojeno polaganje prvog i drugog dijela gradiva ("ispravak kolokvija"), polaže se kao pismeni ispit, usmeni ispit se provodi po potrebi. Jesenski ispitni rokovi: cijelo gradivo bez obzira na rezultat kolokvija, polaže se pismeni ispit, usmeni ispit se provodi po potrebi. Jedinice predavanja 1-15. Test se polaže pismeno, svako pitanje se vrednuje sa 5 ili 10%, s tim da se pojedino pitanje može vrednovati kao netočno, djelomično točno i potpuno točno. Ocjena se određuje iz ukupnog rezultata dobivenog tako da se rezultat ispita ili kolokvija pomnoži s 0,8, rezultati na laboratorijskim vježbama s 0,13, a rezultati tjednih testova na predavanjima s 0.07. Tako dobiveni rezultat se pretvara u ocjene: 0-50% nedovoljan 50-62,5% dovoljan 62,5-75% dobar 75-87,5% vrlodobar 87,5-100% izvrstan (odličan).
autonomus learning (AL)
  1. kolokviji, konzultacije, samostalno učenje, samostalno rješavanje numeričkih zadataka, samostalni rad u laboratoriju

Ulica Vjekoslava Klaića 7, 10000 Zagreb, tel. 01/3764200 fax. 01/3764264