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. 96x96piksel96x96piksel103x103piksel104x104pikselAnaliza algoritamaAlgoritmiStrukture podatakaKombinatorička optimizacijaRačunarska geometrija

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. 96x96piksel96x96pikselP = NP?GNITIRW-TERCES96x96pikselTeorija automataTeorija računanjaTeorija računske kompleksnostiKriptografijaTeorija kvantnog 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.Van-Nam Huynh; Vladik Kreinovich; Songsak Sriboonchitta; 2012. Uncertainty Analysis in Econometrics with Applications. Springer Science & Business Media. p. 63. .

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. 108x108piksel96x96pikselTeorija tipovaDizajn kompajleraProgramski jezici

Formalne metode

Formalne metode su posebna vrsta matematički zasnovane tehnike za specifikaciju, razvoj i provjeru softverskog i hardverskog sistema.Phillip A. Laplante, 2010. Encyclopedia of Software Engineering Three-Volume Set (Print). CRC Press. p. 309. . 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. 96x96piksel96x96piksel96x96pikselBooleova algebraMikroarhitekturaMultiprocesiranje96x96piksel96x96piksel142x142pikselSveprisutno računarstvoArhitektura sistemaOperativni sistemi96x96piksel96x96piksel96x96pikselProcesorska jedinicaUlaz/izlazInterpreter

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.Lawrence A. Tomei, 2009. Lexicon of Online and Distance Learning. R&L Education. p. 29. .

Istovremeni, paralelni i distribuirani sistemi

Istovremenost je svojstvo sistema u kojima se istovremeno vrši nekoliko računanja.Jiacun Wang, 2017. Real-Time Embedded Systems. Wiley. p. 12. . 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) Gordana Dodig-Crnkovic; Raffaela Giovagnoli; 2013. Computing Nature: Turing Centenary Perspective. Springer Science & Business Media. p. 247. . 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.Simon Elias Bibri; 2018. Smart Sustainable Cities of the Future: The Untapped Potential of Big Data Analytics and Context-Aware Computing for Advancing Sustainability. Springer. p. 74. .

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). 96x96piksel96x96piksel96x96piksel96x96pikselNumerička analizaRačunarska fizikaRačunarska hemijaBioinformatika

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. 96x96piksel96x96piksel96x96pikselMašinsko učenjeRačunarski vidObrada slike96x96piksel96x96pikselPrepoznavanje uzorkaNeuralne mrežeEvoluciono računarstvo96x96piksel96x96piksel85x85pikselZastupanje i obrazloženje znanjaObrada prirodnog jezikaRobotika

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%