Računarska nauka

**Računarska nauka** () jest naučna disciplina koja se bavi računarima, njihovim teoretskim i algoritmičkim temeljima, hardverom i softverom.

Ova disciplina izučava algoritme, podatkovne strukture, računarski i mrežni dizajn, informacione procese i umjetnu inteligenciju. Koristi se temeljima u matematici i inženjerstvu te uključuje neke tehnike iz polja kao što su teorija čekanja i posluživanja, vjerovatnoća i statistika.

Računarska nauka uz računarsko inženjerstvo, informacione sisteme, informacionu tehnologiju, softversko inženjerstvo smatra se dijelom pet srodnih ali odvojenih disciplina. Ovih pet disciplina međusobno su povezane u smislu da je računarstvo njihov predmet proučavanja, ali su odvojene jer svaka ima svoju istraživačku perspektivu i kurikularni fokus.

## Polja 
Kao disciplina, računarska nauka obuhvaća niz tema, od teoretskih proučavanja algoritama do praktičnih pitanja implementacije računarskih sistema u hardveru i softveru. Četiri ključne discipline računarske nauke su: *teorija računanja*, *algoritmi i strukture podataka*, *programerska metodologija i jezici*, te *računarski elementi i arhitektura*. Pored ove četiri oblasti, CSAB također identifikuje polja kao što su softverski inženjering, umjetna inteligencija, računarsko umrežavanje i komunikacija, baze podataka, paralelno računanje, distribuirano računanje, interakcija čovjek-računar, računarska grafika, operativni sistemi i numeričko i simbolično računanje kao ostala važna područja računarske nauke.

### Teoretska računarska nauka 
*Teoretska računarska nauka* je matematička i apstraktna. Njen cilj je razumjeti prirodu **izračuna** i pružiti efikasnije metodologije. Sve studije vezane za matematičke, logičke i formalne koncepte i metode mogu se smatrati teorijskim računarskim znanjem, pod uslovom da se motivacija povlači iz polja **računarstva**.

#### Strukture podataka i algoritmi 
Strukture podataka i algoritmi su studije najčešće korištenih računarskih metoda i njihove računske efikasnosti.

#### Teorija računanja 
Prema Peteru Denningu, temeljno pitanje na kojem se temelji računarska nauka je: "Šta se može (efikasno) automatizovati?" Teorija računanja fokusirana je na traženje odgovora šta je moguće izračunati i koja količina resursa je potrebna za izvršenje tih izračuna.

Čuveni P=NP? problem, jedan od Milenijskih problema, stoji za jedan od neriješenih problema u teoriji računanja.

#### Teorija informacija i kodiranja 
Teorija informacija je povezana s kvantifikacijom informacija. Teoriju je razvio Claude Shannon kako bi pronašao temeljna ograničenja u postupcima obrade signala, kao što su sažimanje podataka i pouzdano pohranjivanje i komuniciranje podataka. Teorija kodiranja je proučavanje svojstava koda i njihove prikladnosti za određenu primjenu. Kodovi se koriste za kompresiju podataka, kriptografiju, otkrivanje i ispravljanje grešaka, i za mrežno kodiranje. Kodovi se proučavaju u svrhu dizajniranja efikasnih i pouzdanih metoda prenosa podataka.

#### Teorija programskog jezika 
Teorija programskog jezika grana je računarske znanosti koja se bavi dizajnom, implementacijom, analizom, karakterizacijom i klasifikacijom programskih jezika i njihovih pojedinačnih karakteristika. To je aktivno istraživačko područje, s brojnim posvećenim akademskim časopisima.

#### Formalne metode 
Formalne metode su posebna vrsta matematički zasnovane tehnike za specifikaciju, razvoj i provjeru softverskog i hardverskog sistema. Formalne metode najbolje se opisuju kao primjena širokog spektra teoretskih osnova računarstva, posebno logičkih kalkulacija, formalnih jezika, teorije automata i programske semantike, ali i sistem tipova i algebratskih tipova podataka na probleme u hardverskoj i softverskoj specifikaciji i verifikaciji.

### Računarski sistemi 
#### Računarska arhitektura i računarski inženjering 
Računarska arhitektura jest konceptualni dizajn i struktura jednog računarskog sistema. Najviše je fokusirana na način na koji centralni procesor obavlja i dohvaća adrese u memoriji. Područje često uključuje discipline računarskog inženjerstva i elektrotehnike, odabir i međusobno povezivanje hardverskih komponenti za stvaranje računara.

#### Analiza performansi računara 
Analiza performansi računara je studija koja analizira rad računara sa ciljevima poboljšanja propusnosti, upravljanjem vremenskog odziva, efikasnog korištenja resursa, uklanjanja uskih grla i predviđanja performansi pod očekivanim najvećim opterećenjima. Mjerila (benchmark) se koriste za poređenje performansi.

#### Istovremeni, paralelni i distribuirani sistemi 
Istovremenost je svojstvo sistema u kojima se istovremeno vrši nekoliko računanja. Brojni matematički modeli razvijeni su za opće istovremeno računanje , uključujući Petrijeve mreže, proračune procesa i PRAM (Parallel Random Access Machines)  Više paralelnih međusobno poveznih računara zovemo distribuirani sistem. Računari unutar distribuiranog sistema imaju svoju privatnu memoriju, a informacije se mogu razmjenjivati kako bi se postigli zajednički ciljevi.

#### Računarske mreže 
Ova grana računarske nauke ima za cilj upravljanje mrežama između računara širom svijeta.

#### Računarska sigurnost i kriptografija 
Računarska sigurnost jest grana koja se bavi ciljem zaštite informacija od neovlaštenog pristupa, poremećaja ili izmjena. Kriptografija je praksa i proučavanje skrivanja (šifriranja) i otkrivanja (dešifriranja) informacija. Savremena kriptografija u velikoj je mjeri povezana s računarskom naukom, jer se mnogi algoritmi za enkripciju i dešifriranje zasnivaju na njihovoj računskoj složenosti.

#### Baze podataka 
Baza podataka namijenjena je organizovanju, pohranjivanju i pronalaženju velikih količina podataka. Digitalnim bazama podataka upravlja se pomoću sistema za upravljanje bazama podataka za pohranu, stvaranje, održavanje i pretraživanje podataka, putem modela baze podataka i jezika upita.

### Računarske aplikacije 
#### Računarska grafika i prikaz 
Računalna grafika je proučavanje digitalnih vidljivih sadržaja i uključuje sintezu i manipulaciju slikovnim podacima. Studija je povezana s mnogim drugim poljima računarske nauke, uključujući računarski vid, obradu slike i računarsku geometriju i uveliko se primjenjuje u područjima specijalnih efekata i video igara.

#### Interakcija između čovjeka i računara 
Istraživanje koje razvija teorije, principe i smjernice za dizajnere korisničkog interfejsa kojem je za cilj da stvori odgovarajuće korisničko iskustvo na svim vrstama i oblicima računara kao što su lični računari, laptopi i mobilni uređaji.

#### Naučno računanje i simulacija 
Naučno računarstvo jest polje proučavanja koje se bavi izgradnjom matematičkih modela i tehnika numeričke analize i korištenjem računara za analizu i rješavanje naučnih problema. Velika upotreba naučnog računanja je simulacija različitih procesa, uključujući računsku dinamiku fluida, fizičke, električne i elektroničke sisteme i sklopove, kao i društvene situacije (posebno simulaciju rata).

#### Umjetna inteligencija 
Umjetna inteligencija (UI) jest naučna oblast u kojoj se izučavaju izračunavanja da bi se izračunavanjem omogućila percepcija, rezonovanje i činjenje. Od svog nastanka u kibernetici na Dartmouth konferenciji (1956), istraživanje umjetne inteligencije je bilo interdisciplinarno, oslanjajući se na područja ekspertize kao što su primijenjena matematika, matematička logika, semiotika, elektrotehnika, filozofija uma, neurofiziologija i društvena inteligencija. UI je popularno povezan s robotskim razvojem, ali glavno polje praktične primjene je u područjima razvoja softvera, koja zahtijevaju računarsko razumijevanje. Polazna tačka u kasnim četrdesetim bila je pitanje Alana Turinga "Mogu li računari razmišljati?". Pitanje i dalje ostaje praktično bez odgovora.

### Softversko inženjerstvo 
Softversko inženjerstvo je stroga primjena inženjerstva, naučnih i matematičkih principa i metoda u ekonomičnoj proizvodnji kvalitetnog softvera. Nastao je kao nužna potreba vezana za programiranje i izradu softvera početkom 1970-ih godina.

## Podjela računara 
Postoje tri osnovna tipa računara: analogni, digitalni i hibridni.

### Analogni računari 
Analogni računari obrađuju podatke predstavljene kontinualnim promjenjivim vrijednostima, kao što su napon i struja. Predstavljaju fizičku analogiju matematičkog problema koji treba riješiti. Kako su u stanju da vrlo brzo rješavaju obične diferencijalne jednačine, pogodni su za primjenu u simulaciji modela procesa i opreme u realnom vremenu. Također se koriste u analizi mreža, kao što su elektrodistributivne mreže u elektroenergetskim postrojenjima.

Tačnost rezultata kod ovih računara je ograničena tačnošću mjerenja ulaznih veličina, kao i tolerancijom korišćenih komponenti.

Proračuni se izvode simulacijom prijenosnih funkcija matematičkih jednačina, pomoću sabirača, invertora i drugih sklopova na bazi operacijskih pojačala. Na ovaj način se svako sabiranje, integriranje i druge operacije iz jednačine izvode istovremeno u odvojenim operacionim pojačalima koja rade paralelno. Na izlazu je dato rješenje, uz minimalno kašnjenje, u kontinualnoj formi, pa se kaže da ovi računari daju opće rješenje date jednačine.

### Digitalni računari 
Digitalni računari vrše operacije nad varijablama u diskretiziranoj formi. Radi ekonomičnosti, jednostavnosti i pouzdanosti elektronskih uređaja sa dva stanja (prekidači, tranzistori, releji, itd.) digitalni računari koriste binarni sistem predstavljanja brojeva. Kao posljedica toga, tačnost rezultata zavisi od broja binarnih cifara kojima se predstavljaju varijable.
 **Primjer:**  sa 10 bita ono je 0,1%
Za razliku od analognih računara koji rade paralelno, digitalni računari rade redoslijedno. Operacije se obavljaju jedna po jedna i rezultat je numerički, za razliku od općeg (npr. osciloskop) kod analognih. Da bi se dobilo opće rješenje jednačine, potrebno je obaviti niz iteracija proračuna sa svim vrijednostima ulaznih parametara. Zbog toga su digitalni računari sporiji od analognih u pogledu rada u realnom vremenu. Međutim digitalni računari su u stanju da broje, pretražuju i razmještaju podatke u skladu sa vrlo detaljnim programskim instrukcijama koje su smještene u memoriji. Za razliku od analognih računara, digitalni računari mogu se programirati da izvršavaju najrazičitije zadatke. Rezultati aritmetičkih i logičkih operacija se prevode u slova, brojeve ili simbole razumljive operatoru ili signale razumljive računaru.

Zbog svih gore navedenih prednosti, digitalni računari su postali neophodno sredstvo u današnjem vremenu.

### Hibridni računari 
Hibridni računari kombinuju prednosti analognih i digitalnih računara. Oni su nastali kao rezultat pokušaja da se objedine brzina analognih računara i lahkoća upravljanja digitalnim računarima. Tako se može sprovesti proračun čitave familije funkcija automatskim (digitalnim) mijenjanjem parametara jednačina u analognom dijelu računara.

Drugi način organizacije hibridnih računara je onaj u kome upravljačke funkcije obavlja digitalni računar,  a poslove integrisanja ili rješavanje diferencijalnih jednačina obavlja analogni računar.

Ovi računari koriste i kontinualne i diskretne vrijednosti podataka. U posljednje vrijeme koriste se za simulaciju rada nuklearnih reaktora, svemirskih letjelica, kod kojih je veoma važno vjerno predstavljanje dinamičkog sistema.

## Brojni sistemi 
Ljudi su svoje ruke i prste od davnina koristili kao pomoćno sredstvo za brojanje. Ipak, takav brojni sistem nije najefikasniji niti najpogodniji za korištenje u računarskim mašinama.

Za razliku od ljudi, računari rade sa brojevima koji imaju ograničen broj cifara, a time i konačnu (ograničenu) preciznost. Često se za računarsku tehnologiju kaže da je digitalna, jer se zasniva na ciframa - digitima. Za matematiku cifra 15 uvijek znači jedno te isto, ali se može predstaviti na neograničeno mnogo načina.

Jedna od osnovnih namjena numeričke prezentacije broja je mogućnost manipulisanja ciframa. Ako neko pokuša sabirati ili množiti, ili čak da bazira ozbiljan račun na rimskim brojevima, koji su još uvijek u upotrebi naći će se pred velikim problemom. Mnogi će pomisliti kada vide hexadecimalne brojeve, da je takvo nešto užasno komplikovano, iako poslije boljeg sagledavanja njihove strukture, da se zaključiti da su možda čak podesniji od decimalnih brojeva. Razvoj matematike u Evropi je krenuo tek pošto su se upoznali sa arapskim decimalnim brojnim sistemom. Ono što je glavno u ovom sistemu jeste radix (r), odnosno baza. Za sve brojeve manje od radixa definišu se simboli i oni idu od prezentacija za ništa (0) pa do (r-1).

Ovi brojevi predstavljaju prvi razred numeracije, što kod dekadnih brojeva nazivamo jedinicom, odnosno jednocifrenim brojem. Ovo se pravilo primjenjuje na brojeve sa dvije cifre (dvocifreni broj). Dobijeno rješenje za n se zaokružuje na prvi manji cijeli broj (n mora biti cijeli broj).

Kod zapisa brojeva pojavljuju se dva parametra: broj znakova za cifre i broj mjesta potrebnih za zapis broja. Imamo četiri upotrebljiva brojna sistema (prikaz sa bazom sistema respektivno): 2-Binarni, 8-Oktalni 10-Decimalni i 16-Hexadecimalni.

## Kodovi i kodiranje 
Znakovi kojima se ljudi služe u međusobnoj komunikaciji, pa i u komunikaciji s računarom, dakle oni koji se nalaze na tastaturi računara, moraju poprimiti binarni oblik prije obrade u elektronskom računaru. Elektronski elementi od kojih je građen računar mogu poprimiti samo dva različita stanja od kojih se jedno označava sa 1, a drugo sa 0. To je veza s binarnim brojnim sistemom, ali se zapisi podataka u računaru ne tumače uvijek kao binarni brojevi, već kao binarni zapis.Kada čovjeku zatreba uvid u sadržaj tih zapisa, on ga dobiva u njemu prilagođenom zapisu, skupom semantičkih znakova. Postupci kojima se to omogućava nazivaju se kodiranje odnosno dekodiranje.Proces kodiranja se provodi na način da se pojedinim semantičkim znakovima pridružuje odgovarajuća kombinacija binarnih nula i jedinica koje kreiraju fizički zapis semantičke vrijednosti. Pretpostavka uspješnog komuniciranja računara u razmjeni ili obradi podataka se zove dogovor o skupu znakova koji će se u radu s računarom koristiti, te pripadnim binarnim kombinacijama za svaki od znakova i zadaći koja se za svakog treba izvršiti. Dogovor se vremenom proširuje i dograđuje, a on je ili standard države ili preporuka neke međunarodne organizacije.Skup svih znakova koji se tako koriste naziva se apstraktna abeceda, koja zajedno s pripadnim binarnim (ili nekim drugim) kombinacijama čini kod. Pojedini znakovi u kodu nazivaju se elementi koda, a pripadna im zamjena, bilo da je u pitanju binarna kombinacija, neki drugi znak ili nešto treće, naziva se kodna zamjena.

## Reference 
## Dalje čitanje 
### Općenito
* 
* 
* 
* 
* 

### Probrana literatura
* 
* 
* 
* 
* 

### Članci
* Peter J. Denning. *Is computer science science?*, Communications of the ACM, April 2005.
* Peter J. Denning, *Great principles in computing curricula*, Technical Symposium on Computer Science Education, 2004.
* Research evaluation for computer science, Informatics Europe report . Shorter journal version: Bertrand Meyer, Christine Choppy, Jan van Leeuwen and Jorgen Staunstrup, *Research evaluation for computer science*, in Communications of the ACM, vol. 52, no. 4, pp.&nbsp;31–34, April 2009.

### Kurikulum i klasifikacija
* Association for Computing Machinery. 1998 ACM Computing Classification System. 1998.
* Joint Task Force of Association for Computing Machinery (ACM), Association for Information Systems (AIS) and IEEE Computer Society (IEEE CS). Computing Curricula 2005: The Overview Report. September 30, 2005.
* Norman Gibbs, Allen Tucker. "A model curriculum for a liberal arts degree in computer science". *Communications of the ACM*, Volume 29 Issue 3, March 1986.

## Vanjski linkovi 
* 

Kategorija:Računarstvo
Kategorija:Formalne nauke