Predmeti na voljo

Vse o diplomskem delu.

Cilj predmeta je študentom predstaviti osnovne koncepte objektno usmerjenega programiranja v enem izmed splošno namenskih programskih jezikov 3. generacije in jih usposobiti za samostojen razvoj enostavnih računalniških programov.

Matematična analiza je področje matematike, ki se ukvarja s funkcijami. Funkcija je formalen opis dejstva, da sta dve količini odvisni, in odvisnosti med njima (na primer, dolžina dneva je odvisna od letnega časa, račun pri blagajni je odvisen od tega, kaj je v košarici, uspeh na izpitu od časa, vloženega v učenje, primerov je še in še). Pri tem predmetu vas želimo bolje spoznati s funkcijami. Zakaj? No, zato, ker jih boste potrebovali pri drugih, računalniških predmetih in kasneje pri svojem delu v računalništvu in informatiki. Več, ko boste o njih vedeli, bolj si boste lahko z njimi pomagali in možnosti so tu skoraj neizčrpne.

Predmet je razdeljen na 4 poglavja z naslovi: Števila, zaporedja in vrste, Funkcije ene in več spremenljivk, Odvajanje funkcij ene in več spremenljivk in uporaba in Integral.



Z matematiko je križ. Diskretne strukture so matematika. Zato so z Diskretnimi strukturami tudi same sitnosti. Ah, šalo na stran. Predstavimo raje, kaj bi zamudili, če bi se Diskretnim strukturam izognili. Če vemo, da je 1+1=2 in 2+2=5, potem bi morali verjeti tudi, da je 3+3=7, mar ne? Sešteli bi lahko obe "enačbi", na primer. Toda v tem primeru moramo verjeti tudi, da so vse krave iste barve. Tega pa si najbrž ne bi mislili. Je težko opravljati posel receptorja v neskončnem hotelu? Tudi če je poln in na obisk pridejo dodatni gosti, jih vedno lahko razporedimo po prostih sobah. Skrbimo lahko tudi, da je hotel polno zaseden, čeprav se lepega dne zaradi slabega vremena (le kako je lahko lepega dne slabo vreme?) domov odpravi neskončno mnogo gostov. Včasih so v dvornih parkih vrtnarji skrbno prirezovali labirinte iz žive meje (ponekod to počno še danes). Bi se znali iz takšnega labirinta rešiti? Tudi če vas v njegovo sredino spustijo z žerjavom? Pri Diskretnih strukturah se naučimo, kako iz takšnega labirinta pobegnemo. Pa četudi je trda tema. Je Rubikovo kocko težko pravilno sestaviti? Z nekaj vaje se lahko tega naučimo in jo z vrtenjem raznobarvnih kvadratkov vseeno spravimo v red. Kaj pa, če odlepimo dve raznobarvni nalepki na takšni kocki in ju prestavimo? Bi verjeli, da tako "popravljene" kocke nikakor ne morete znova pravilno sestaviti, pa če jo še tako besno vrtite? Pri Diskretnih strukturah bomo pokazali, zakaj je to res tako. Marsikdo med nami ima z matematiko težave, tudi računalniki. Če računski stroj dovolj dolgo sešteva enice, se bo slej ko prej začel motiti. Diskretne strukture predstavljajo tisti del matematike, ki se zelo dobro razume z računalniki. Ponudile mu bodo različne načine računanja, pri katerih se ne bo nikoli zmotil, kljub vsemu pa bo znal kaj uporabnega izračunati.

Pa še zares.

  • Izjavni račun: sklepanje v izjavnem računu.
  • Predikatni račun: osnove.
  • Množice: osnove kombinatoričnega preštevanja.
  • Funkcije: komponiranje funkcij.
  • Relacije: delna in linearna urejenost, ekvivalenčne relacije.
  • Osnove teorije števil: razširjeni Evklidov algoritem, diofantske enačbe, Eulerjeva funkcija, kongruence in modularna aritmetika.
  • Permutacije: osnovni zgled algebrske strukture.
  • Teorija grafov: osnovne definicije, sprehodi, poti in povezanost, dvodelni grafi, drevesa, Eulerjevi grafi, Hamiltonovi grafi in barvanja.

Študenti opravljajo domače naloge v tedenskem ritmu, kolokvije iz praktičnih nalog in končni izpit iz teorije.

Študenti v okviru tega predmeta pridobijo osnovna znanja s področja digitalne logike. Spoznajo se z osnovnimi gradniki v računalništvu ter ustrezno logično obravnavo le-teh. Seznanijo se s časom v preklopnih strukturah in sistemih, pomnilnimi celicami in osnovami avtomatov.

Nosilec:
prof. dr. Nikolaj Zimic

Asistenti:
Miha Moškon
Primož Pečar
Iztok Lebar Bajec

Laborant:
Miran Koprivec

Cilj predmeta je študentom računalništva in informatike predstaviti osnovne fizikalne zakone, kvantitativno obravnavo nekaterih relevantnih primerov uporabe fizikalnih zakonitosti na praktičnih primerih in predstavitev »fizikalne metode« - to je izgradnje analitičnih modelov fizikalnih pojavov na osnovi merskih podatkov - kot univerzalne metode pri reševanju sodobnih tehniških problemov.

Računalniki so razmeroma butasti stroji, ki zmorejo pričarati osupljive rezultate, programerji pa so brihtneži, ki so sposobni neskončnih traparij. Torej so oboji lepo ustvarjeni eden za drugega...
A da bi tak stroj lahko pričaral osupljive rezultate, mora programer vedeti, kako naj računalnik nekaj naredi in kako naj računalniku to dopove. Ta predmet ponuja odgovora na ti dve vprašanji za enostavnejše probleme, hkrati pa predstavlja obvezen temelj za vse ostale predmete v naslednjih letnikih, ki prinesejo odgovore na ti dve vprašanji še za zahtevnejše probleme. V ta namen predstavimo predstavimo programski jezik C. Pri tem je poudarek predvsem na reševanju problemov in razvijanju razmišljanja, ki je potrebno pri programiranju.
Cilj predmeta je recimo prepričati študente, naj namesto reševanja Sudokuja na roko raje napišejo programček za reševanje Sudokuja... in ob preprostosti rešitve izgubijo navdušenje nad izgubljanjem časa z ročnim reševanjem Sudokuja.

P.S. Programiranje je temelj, ki stoji na skali, na kateri piše μαθηματικά.

Cilj predmeta je študenta seznaniti z metodami linearne algebre in ga usposobiti, da bo lahko te
metode uporabljal pri reševanju problemov z različnih področij računalništva,Osnovne operacije z
vektorji, sistemi linearnih enačb, determinante, vektorski prostori, linearne preslikave, operacije z
matrikami, simetrične in ortogonalne matrike, lastni vektorji in lastne vrednosti.

Kako deluje računalnik? To je osnovno vprašanje, na katerega skušamo odgovoriti pri tem predmetu. Za študenta, ki bo postal inženir računalništva, računalnik ne sme biti "črna škatla" (pa tudi, če je zares črne barve).

Najprej se bomo vprašali, kakšen naj bo stroj, ki zna "računati" (pa tudi, kaj to sploh pomeni). Videli bomo, da je lahko tudi izredno preprost (če nas hitrost ne zanima ali pa nam gre zgolj za princip). Kako so se v preteklosti lotili gradnje takih strojev?

Spoznali bomo delovanje procesorja, ki je najpomembnejši del računalnika. Kako procesor dobi ukaze, kako jih tolmači, kako jih izvede? Spoznali bomo, kako arhitektura računalnika vpliva na njegove zmogljivosti, s kakšnimi prijemi proizvajalci pohitrijo procesorje in kako zmogljivost sploh merimo.

Spoznali bomo tudi zbirni jezik, ki je najbližje strojnim ukazom računalnika. Njegovo razumevanje je pomembno tudi za uspešno programiranje v višjih programskih jezikih. 

Cilj predmeta je predstaviti osnove delovanja računalniških omrežij in pomembnejših komunikacijskih protokolov. Pri predmetu se posvetimo razgradnji komunikacijskih sistemom glede na modela ISO/OSI in TCP/IP ter pregledamo principe delovanja in storitev na različnih plasteh teh dveh modelov.

Največ časa posvetimo omrežni (protokol IP), transportni (protokola TCP in UDP) in aplikacijski plasti (protokoli HTTP, POP, SMTP, DNS), ki so pomembni gradniki današnjega Interneta. Poglavja o delovanju omrežij zaokrožimo tudi s poglavji o kriptografiji (preprosti algoritmi, DES, RSA) in omrežni varnosti (protokol SSL, požarni zidovi, sistemi za preprečevanje vdorov).

Pri teoretičnem in praktičnem delu predmeta se študent nauči razumeti delovanje informacijsko-komunikacijske tehnologije, uporabljati in načrtovati omrežne storitve, usposobljenost namestiti in administrirati preprosta lokalna ožičena in brezžična omrežja.

Predmet je sestavljen iz predavanj, laboratorijskih vaj in domačih nalog (spletnih kvizov).

Cilj predmeta je študentom računalništva in informatike predstaviti ključne koncepte

Dobro načrtovane
podatkovne strukture in učinkoviti algoritmi za njihovo obdelavo so temelj
računalništva. Cilj predmeta je spoznavanje osnovnih principov
načrtovanja  in analize algoritmov na osnovnih in dinamičnih podatkovnih
strukturah za reševanje problemov. Spoznali bomo osnovne principe reševanja
problemov, relacijo med i

Student's obligations:  on time finished and
positively graded homeworks (web quizes and other reports),  on time finished and positively graded two
seminar works, written exam. The exercises grade is
a joint grade for two seminar works. Each seminar work has to be finished on
time and graded positively. The precondition for positive exercises grade is
also that you achieve at least half of the points from homeworks (web quizes and
other reports). Exam is written (and optionally the oral part). The
precondition for the written exam is the positive grade from exercises. At the
written part of the exam, from the literature it is allowed to use an A4 sheet
of paper, hand written with an ordinary pencil (that can be rub out) and signed
with a ball-point pen (name, surname and the inscription student number)
(photocopies and prints are not allowed). At the end of the exam, this sheet of
paper has to be given to assistant together with the written exam. The
precondition for the (optional) oral exam is positive grade from written exam. Final
grade is combined from the exercise grade (50%) and the exam grade (50%). Both
parts need to be positive.

Recommended literature for foreign
students: Cormen et al: Introduction to Algorithms, MIT press.





Cilj predmeta je študentom računalništva in informatike predstaviti osnove o podatkovnih bazah, to je, kaj so prednosti uporabe podatkovnih baz v primerjavi z drugimi načini shranjevanja podatkov; kako podatkovne baze delujejo in kako upravljamo z njimi; kaj so sistemi za upravljanje s podatkovnimi bazami? Kaj zmorejo; kako načrtujemo podatkovne baze? ipd.

Cilj predmeta je študentom računalništva in informatike predstaviti osnovne verjetnosti in statistike. Definicija verjetnosti, računanje z dogodki, pogojna verjetnost, obrazec razbitja in Bayesov obrazec, Bernullijevo zaporedje neodvisnih poskusov, Laplaceov intervalski obrazec, funkcija napake, Bernullijev zakon velikih števil; Slučajne spremenljivke in vektorji, diskretne in zvezne porazdelitve, neodvisnost slučajnih spremenljivk, funkcije slučajnih spremenljivk, funkcije slučajnih vektorjev, pogojne porazdelitve, gostota zvezne pogojne porazdelitve;Matematično upanje, disperzija in višji momenti, karakteristične funkcije, zaporedja slučajnih spremenljivk in slučajni procesi, limitni izreki, šibki in krepki zakon velikih števil, neenakost Čebiševa, Centralni limitni izrek; Osnovna naloga statistike, porazdelitve vzorčnih statistik, vzorčno povprečje, reprodukcijska lastnost normalne porazdelitve, hi-kvadrat porazdelitev, Studentova porazdelitev, (intervalsko) ocenjevanje parametrov, intervali zaupanja, testranje statističnih hipotez, analiza variance, kovariance in linearne regresije.

Predavanja:

  1. Intro: about methods of algorithm design, analysis of algorithms,
    and  computational complexity of
    algorithms and problems
  2. Divide-and-Conquer: description of 
    the method, examples of problems and algorithms (see examples 12
    below)
  3. Greedy  method: description,
    examples
  4. Iterative improvement: descr., examples
  5. Dynamic programming: descr., examples  
  6. Backtracking: description, examples
  7. Branch&Bound: description, examples
  8. Linear programming: descr., Simplex algorithm, examples
  9. Selected advanced data structures
  10. NP-hard computational problems: lower bounds on time complexity, informally
    about P, NP and NP-hard problems;
  11. Methods of solving NP-hard problems:   heuristic algorithms,  approximation algorithms, randomized algorithms,
     parameterized algorithms, exact
    exponential algorithms, examples
  12. Example  problems and algorithms: advanced sorting & Heapsort, Quicksort;     selection problem & linear algorithms;        matrix multiplication & Strassen
    alg.; Discrete Fourier Transformation & FFT alg; string matching
    &  Knuth-Morris-Pratt;
     elementary and other graph problems and
    algorithms (searching a graph; topological sort; maximum
    flow & Ford-Fulkerson alg.; shortest paths &  algorithms of  Bellman-Ford,  and 
    Floyd-Warshall)
    ; selected problems from computational geometry.

Tutorial:  Students will  use
the topics given during the lectures to independently solve practical problems
(with the assistance of the
TAs if needed)
.  They will implement several
smaller programs (home works) as well as larger programs (seminars), and
present them at the tutorial.
 


Živimo v informacijski dobi. Informacijska tehnologija
preoblikuje civilizacijo temeljiteje in hitreje kot katerakoli tehnologija v
preteklosti. Pomen informacije je zelo širok - sem sodijo tehnologija
interneta, možnosti enostavnega dostopanja do najrazličnejših podatkov,
enostavnost komuniciranja, zabava, učenje, posel.

Vse to je zgrajeno na osnovnih idejah informacijske teorije,
ki jih bomo spoznali pri tem predmetu. Ogledali si bomo kako informacijo
meriti, pridobiti, jo učinkovito shranjevati in prenašati, kako prenos
zavarovati pred napakami v mediju in kako vsiljivcem preprečiti dostop do nje.
Spoznali bomo tudi kako teoretična spoznanja informacijske teorije učinkovito
izrabljajo moderne aplikacije.

Vaje pri predmetu so obvezne in se ocenjujejo. V okviru vaj
je potrebno programsko rešiti pet problemov, ki se navezujejo na predavano
snov. Ta del predstavlja do 1/3 končne ocene. Med semestrom sta razpisana dva
kolokvija, ki prineseta do 1/6 h končni oceni. Zadnjo 1/2 ocene predstavljata
pisni in ustni izpit. V primeru dobrih ocen na kolokvijih, vam le-ti lahko
nadomestijo pisni in ustni izpit.

All this is
built on the basic ideas of the information theory, which we will learn during
this course. We will explain how to measureinformation, how to efficiently
store and share it, how to protect it against errors in the media, and how to
prevent intruders to get use of it. We will also see how modern applications
incorporate the foundations of information theory.

Practical
classes are mandatory and are being assessed. During the practical courses it
is necessary to solve five problems that are related to ideas treated in
theoretical classes. The practical part makes up to 1/3 of the final grade.
During the semester two mid-term exams are organized which bring you up to 1/6 of
the final grade. The last 1/2 of the final grade is obtained from written and
oral exam. In the case of good results from the mid-term exams, the final
written and oral exam are optional.


Cilj predmeta je podati kakovostno znanje s področja sodobnih operacijskih sistemov: obrazložiti vlogo OS v različnih vrstah računalniških sistemov (napram strojni in programski opremi ter uporabniku); pojasniti naloge, zgradbo, delovanje, implementacijo in sodelovanje sestavnih delov OS; in seznaniti poslušalca s trendi in razvojnimi alternativami OS.

Cilj predmeta je poznavanje zgradbe in delovanja mikroprocesorjev, mikrokrmilnikov, različnih tipov prepomnilnikov, glavnega pomnilnika in navideznega pomnilnika, spoznamo se pa tudi z vhodno/izhodnimi napravami oziroma celotnimi vhodno/izhodnimi sistemi.

Cilj predmeta je nadgraditi osnovno poznavanje in razumevanje pojmov matematične analize in linearne algebre z zahtevnejšimi pojmi, prikazati njihovo uporabo pri matematičnem modeliranju pojavov v računalništvu in drugih znanostih in osnovne metode za računanje dobljenih modelov.

Cilj predmeta Računalniške tehnologije je študentom računalništva in informatike predstaviti fizikalne in tehnološke temelje delovanja in izdelave računalnikov, kvantitativno obravnavo nekaterih relevantnih  primerov s področja fizike trdne snovi in predstavitev uporabe fizikalnih zakonitosti v tehniki izdelave mikroelektronskih, monolitnih vezij, temeljnih gradnikov računalnikov. Eden od ciljev predmeta je tudi predstavitev osnov kvantne mehanike, ki že sama po sebi postaja v računalništvu vse pomembnejša fizikalne teorija.

Izvedba predmeta: predavanja in dodatno branje doma, dva kolokvija (ali pisni izpit) in seminarska naloga, ustni izpit. Na voljo je skripta, zbirka vaj in zbirka izpitni vprašanj.

Potrebna predznanja: osnove klasične fizike, osnove linearne algebre in infinitezimalnega računa.


Course practicalities: Lectures and individual reading. Two colloquia (or a written exam), seminar work, oral exam. Lecture notes, exercise book and a list of examination questions are available.

Prerequisites: elementary classical physics, basic linear algebra and calculus.


Navajeni smo, da ko programiramo, opisujemo algoritme. Toda, ali je nujno, da je program vedno opis algoritma?

Pri tem predmetu bomo spoznali , da lahko programiramo tudi na druge načine, ne samo algoritmično. Na primer tako, da računalniku opišemo le, kaj je problem. Računalnik pa sam poišče postopek, ki privede do rešitve. To omogočajo deklarativni programski jeziki, ki temeljijo na uporabi logike ali omejitev. Programirati je možno celo kar s primeri. Računalniku na primer pokažemo nekaj primerov sortiranih seznamov, računalnik pa sam sestavi program za sortiranje. Obstajajo še druge paradigme programiranja, ki vodijo do korenito drugačnih načinov razmišljanja o programih, kot smo vajeni.

Spoznali bomo tudi, kako definiramo sintakso in semantiko, to je pomen programskega jezika. Pokazali bomo, kako lahko z DCG gramatiko napišemo prevajalnik za enostaven programski jezik v manj kot 50 vrsticah. Pa tudi, kako matematično dokažemo pravilnost programa.

     In this course we learn that programming
can be done in other ways -- other than algorithmically. For example, we may
just describe what the problem is. The computer then on its own automatically finds
a procedure that leads to a solution. This style of programming is done
with declarative programming languages based on logic or constraints. It is
even possible to program just by examples. For instance, we give the computer
examples of sorted lists, and the computer automatically puts together a
general program for sorting lists. There are yet other programming paradigms
that lead to radically different thinking about programs than we are used to.

     In this course we also learn how the
syntax and semantics, that is the meaning, of a programming language can be
defined. We show how an interpreter or a compiler for a simple programming language can be written with DCG grammars in less than 50 lines. And further, how we can mathematically prove the correctness of a
program.

 

Seznaniti slušatelje z osnovnimi koncepti, idejami, metodami in tehnikami umetne inteligence. Sposobnost reševanja problemov z metodami umetne inteligence, zmožnost razumevanja literatura s področja umetne inteligence, prispevati k razumevanju relevantnosti tehničnih dosežkov umetne inteligence glede na njihove implikacije v filozofiji in psihologiji.

Temeljni namen predmeta je seznanitev študenta s področjem ekonomske znanosti na ravni združb (podjetij, zavodov itn.), zato da bo usposobljen dojemati vsebino tistih strokovnih pogovorov, ki vsebujejo ekonomske pojme, ter dejavno sodelovati v njih. Iz tega namena izvedeni cilji so zagotoviti tako poznavanje temeljnih ekonomskih pojmov in njihove medsebojne odvisnosti kot tudi sposobnost vključevanja teh pojmov v razmere praktičnega dela, zlasti v zvezi z ustanavljanjem in delovanjem podjetij v lasti gospodarskih družb, ko se bo kot diplomant soočil s potrebo ovrednotenja določenih stanj, procesov in izidov.

Predavanja:

Instruction on the purpose and process of preparing a diploma thesis. Ethics and plagiarism.

Homework 1: every student must select a menthor and a topic of his diploma thesis!

Lectures:

How to start with searching and studying the relevant literature for the selected topic. Visual and logical text editing. Writing of technical texts (types, structure, citing, preparation, language, reviewing). Perceptual and communicative capabilities of humans (sight, hearing, touch, speaking, writing, non-verbal communication).

Tutorial: Google Scholar, Microsoft Academic Research, Web of Knowledge, Cobiss and SICRIS, ePrints.FRI, LaTeX and BibTeX.

Homework 2: every student writes an overview article on the topic of his diploma thesis.

Lectures:

Managing of personal productivity, project based approach to reaching goals (traditional, adaptive and extreme projects), visualization methods for creative processes (mind maps etc.). Oral presentations (planning, projection materials, presentation).

Tutorial: outline of clearly defined goals of the diploma thesis and definition of steps in reaching these goals. Methods for personal productivity (Getting Things Done, Pomodoro), tools for visualization of mind maps, tools for preparation of projection materials (MS PowerPoint, Impress, Prezi).

Homework 3: preparation of oral presentation on the diploma thesis (overview, problem, solution).

Before the oral presentation in the framework of the tutorial every student must get an approaval of the contents of the presentation from his diploma menthor! Discussion after each presentation is encouraged!

Lectures:

Scientific publication (conferences, journals, books, e-publications, open access, reviews), resources on the Internet (communication, tools for cooperation, data bases, scientific social networks), protection of intellectual property (patents, licences, author rights), creativity and career planning.

Tutorial: individual consultation with assistants about the diploma thesis – tutor approach.

Homework 4: every student prepares the outline of his/hers diploma thesis in the final format with the help of the necessary LaTeX template by giving the chapter structure. The overview article and literature must be already integrated in the thesis outline. For the unfinished chapters, clear steps must be outlined what needs to be done in order to finish the diploma thesis.

Completion and defense of the diploma thesis:

in addition to the lectures, the course includes individual work on the diploma thesis under the supervision on the thesis advisor.

Predmet vsebuje teme s področja programiranja specifičnih platform, ki so priporočene v ACMjevem kurikulu za računalništvo. Konkretna vsebina se bo letno prilagajala trendom, zato kurikulum ni omejen na konkretne platforme.

1.      overview of platforms (web, mobile, game, industrial, embedded, robotic, paralel/scalable,…),

2.      supported/domain-specific programming languages

3.      programming via platform-specific APIs

4.      programming under platform constraints,

5.      mobile platform languages,

6.      performance/power tradeoffs and profiling,

7.      mobile platform constraints and challenges with wireless communication, location-aware applications and emerging technologies (virtual and augmented reality,…)

8.      programming languages and approaches for time-critical interactive platforms,

9.      platform constraints for time-critical interactive applications,

10.  selected topics from industrial/robotic/embedded platforms programming,

11.  selected topics from game platforms programming.

Practical part of the course consists of seminar work and consultations (tutorial). Students build the project using sprints as specified by Scrum software engineering methodology. 

Bi želeli v poslovne namene izdelati elektronski plačilni sistem kot je PayPal? Vas zanima, kako se spreminjajo podatki na internetu in
postajajo primerni za neposredno strojno obdelavo v poslovne namene s pomočjo semantičnega spleta? Bi želeli razviti poslovno mobilno
aplikacijo vse do njene ponudbe na Google market? Ali pa želite vedeti, kaki so upravljavski trendi podjetij zaradi informacijske
tehnologije in kako na tem področju postaviti inovativno podjetje? Potem ste dobrodošli pri predmetu Elektronsko poslovanje.

S prodorom sodobnih e-medijev, to je interneta in storitev vseprisotnega računalništva, v vse pore našega življenja (najprej poslovne,
danes pa tudi zasebne) so se pojavili novi načini poslovanja. Poslovanje je tako postalo v znatni meri določeno s tehnologijo. Čeprav
je tehnologija za mnoge nove načine poslovanja ključna, sama zase za uspešno e-poslovanje ne zadošča. Tako bomo pri predmetu izhajali iz temeljnih definicij in kratkega zgodovinskega pregleda razvoja tega področja. Sledil bo sistemski ogled na e-poslovanje (analiza ter simulacije generičnih struktur kot so zunanje in notranje logistične verige ter vpliv odločanja na jihovo obnašanje). Temu bo sledila obravnava ključnih tehnologij s poudarkom na integraciji, najprej podatkov in dokumentov (RIP, ehnologije XML, semantični splet z jezikoma RDF ter OWL), nato pa integraciji na nivoju procesov (od spletnih storitev na osnovi SOAP UDDI / WSDL do standardov za njihovo povezovanje, BPEL in BPMN). Podana bo še obravnava komplementarnih tehnoloških rešitev, kot so igitalna plačilna sredstva. Zatem se bomo osredotočili na organizacijske vidike (evolucijo poslovnih funkcij in procesov, evolucijo nformacijskih sistemov, nove poslovne modele in revizijske postopke po standardih kot so COBIT in ISO 27000). Sledila bo pomembnejša akonodaja na tem področju (Zakon o e-poslovanju in e-podpisu, Uredba o pogojih za elektronsko poslovanje in elektronsko podpisovanje, akon o avtorskih in sorodnih pravicah, Zakon o industrijski lastnini, Zakon o elektronskih komunikacijah, itd.). V zaključku bomo bravnavali še specifične vidike načrtovanja in vpeljave sistemov e-poslovanja (spremembe pri strateškem načrtovanju IS, uporaba formalnih metod, skladnost s standardi kot je Common Criteria) in podali smeri nadaljnjega razvoja na tem področju.

Na vajah pa bodo študentje samostojno povezovali domeni tehnologije in poslovanja (možen primer je postavitve portala za podporo zbranega poslovnega modela, integracije s poslovno logiko preostalega IS, vključitvijo plačilnega sistema a'la eBay in podporo z obilnimi aplikacijami za Android). Prehajamo pa tudi na nov način izvajanja predavanj, tako da bo praktično delo prisotno tudi na redavanjih za pokrivanje ozko specializiranih segmentov kot so npr. izdelava ontologije, simulacije, tehnike za spodbujanje novativnosti.

Še to: Pričakovano je predznanje Osnov informacijskih sistemov, predmet pa se izvaja v slovenščini.


Predmet seznanja študente s ključnimi sodobnimi koncepti organizacije in managementa. Namenjen je predvsem temu, da študentje spoznajo delovanje sodobnih podjetij in javnih zavodov ter pridobijo osnovna managerska in organizacijska znanja za njihovo uspešno vodenje.

studentsthe most importantandnewestconceptsof organization and management.The main purpose of the course is to present to students how modernenterprises andpublic institutions should be managed and organized. The goal of the course is to teach the students thebasic skills neededfor successful management of enterprises and public institutions.

Izbor najprimernejšega življenjskega sopotnika, sodelavca, poslovnega partnerja. Nakup avtomobila,stanovanja, hiše, delnice, podjetja. Komu odobriti izbrani tip kredita, poslati promocijsko obvestilo? Katero politično stranko voliti? Kako začrtati marketinško kampanijo? Koga povabiti na otvoritev mojega novega start-up podjetja? Katere izdelke za danega obiskovalca postaviti na prvo stran spletne prodajalne? Sta najstniki in upokojenci res tipični uporabniški skupini mojega telekomunikacijskega podjetja? Kdo vse uporablja Facebook? Kakšno glasbo poslušajo tisti, ki imajo radi Beyoncé?

Na videz popolnoma različne probleme ljudje rešujemo na podobni način: pridobimo prave podatke o problemu, uredimo naše sedanje znanje o njem in se na podlagi vsega zbranega skušamo kar najbolje odločiti. Podatkov in dostopnih znanj je na vseh področjih preveč, de bi se lahko odločali sami, brez pomoči računalnika. Take odločitve bi pogosto spregledale pomembne dejavnike in variante, bile pogosto napačne, nesistematične, subjektivne. Pri analizi podatkov, zbranih v podjetjih, na internetnih portalih, ali pa kar tako, nam danes nujno pomaga računalnik. Pri tem uporablja postopke vizualizacije, strojnega učenja in odkrivanja znanj iz podatkov (angl. data mining). Pri predmetu si bomo ogledali osnovne metode in pristope podatkovne analitike, spoznali ustrezna programska orodja (knjižnice v Pythonu) ter ta uporabili pri reševanju izbranih praktičnih problemov iz odkrivanja skupin, napovedovanja (regresija, klasifikacija), priporočilnih sistemov in analize nakupovalnih košaric.

Predmet se na drugi stopnji nadaljuje s predmetom Odkrivanje znanj iz podatkov. Uspešno opravljen predmet Uvod v odkrivanje znanj iz podatkov (do 2016/17 poimenovan Poslovna inteligenca) je pogoj za vpis na drugostopenjski predmet Odkrivanje znanj iz podatkov.

Pri predmetu Tehnologija upravljanja podatkov bomo obdelali nekatere napredne teme s področja podatkovnih baz, ki se tičejo upravljanja s podatki (angl. data management) in s tem zagotavljajo kvalitetnejši dostop do informacij, ki se v podatkih skrivajo. Spoznali se bomo s pristopi za organizacijo shranjevanja podatkov v transakcijske in analitične namene in seznanili z nekaterimi sodobnimi trendi na povezanih področjih, kot so npr. podatkovna skladišča, podatkovno rudarjenje, podatkovni tokovi in sodobne nerelacijske podatkovne baze. Predmet se tesno navezuje na dva predmeta nižjih letnikov, in sicer na Osnove podatkovnih baz (osnove, načrtovanje, normalizacija, SQL) in Programiranje 1 (uporaba orodij, Java/Python).

Cilj predmeta je študente naučiti sistematičnih in discipliniranih pristopov k razvoju informacijskih sistemov. V okviru predmeta bodo predstavljeni tako tradicionalni kot tudi modernejši pristopi k razvoju informacijskih sistemov. Splošno o razvoju IS opis življenjskih modelov razvoja IS, pristopi in metodologije razvoja IS,problem obvladovanja kakovosti razvoja IS;Strukturni razvoj, osnove strukturnega razvoja; predstavitev osnovnih aktivnosti strukturnega razvoja;Objektni razvoj,osnove objektnega razvoja;predstavitev osnovnih aktivnosti objektnega razvoja; primerjava objektni-strukturni razvoj; Sodobne lahke in agilne metodologije,predstavitev osnovnih konceptov; predstavitev dobrih praks; konkretni primeri lahkih in agilnih pristopov.

 

 

 

2016/17

Predmet je zanimiv predvsem za tiste, ki želite v svojih
karierah zasesti vodstvene položaje: vodja projektov informatike, vodja
informatike v podjetju, svetovalec za področje informatike v podjetju.

Spoznali bomo koncepte obvladovanja informatike v podjetjih,
saj informatika v podjetjih namreč ne funkcionira sama od sebe. Poleg spoznanja
konceptov obvladovanja informatike bomo spoznali tudi standarda COBIT in ITIL.

Pomemben sklop predmeta bo projektno vodenje. FRI si je
namreč privoščil avanturo s tem, ko je ukinil predmet za projektno vodenje,
zato bomo to vrzel zapolnili pri tem predmetu. Razumevanje konceptov vodenje
projektov in dela na projektih je v računalništvu in informatiki namreč izjemno
pomembno. Celo kariero boste namreč sodelovali na projektih. Spoznali bomo
standard PMBoK in nekatera izbrana poglavja področja vodenja projektov
informatike.

Strategija informatike je pomembno področje, katere koncepte
boste še kako morali razumeti v vaših karierah. Spoznali se bomo s koncepti
strateškega planiranja v splošnem in v okviru tega spoznali glavne funkcije
managementa v splošnem. Znanje strateškega planiranja v splošnem bomo nato
nadgradili z vsebinskim sklopom strateškega planiranja informatike.

Zanimiv vsebinski sklop predmeta bo Poslovna analiza.
Poslovna analiza je področje, ki postaja pomembno stično področje obvladovanja
informatike in poslovanja podjetij. Zato bomo v okviru predmeta obravnavali
tudi področje poslovne analize.

Spoznali se bomo tudi s področje Poslovno informacijske arhitekture.

Vsekakor pa bomo v okviru predmeta imeli tudi nekaj
vabljenih predavanj. Šlo bo bodisi za »čista predavanja«, bodisi bo gost
sodeloval v diskusiji z menoj in vami.

 

Veselim se skupnih tedenskih srečanj na
predavanjih tega predmeta.

 

Rok Rupnik

 

Cilj predmeta je pridobiti znanja o
postopkih razvoja programske opreme s posebnim poudarkom na razvoju zalednih
(server-side, datacenter, cloud) aplikacij, torej aplikacij, ki se uporabljajo
v velikih informacijskih sistemih podjetij ali velikih spletnih aplikacij (npr.
Facebook, LinkedIn, spletnih trgovin kot so Amazon, mimovrste, ebay in
podobnih). Te aplikacije, ki delujejo na velikih strežniških sistemih, morajo
biti sposobne servisirat množico sočasnih uporabnikov, hkrati pa delovati hitro
in zanesljivo. Pri predmetu se bomo v ta namen spoznali s tehnologijami Java
Enterprise Edition (Java EE oz. JEE), ki je de-facto standard za razvoj takih
aplikacij.

Ob tem bomo spoznali osnove mikrostoritev na eni strani in aplikacijske strežnike, kot so JBoss WildFly, IBM WebSphere, Oracle WebLogic, GlassFish in drugi.

Spoznali bomo tehnologije JAX-RS, CDI, JAX-P in JAX-B, JPA, JDBC, EJB, JMS, JAX-WS, JTS in napredne sporočilne sisteme AMQP, MQTT in druge. Prav tako se bomo spoznali z event streamingom in reaktivnimi koncepti.

Spoznali se bomo s spletnimi
storitvami REST in SOAP, JSON, OpenAPI, Swagger, WSDL, XSD, itd. Za razvoj odjemalnih spletnih
aplikacij se bomo spoznali s HTML5/JavaScript in Angular.
stores such as
Amazon, eBay and similar).
Those
applications that run on large server systems and must be capable of servicing
a multitude of concurrent users. They also need to work quickly and reliably.

We will learn the basics of microservices on one side and application servers, such as JBoss WildFly, IBM WebSphere, Oracle WebLogic, GlassFish, and others.

We will get to know JAX-RS, CDI, JAX-P and JAX-B, JPA, JDBC, EJB, JMS, JAX-WS, JTS and advanced AMQP, MQTT and other messaging systems. We will also get acquainted with event streaming and reactive concepts.

We will get to know JAX-RS, CDI, JAX-P and JAX-B, JPA, JDBC, EJB, JMS, JAX-WS, JTS and advanced AMQP, MQTT and other messaging systems. We will also get familiar with event streaming and reactive concepts.

We will also get familiar with web services
REST and SOAP, JSON, OpenAPI, Swagger, WSDL, XSD, etc. For the development of client web pages
applications will get familiar with HTML5 / JavaScript and Angular.

We will also
learn how to develop cloud-ready application using microservices, containers
and scalability. We will get familiar with Docker and Kubernetes.

Students will
also get familiar with Continuous Integration and Deployment, and learn how to
use code repositories (Git), build tools (Maven), build servers (Jenkins) and
artifact repository (Nexus).

The course is
practically oriented with exercises. Students develop an application using an
application server of their choice.
Students
will be prepared for challenging development projects and their management.
The
course will provide enough knowledge for students obtain certificates for Java EE
developers.

Pri predmetu Spletno programiranje se bomo posvetili pregledu nad tehnologijami, ki se uporabljajo pri delovanju spleta, spletnih strežnikov, brskalnikov in spletnih aplikacij.

Pregledali bomo osnove izdelave in oblikovanja spletnih strani (HTML5 in CSS3), jih nadgradili s pregledom tehnologij na strani odjemalca (JavaScript) in strežnika (Node.js) ter implementirali REST API dostop do podatkovne baze (MongoDB).

Cilj predmeta je študentu podati širino znanj, povezanih z delovanje raznovrstnih sodobnih spletnih tehnologij in razvojnih okolij in študenta usposobiti za samostojno učenje novih heterogenih tehnologij v razvoju ter ga predvsem seznaniti s celostnim razvojem spletnih aplikacij.

Predmet je sestavljen iz predavanj, laboratorijskih vaj in projekta (lastne spletne aplikacije), ki ga študenti po delih zagovarjajo skozi celoten semester.

Predstavljajte si razvijalca programske opreme, od katerega naročnik želi, da izdela rešitev, ki mu bo (seveda s pomočjo računalnika) olajšala delo na določenem področju. Razvijalec mora najprej ugotoviti, kakšne so zahteve uporabnikov, na podlagi tega izdelati načrt rešitve, napisati potrebne programe, jih stestirati in predati v uporabo ter nato vzdrževati do konca njihove življenjske dobe. Pri predmetu Tehnologija programske opreme se boste naučili, kako to narediti z uporabo najnovejših pristopov k razvoju programske opreme.

Ta predmet predstavlja neke vrste "piko na i" na koncu vašega študija, ko je pomembno, da znanje, ki ste ga dobili pri ostalih predmetih, preizkusite na (skoraj) resničnem projektu, ki temelji na realnih zahtevah nekega naročnika. Na ta način se v živo srečate z vso raznolikostjo vprašanj in problemov, s katerimi se ubada razvijalec programske opreme, ko razvija ustrezno rešitev. Predmet je zato zasnovan tako, da učenje sodobnih metod za razvoj programske opreme poteka v tesni povezavi s praktičnim delom, ki omogoča, da te metode neposredno preizkusite na realnem problemu ter ovrednotite njihove prednosti in slabosti. Tako lahko poleg tehničnih znanj, programerskih spretnosti in poznavanja sodobnih orodij pridobite tudi tista znanja in izkušnje, ki jih ni moč posredovati na klasičen način v obliki formalnih predavanj in reševanja poenostavljenih primerov, npr. sposobnost za skupinsko delo, komuniciranje z naročnikom, planiranje in vodenje projektov, pripravo predstavitev ipd. To pa so tista znanja, ki jih od današnjih diplomantov pričakuje softverska industrija.

Cilj predmeta je predstaviti temelje načrtovanja, analize in delovanja protokolov na splošno ter podrobno predstaviti nekatere standardne protokole. Kompetence, ki jih bodo študentje pridobili, so zlasti razumevanje delovanja protokolov in njihove medsebojne povezanosti, sposobnost načrtovanja, in analize lastnih protokolov in poznavanje pomembnejših standardnih protokolov različnih plasti. Spoznali bodo večpredstavne in avtentikacijske protokole, protokole za nadzor omrežij (SNMP),  mehanizme prehoda z IPv4 na IPv6, avtomobilske protokole in protokole v porazdeljenih sistemih (volitve, agreement,...). Nekatere protokole bodo na vajah preizkusili tudi praktično in jih združili v postavitev celotnega sistema, kot ga bi potrebovalo tipično manjše podjetje.

V zadnjih desetih letih so mobilne komunikacije, ki so v široki uporabi, dosegle zelo velik napredek in razširjenost. Brez mobilne telefonije si praktično ne znamo več predstavljati vsakdanjika. Prav tako so se brezžične komunikacije razširile na področje računalništva, kjer je velik poudarek na mobilnosti. Seveda ne gre zanemariti dejstva, da prihaja do združevanja govornih in podatkovnih komunikacij. Predmet bo obravnaval značilnosti, ki so specifične za brezžična omrežja, težave in tehnične rešitve le-teh. Poglavitni izzivi mobilnih omrežij so menjava baznih postaj, pri čemer je potrebno zagotoviti neprekinjen tok podatkov (slike, zvoka, ...). Težava je še toliko večja, kjer bazne postaje upravljajo različni ponudniki iz več držav in lahko prihaja celo do prehoda med tehnologijami (UMTS, GSM).Veliko je tudi izzivov v omrežjih, ki jih poznamo iz domačih okolij (IEEE 802.11b,g,n ali bolj poznano kot WiFi). Nemalokrat se pri postavitvi takšnega omrežja postavlja vprašanje, zakaj je tako »počasno«. Nakazujejo se tudi drugi zanimivi problemi, kot je sobivanje naprav in omrežij, varnost omrežij, »nevidnost naprav«. Poudariti je potrebno, da predmet obravnava računalniške protokole ter da se, kolikor je le mogoče, izogiba radijskega dela. V preteklosti je bila tehnologija tista, ki je pogojevala aplikacije. Danes pa smo v komunikacijah dosegli stopnjo razvoja, kjer aplikacije pogojujejo tehnologijo.

Cilj predmeta je študentom računalništva in informatike predstaviti osnovne metode izgradnje modelov in izvajanja simulacij z zornega kota računalniških omrežij. S teoreričnega vidika temelji predmet na splošni teoriji strežbe, ki študente seznanja s problematiko zahtev, strežnikov (resursov), čakalnih vrst, ozkih grl itd. S praktičnega vidika bo študentom predstavljen prenos teoretičnih znanj na reševanje praktičnih problemov, do katerih prihaja na področju računalniških omrežij.

Cilj predmeta je študentom računalništva in informatike predstaviti osnovne metode in pristope na področjih računalniške zanesljivosti in zmogljivosti. Obe sta ključni za uspešnost delovanja kakršnegakoli računalniškega sistema. Predmet naj bi študentom podal tako teoretične osnove in metode obeh področij, kot tudi skušal čimbolje predstaviti uporabo teoretičnih osnov in metod na konkretnih problemih načrtovanja in vzdževanja računalniških sistemov.

Študenta želimo naučiti za samostojno uporabo in načrtovanje digitalnih vezij z uporabo načrtovalskega orodja. Pri tem ga opozorimo na specifičnosti le-tega in naučimo upoštevati in izkoriščati le-te rešitve. Uvod v načrtovanje in testiranje digitalnih sistemov; Jeziki za opis strojne opreme (VHDL, Verilog, Abel, …);Tehnologija in pregled programabilnih vezij; Računalniška aritmetika in načrtovanje in sinteza odločitvenih vezij, modulske in dvonivojske realizacije;Načrtovanje sekvenčnih vezij: sinhrona in asinhrona vezja, pomnilne celice, register, registerski niz, števci, splošni končni avtomat, pomnilnik, …);Urin signal: sinteza, distribucija, »clock gating«;Načrtovanje (mikro)procesorja: podatkovne poti, kontrolna enota, vh/izh vmesniki; Modularna gradnja sistemov: sistem na čipu (SOC, System-on-Chip);

Tehnologija izdelovanja polprevodnikov je trčila ob
fizikalne omejitve, ki trenutno preprečujejo večjo miniaturizacijo čipov in z
njo izdelovanje varčnejših in hitrejših procesorjev. V zadnjem času nas zato
mediji dnevno zasipavajo z novicami o novih in novih napravah z večjedrnimi
procesorji ter splošno namenskimi grafičnimi procesnimi enotami na eni strani
in najrazličnejšimi računalniškimi gručami ter storitvami v oblaku na drugi
strani.

To take
full advantage of these devices, it is necessary to know the architecture of
these systems and appropriate software interfaces. During the semester we will
learn how to make multithreaded programs, Open MP programs for multicore
processors, how to exploit general purpose graphics processing units with Open
CL library, MPI library for working with clusters, grid systems and computing
clouds.

We will
learn about the traps of parallel and distributed systems, try to understand them
and find the ways to avoid them. At the end of the course you will be able to select
the most appropriate hardware platform and write an efficient parallel program
for a problem at hand.

Homework
assignments for the course are required and are being assessed. Every week students
get a short assignment, which is linked to the lectures. To get a positive grade
from the homework assignments you need to successfully complete at least 80% of
short assignments. Short assignments represent one-third of the final grade. Second-third
is obtained from parallelization of more comprehensive algorithm on two
different parallel platforms. The last third of the grade is obtained on the
oral exam.

Računalnikarji pišemo programe v programskih jezikih. Teh je na tisoče
in vsak od njih na svoj način nudi programerju čim lažji zapis programa.
Žal pa računalnik razume en sam jezik: strojni jezik procesorja, ki je
vgrajen v računalnik. Zato potrebujemo posebne programe, ki jim pravimo
prevajalniki in jih uporabljamo za prevajanje enega programskega jezika v
drugega, včasih pa si pomagamo še s programi, ki jim pravimo navidezni
stroji in omogočijo izvajanje programa v jeziku, ki ga sam procesor ne
razume. Prevajalnike in navidezne stroje si moramo računalnikarji
sestaviti sami. A četudi nam jih sestavijo drugi računalnikarji, moramo
zelo dobro razumeti, kako prevajalniki in navidezni stroji delujejo, kaj
zmorejo, česa ne zmorejo in česa sploh nikoli ne bodo zmogli. Le tako
jih namreč lahko pravilno uporabljamo in z njimi izdelamo učinkovite
programe. Prevajalnike najbolje spoznamo, če kakšnega sestavimo sami.
Pri izdelavi posameznega prevajalnika moramo znati z računalnikom
analizirati prevajani program, ki je napisan v enem programskem jeziku,
in nato sestaviti program, ki počne isto, a je napisan v nekem drugem
programskem jeziku. Pri sestavljanju prevoda s prevajalnikom najlažje
ugotovimo, kakšen program lahko učinkovito prevedemo, iz tega pa se
naučimo, kako pisati učinkovite programe. 
Programiranje vam spremeni pogled na svet - razumevanje prevajalnikov pa
vam spremeni pogled na programiranje... Zelo preprosto: predmet za
računalnikarje, ki uživajo v programiranju.

Ali bolj tehnično: Predstavitev zgradbe, delovanja in izdelave prevajalnika za prevajanje programskih jezikov v zbirnik; posamezna poglavja ustrezajo posameznim fazam prevajalnika:
leksikalna analiza, sintaksna analiza, abstraktna sintaksa, semantična
analiza, klicni zapisi, vmesna koda, osnovni bloki, izbira strojnih
ukazov, analiza aktivnosti spremenljivk, dodeljevanje registrov.

Najpogostejše orodje običajnega uporabnika sodobnih računalnikov je miška, saj z njo poganja programe. Dvo-klik na izbrano ikono in že se pred njim pojavi želeni program. Čudenje nad delujočimi funkcijami in razburjanje zaradi nedelujočih, to je njegov domet.

Malo izkušenejši uporabnik ve, da se za vsakim programom skriva programska koda: spremenljivke, funkcije, razredi, metode, klici, zanke, pogoji, ... Ve, da mora, preden omenjeni programski konstrukti "zaživijo", svojo vlogo opraviti prevajalnik oziroma, da se mora z njimi ukvarjati interpreter. Tudi to ve, da morata prevajalnik in interpreter programsko kodo, ki je danes običajno napisana v človeku razumljivih in dopadljivih oblikah, primerno obdelati, preden jo lahko procesor dejansko izvede. Tu pa se zgodba tudi za malo izkušenejšega uporabnika zaključi.

Le tisti najbolj zagnani računalničarji pa vejo, da se s programom od trenutka, ko je napisan, pa do trenutka, ko se dejansko začne izvajati, zgodi še marsikaj zanimivega. Svoje delo morajo med drugim opraviti zbirnik, povezovalnik in nalagalnik. Ali veste, kakšna je vloga zbirnika, katere naloge opravi in kako se posamezni zbirniki med seboj razlikujejo? Ali veste, zakaj program po zbiranju še ni pripravljen za izvajanje? Vas zanima, kaj vse se zgodi od miškinega klika do dejanskega zagona programa? Bi radi izvedeli, kakšne so razlike med "klasičnim" statičnim izvajanjem programov in izvajanjem v dinamičnem okolju (na primer z Javo)?

Če ste radovedne sorte in se boste pridružili predmetu Sistemska programska oprema, boste poleg odgovorov na zgornja vprašanja spoznali tudi nekatere druge sistemske programe, brskali po različnih formatih (binarnih in tekstovnih) sistemskih datotek in odkrivali globine delovanja sodobnih računalnikov.



Predmet SIstemska programska oprema pokriva naslednja področja:

  1. osnova zbirnih in strojnih jezikov;
  2. vsebina in organizacija  objektnih datotek;
  3. zbirnik, nalagalnik in povezovalnik;
  4. statično in dinamično povezovanje
  5. makro procesorji;
  6. sistemski klici in prekinitve;
  7. implementacija vhoda in izhoda ter orodja datotečnega sistema;
  8. upravljanje s pomnilnikom
  9. razhroščevalniki;
  10. jedro operacijskega sistema Linux;
  11. navidezni stroji.

Kaj računalniki sploh zmorejo? Kaj so zmožni sploh izračunati in česa ne? Kateri algoritmi so praktično uporabni? Ali naj za to, da bo naš program deloval sprejemljivo hitro, kupimo dvakrat (petkrat?) hitrejši računalnik ali pa bo potrebna drugačna zasnova programa?

Pri predmetu Analiza algoritmov in hevristično reševanje problemov se bomo na podlagi teoretičnih spoznanj o izračunljivosti in kompleksnosti algoritmov najprej naučili analizirati algoritme in odgovarjati na zgornja vprašanja.

Spoznali bomo, da so nekateri praktično zanimivi problemi v splošnem pretežki za vse današnje računalnike. Seveda jih želimo kljub temu reševati. Vsaj nekatere in vsaj približno. »Heureka (našel sem)!« je zavpil Arhimed, ko je med kopanjem v kadi odkril, da je dvig gladine vode enak prostornini v vodo potoplejnega telesa (in v navdušenju kar gol stekel na ulico). Hevristične metode (verjetno zato) imenujemo tiste pristope, ki nam, marsikdaj brez natančne teoretične podlage, omogočajo približne rešitve težkih problemov. Nekatere med temi, npr. aproksimacijski algoritmi nam jamčijo, kako dobre bodo rešitve, ki jih najdejo. Številne metode, npr. orodja operacijskih raziskav, lokalno in stohastično preiskovanje so se uveljavile kot standardni optimizacijski pristopi za številne probleme v znanosti, tehniki in poslovnem okolju. Namen predmeta je podati uporabno znanje o analizi algoritmov in spoznati uveljavljene hevristične metode do te mere, da se pri soočenju s težkim praktičnim problemom znate odločiti, katero od tehnik uporabiti, in se je lotiti s pomočjo knjižnjic optimizacijskih pristopov.

Vaje pri predmetu potekajo v obliki reševanja nekaterih nalog in posvetovanj z asistentom o seminarskem delu. Oceno vaj predstavlja skupna ocena seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk. Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico točk. Oceno je mogoče izboljšati z ustnim izpitom.

"Pozdravljena
Tina Maze. Mi lahko zaupaš kje skrivaš svoje smuči?". Aha, pod modrim
cilindrom. Tega pa sem že prej srečal, potem, ko sem Petru Prevcu dostavil
njegovo čelado. Najbolje, da se vrnem nazaj, poiskati moram pravo pot. Bolje
bo, da zavijem levo, ker bom prej na cilju, pa še dlje od ovir se bom peljal.
Še njej dostavim njen predmet, pa bom izpolnil mojo nalogo dostavljavca."

Razmišljanje, kot bi
ga ob reševanju kompleksne naloge lahko zapisal človek, je lahko prav podobno
sklepanju računalniškega programa. Seveda, inteligentnega. Inteligentne agente
sestavljajo moduli za umetno zaznavanje (uporaba senzorjev, obdelava signalov,
razpoznavanje predmetov, interpretacija slik, lokalizacija v prostoru), ter
moduli za vodenje, taktično ter strateško sklepanje in učenje. Tako kot ljudje
lahko inteligentni računalniški agenti med izvajanjem nalog zaznavajo okolico,
eksperimentirajo, se učijo in spoznanja uporabljajo pri reševanju prihodnjih
nalog. Pri predmetu Razvoj inteligentnih sistemov bomo spoznali, kako iz
programskih modulov za umetno zaznavanje in umetno inteligenco take agente
sestavimo in uporabljamo. Naučili se bomo, kako za dani problem izberemo prave
metode in kako te povežemo tako, da bodo agentovi podsistemi delovali
usklajeno.

Predmet bo izrazito
praktičen, rešitve bomo implementirali in jih integrirali na pravih robotskih
platformah v robotskem operacijskem sistemu ROS. Delali bomo z mobilnimi
roboti, ki smo jih sestavili iz avtonomnega sesalca iRobot Roomba, RGBD kamere
Kinect ter nekaj druge elektronike. Roboti bodo morali

Such type
of communication and reasoning is needed to solve complex tasks, such as the
one described above. We, humans, are very good in performing such types of
tasks, however intelligent robots are capable of such behavior as well. Such
intelligent agents consist of modules for machine perception (the use of
sensors, signal processing, object recognition, image interpretation, localization),
as well as modules for control, tactical and strategic reasoning and learning. Similarly
as humans, the intelligent robot systems can also perceive the environment,
experiment, learn, and apply the acquired knowledge for solving the tasks in
the future.

The course
is very practically oriented with the emphasis on the hands-on experience. The
solutions will be implemented and integrated on real robotic platforms using
the Robot Operating System, ROS. We will work with mobile robots, which we
built from the robot vacuum cleaner iRobot Roomba, the RGBD camera Kinect and other
electronic parts. The robots will have to autonomously solve complex tasks,
such as the delivery task described above. And of course, to make the development
of such robots even more interesting and challenging, the robots developed by the groups of
students will compete between themselves in a real robot competition. Let
the best robot win!

Ljudje se že od nekdaj navdušujemo nad idejo inteligentnih strojev. Kaj pa sploh je inteligenca? Ali je računalnik, ki premaga svetovnega prvaka v šahu, inteligenten? Ali pa robot, ki samostojno raziskuje površino Marsa? Kaj pa računalniški program, ki diagnosticira raka bolje od zdravnikov specialistov? Se nekateri liki v računalniških igrah obnašajo inteligentno?
Že od nastanka prvih računalnikov se vrstijo znanstvene in filozofske razprave o tem, in ali je možno ustvariti sistem, ki se bo obnašal inteligentno. Raziskave na področju umetne inteligence so poleg razjasnitve teh temeljnih vprašanj prinesle tudi celo vrsto orodij in pristopov za reševanje problemov, ki jih je težko ali nepraktično reševati z drugimi metodami. Pri predmetu Inteligentni sistemi bomo spoznali nekatere najbolj uporabne. Robot ali agent mora v neznanem okolju sklepati. Preiskati mora različne možnosti. Analizirati mora podatke, ki jih zbirajo različni senzorji. Na podlagi svojih uspešnih in neuspešnih dejanj se mora učiti.
Tehnike, ki omogočajo takšno inteligentno vedenje, marsikdaj temeljijo na idejah iz narave, npr. nevronske mreže in evolucijsko računanje, izkoriščajo pa tudi najnovejše dosežke iz statistike, modeliranja, teorije odločanja, procesiranja naravnega jezika in kognitivnega modeliranja. Naš cilj bo priprava na praktično rabo teoretičnih spoznanj in uveljavljenih tehnik na realnih problemih iz znanstvenega in poslovnega okolja.

Vaje pri predmetu potekajo v obliki reševanja nekaterih nalog in posvetovanj z asistentom o seminarskem delu. Oceno vaj predstavlja skupna ocena seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk. Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na spletnih kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico točk. Oceno je mogoče izboljšati z ustnim izpitom.


Umetno zaznavanje je hitro razvijajoče se področje, ki je zanimivo tako iz raziskovalnega vidika, kakor tudi aplikacij. V predmetu bomo obdelali osnovne matematične metode in tehnike rečunalniškega vida, ki so sestavni del številnih zanimivih aplikacij. Če ste se kdaj spraševali kakšne metode se uporabljajo v aplikacijah in napravah kot so Googlova očala, avtonomna vozila, izdelava panoramskih slik in avtomatsko editiranje fotografij, bo ta predmet več kot potešil vašo vedoželjnost. Predmet bo pokril naslednje teme: (i) Osnovno procesiranje slik, (ii) Odvodi slik in robovi, (iii) Prileganje modelov, (iv) Lokalni deskriptorji, (v) Stereo sistemi, (vi) Podprostorske metode za razpoznavanje slik, (vii) Detekcija objektov v slikah, (viii) Razpoznavanje objektov, (ix) Osnove izračuna gibanja v videu. Predmet je sestavljen iz predavanj, na katerih bomo pokrili bistveno teorijo in vaj na katerih bodo študentje to teorijo implementirali. Predmet se izvaja v angleškem jeziku.


Vizualni jezik je posebna plast sporazumevanja, ki informacije smiselno ureja, ustrezno podaja in dopolnjuje. Tudi digitalne podobe, ki jih srečujemo na zaslonskih napravah, komunicirajo z uporabnikom pretežno prek vizualnih vsebin: te vodijo pogled in usmerjajo interakcijo. Razrez slikovnega polja, barvni sestav, izbor črkovnih vrst, dinamične spremembe elementov itn. so sredstva, ki oblikujejo ljudem prijazne vmesnike.

Multimedijski sistemi so nepogrešljiv del sodobnih informacijskih tehnologij. Študenti bodo v okviru tega predmeta pridobili znanja in veščine potrebne za uporabo in razvoj multimedijskih sistemov. Posebno pozornost bomo namenili osnovam manipulacije, zapisa, razgradnje in poizvedovanja po večpredstavitvenih podatkovnih zbirkah s poudarkom na statičnih slikah, animacijah in videoposnetkih. Na primeru interaktivnega multimedijskega sistema bomo obravnavali osnovne tehnike in metodologijo, ki so potrebni za izdelavo sistema za obogateno resničnost.

Predmet študentu predstavi osnove računalniške grafike in tehnologije iger. Fokus je predvsem na 3D grafiki, ki je dandanes nepogrešljiv del ne le računalniških iger, temveč tudi filmske in TV produkcije, oblikovanja izdelkov, grafičnega oblikovanja, arhitekturnega načrtovanja in še bi lahko naštevali. Ustvarjanje in spreminjanje slik s pomočjo računalnikov, pa naj bo to avatar v WoW, človek na krovu Titanika ali izginotje rdečih oči na fotografiji so zanimivi problemi, s katerimi se ukvarja računalniška grafika.

Pri predmetu bomo raziskali kako naredimo in v računalniku predstavimo 3D predmete, kako jih premikamo, upodobimo in animiramo. Ogledali si bomo kako doseči čimvečji realizem pri upodabljanju in kako čimvečjo hitrost, ki je potrebna za interaktivno upodabljanje kot ga srečamo pri igrah. Preverili bomo kako deluje grafični cevovod in se spoznali z načrtovanjem iger.

Pri vajah se bomo spoznali s programiranjem iger in grafičnih aplikacij tako nizkonivojsko (OpenGL) kot visokonivojsko (Unity) in kot piko na i napisali svojo lastno igro.


Kreditne točke pri predmetu Računalništvo v praksi lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.


Functional programming for the web


The subject will be roughly divided into three parts

The first part is introductory. We get to know the basic syntactic constructs of the language, construction of HTML and SVG documents in Elm.

In the second part we will learn the functional programming , how to think about problems and solutions in this paradigm, which is often a new approach for students coming from procedural languages such as Java, C, etc.

The third part will introduce the Elm architecture, programming reactive applications and working with effects in a pure functional language.

Kreditne točke pri predmetu Računalništvo v praksi lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.


Izbrana poglavja iz računalništva in informatike: Analiza omrežij (ASI)

Svetovni splet, blogosfero, neposredno sporočanje in Facebook je vse moč opredeliti kot prepletanje med vsebino bogato z informacijami, milijoni posameznikov in organizacij, ki le-to uporabljajo in soustvarjajo, ter tehnologijo, ki vse to podpira. Vsebina predmeta bo zajemala rezultate zadnjih raziskav na področju zgradbe in analize takih velikih družbenih in informacijskih omrežij ter modelov in algoritmov za abstrakcijo njihovih osnovnih lastnosti. Poseben poudarek bo na praktičnih pristopih za analizo zelo velikih omrežjih ter razumevanju omrežij na podlagi različnih modelov njihove zgradbe in razvoja. Med drugim bodo obravnavane metode analize povezav in odkrivanja skupnosti v omrežjih, širjenje informacij po svetovnem spletu, odkrivanje virusnih izbruhov v omrežjih ter povezave z raziskavami v družboslovju in ekonomiji.

Predmet temelji na predmetu CS224W, ki ga ponuja Univerza Stanford, in služi kot nadaljevanje predmeta Aktualno raziskovalno področje I: Uvod v analizo omrežij (INA). Predmet bo natančno sledil urniku, gradivu, obveznostim, ocenjevanju ipd. predmeta CS224W. Predavanja bodo potekala v angleščini, dočim bodo vaje v angleščini ali slovenščini.

Predmet se izvaja v zimskem semestru z začetkom 24. septembra 2018 in traja deset tednov.

Za več glej eUčilnica.
Predmet Računalniški vid v praksi je primarno namenjen študentom, ki bi radi svoje teoretično znanje algoritmov računalniškega vida nadgradili s praktičnimi izkušnjami. Pri predmetu bodo bolje spoznali nekatere tehnične prijeme, ki teorijo pripeljejo do uporabne implementacije na različnih področjih. Glavna nit predmeta bo predstavitev izbranih algoritmov računalniškega vida, ki se nanašajo na dobro poznane aplikacije, kot so lepljenje panoramskih slik, brezdotična interakcija človeka z računalnikom, videonadzorni sistemi, obogatena resničnost, itd. V okviru predmeta bodo za osnovo uporabili najbolj poznano in uporabljano odprtokodno knjižnico OpenCV, ki vsebuje nabor najmodernejših algoritmov računalniškega vida. Študentje bodo tekom semestra delovanje več algoritmov preizkusili na preprostih primerih ter v okviru praktično zastavljene projektne naloge. Cilje projektne naloge bodo zastavili skupaj z izvajalcem predmeta. Posredno bo velik del predmeta posvečen tudi učinkovitemu razvoju hitrih algoritmov, implementaciji v programskem jeziku C++, iskanju napak v kodi ter spoznavanju različnih platform, ki postajajo vedno bolj zanimive za računalniški vid (vgrajeni sistemi, mobilne naprave, nadzorne kamere). Študentje bodo tekom semestra razvili svoj prototip aplikacije, ki ga bodo na koncu semestra predstavili na skupni predstavitvi. Njihovo znanje in delo bo ocenjeno na podlagi predstavitve, zaključnega poročila ter kvalitete izvorne kode.

Ta predmet je namenjen obvestilom v zvezi s prvostopenjskim visokošolskim strokovnim študijem, razpravam študentov, študentskim vprašanjem... Članstvo v predmetu in naročnino na forume priporočamo vsem študentom, pa tudi vsem učiteljem in asistentom, ki poučujejo na tem študiju.

V nekem članku o virusih lahko preberemo debato o napadu virusov (črvov), ki so se razširili po internetu ter upočasnili brskalnike in e-pošto širom po svetu. Koliko računalnikov je bilo okuženih? Strokovnjaki, na katere so se sklicali v članku, pravijo, da jih je bilo 39.000, vplivali pa so na stotine tisočev drugih sistemov. Kako so lahko prišli to te številke? So preverili vsak računalnik na internetu, da bi preverili, če je okužen ali ne? Dejstvo, da je bil članek napisan v manj kot 24 urah od časa napada, sugerira, da je to število samo predpostavka. Vendar pa se lahko vprašamo, zakaj potem 39.000 in ne 40.000? Statistika je znanost zbiranja, organiziranja in interpretiranja numeričnih dejstev, ki jih imenujemo podatki. Vsakodnevno smo s podatki takorekoč bombardirani. Večina ljudi povezuje "statistiko" z biti podatkov, ki izhajajo v dnevnem časopisju, novicah, reportažah: povprečna temperatura na današnji dan, procenti pri košarkaških prostih metih, procent tujih vlaganj na našem trgu in anketa popularnosti predsednika in premierja. Reklame pogosto trdijo, da podatki kažejo na superiornost njihovega produkta. Vse strani v javnih debatah o ekonomiji, izobraževanju in socialni politiki izhajajo iz podatkov. Kljub temu pa uporabnost statistike presega te vsakodnevne primere. Podatki so pomembni pri delu mnogih, zato je izobraževanje na področju statistike izredno pomembno pri številnih poklicih. Ekonomisti, finančni svetovalci, vodstveni kader v politiki in gospodarstvu preučujejo najnovejše podatke o nezaposlenosti in inflaciji. Zdravniki morajo razumeti izvor in zanesljivost podatkov, ki so objavljeni v medicinskih revijah. Poslovne odločitve so običajno zasnovane na raziskavah tržišč, ki razkrijejo želje kupcev in njihovo obnašanje. Večina akademskih raziskav uporablja številke in tako hočeš nočeš izkorišča statistične metode. Nič lažje ni pobegniti podatkom kot izogniti se uporabi besed. Tako kot so besede na papirju brez pomena za nepismenega ali slabo izobraženega človeka, tako so lahko tudi podatki privlačni, zavajajoči ali enostavno nesmiselni. Statistična pismenost, torej sposobnost sledenja in razumevanja argumentov, ki izhajajo iz podatkov, je pomembna za sleherno osebo. Na statistiko in njene matematične temelje (verjetnost) lahko gledamo kot na učinkovito orodje, pa ne samo pri teoretičnem računalništvu (teoriji kompleksnosti, randomiziranih algoritmih, teoriji podatkovnih baz), pač pa tudi na praktičnih področjih. V vsakdanjem življenju ni pomembno da Vaš sistem obvlada čisto vse vhodne podatke, učinkovito pa naj opravi vsaj s tistimi, ki pokrijejo 99.99% primerov iz prakse.

Kaj imajo skupnega Windows, Linux, Unix, MacOS? Seveda, vsi so operacijski sistemi. In kaj je operacijski sistem? Je program, ki je vpet med strojno in uporabniško programsko opremo. Tako ga vsi ostali programi kot temelj potrebujejo za svoje delovanje. Pa bodimo še malenkost bolj natančni: operacijski sistem v osnovi zagotavlja uporabniški vmesnik, datotečno strukturo in komunikacijo z vhodno/izhodnimi napravami. Da lahko naši programi izrabljajo, kar ponuja operacijski sistem, moramo seveda poznati lastnosti operacijskega sistema in kako operacijski sistem uporablja strojno opremo. Tako se bomo sprehodili skozi kopico postopkov, ki nam bodo osvetlili delovanje operacijskega sistema. Kako se imenuje postopek, ki omogoča, da poganjamo sočasno deset aplikacij, vse pa kljub enemu procesorju dajejo občutek vzporednega delovanja? Bo to porazdeljevanje procesorskega časa, ki zagotavlja večopravilnost? Kako zagotovimo, da so najpomembnejši podatki za trenutno delo stalno v hitrem pomnilniku RAM? Kako se imenuje programska oprema, ki skrbi za pravilno komunikacijo z vhodno-izhodnimi napravami? So to gonilniki? To je le nekaj primerov vprašanj, na katere boš znal/a odgovoriti. A ne samo površinsko, tudi v globino, saj je razumevanje delovanja operacijskega sistema ključno za njegov razvoj, nadgradnjo, administracijo in izrabo njegovih lastnosti v naših aplikacijah. ... In potem bomo brez večjih težav znali spremeniti algoritem za porazdeljevanje procesorskega časa tako, da ga bomo sebi dodelili dvakrat več kot ostalim istočasno prijavljenim uporabnikom na računalniku. Dobri temelji so torej vredni zlata!

Danes računalniki komunicirajo med seboj tako vneto in tako pogosto, praktično kar naprej, da si sploh ne moremo več predstavljati, kaj bi počeli brez omrežij: dieta brez interneta, samo s papirnato pošto in klepetom izključno v živo? Pri RK bomo skušali osvetliti ozadje komunikacijskih storitev, ki jih danes brez težav uporabljajo tudi osnovnošolci in bolj napredne babice. Kaj vse se zgodi, ko v brskalnik napišemo www.google.com? Zbudi se cela vojska procesov, računalniki in druge omrežne naprave se začnejo mrzlično klicati med seboj in spraševati: Ali ti veš, kdo je Google, kakšna je njegova IP številka in kako se pride do njega? Ali pa vsaj, kdo bi to utegnil vedeti? No, ker googlamo vsakodnevno brez težav, se procesi očitno znajo zmeniti med seboj. Ravno tako, kot se znajo dogovoriti, kako kolegu na Novi Zelandiji dostaviti elektronsko pošto ali ga najti na Skypu, četudi je bil prejšnji teden še na Aljaski. Pri RK pa se ne bomo ustavili le pri storitvah. Ugotavljali bomo, zakaj se omrežja ne zamašijo, kaj so protokoli in protokolarne obveznosti njihovih veličanstev računalnikov, zakaj lahko komuniciramo tako po žicah kot tudi brez njih. Ne bomo pozabili na nevarnosti na informacijskih avtocestah: nekatere zloglasne napade bomo secirali prav v podrobnosti, pri čemer bomo opisali tudi računalniško različico varnostnega pasu in zračnih vreč, tako da bomo konec semestra vsi dočakali živi in zdravi, a bogatejši za kako zanimivo izkušnjo.computerscommunicate with each otherso intenesivelyand almostconstantly that wecannot evenimaginewhatwould we dowithoutnetworks:dietwithoutInternet - onlywith papermail andchatexclusivelyoff line?In Computer Communications will try toshed light on thebackgroundof communications services,which are todayused even by younger teens and modern granmas.Whathappens when youwriteinyour browser the address www.google.com? A whole army ofprocesses wakes up, computersand othernetwork devicesbegin to calleach other hastily andask:Doyou knowwho isGoogle,what is itsIPaddress andhow to get toit?Or, at least,who might know this?Well, since we manage to googledaily, the processesobviouslyknow the answers.Justasthey canagree on how toto deliver an e-mail to your colleaguein New Zealandorfind himonSkype,even thoughhe waslast weekin Alaska.In Computer Communications course, however,we will notonly talk about services.We will investigatewhy thenetworkdoes notbecome congested,what are theprotocolsand protocolobligationsof their majesties - computers,why they can communicateboth on wires or without them.We will not ignorethe dangersof theinformationhighways: a few notoriousattackswill be analyzed indetail, whilewe will also describeacomputerizedversionof seat belts andairbags,so that wealllive to seethe end ofthe semesteralive and well, but richerfor an interestingexperience.

Razlika med uporabnikom računalnika in programerjem je podobna razliki med potnikom na avtobusu in nekom, ki se vozi z dobrim motorjem.1 Prvi se pelje počasneje, ne more vstopiti, kjer hoče, zaviti, kamor hoče in njegov užitek v celotni izkušnji je vobče omejen. Drugi pelje hitreje in počne kar hoče, njegov užitek je sorazmeren tveganju, da se bo znašel v jarku in hkrati pogojen z dejstvom, da se to ne zgodi. Programiranje utegne biti najbolj zabavna reč na svetu. Kot programer se včasih počutiš kot čarovnik, ki z nekaj čarobnimi besedami naredi karkoli. Programer ima pod sabo stroj, ki na migljaj njegovega prsta stori, kar hoče. Programer ima oblast nad računalnikom - čeprav jo, prav tako kot motorist nad svojim vozilom, včasih tudi izgubi. Programiranje ni le veščina, je tudi način razmišljanja. Splošen način razmišljanja. Ko boste znali programirati, boste celo pot v mesto ali zlaganje posode v pomivalni stroj načrtovali drugače, bolj sistematično kot običajni smrtniki (ki pač zložijo posodo v pomivalni stroj in iz tega ne delajo posebne znanosti). Resno. Znanje programiranja vam bo spremenilo pogled na svet.

1 Pisec tega besedila se še nikoli v življenju ni vozil z motorjem, dobrim ali ne, kot nekdanji reden uporabnik ljubljanskega potniškega prometa, ki od selitve v novo stavo uporablja izključno kolo, pa ne dvomi v pravilnost svoje metafore.

Ste že kdaj po svoji sobi ure in ure iskali določen predmet, morda mobilni telefon s prazno baterijo, ali pa ključe? Predstavljajte si, kako bi izgledalo v banki, če bi za vsako strankino zahtevo morali brskati med neurejenimi bančnimi izpiski. Kaos! Ker se velika večina dogodkov v sodobnem poslovnem svetu (nakup v trgovini, rezervacija letalske karte, bančno nakazilo, strošek klica po mobilnem telefonu, ...) shranjuje v računalnikih, potrebujemo za obvladovanje tako pridobljenih ogromnih količin podatkov posebne tehnologije – tehnologije podatkovnih baz. Programskim produktom, ki skrbijo za delo s podatkovnimi bazami, pravimo sistemi za upravljanje s podatkovnimi bazami (SUPB). Njihova naloga je, da uporabnikom omogočajo hitro, učinkovito, enostavno in varno hranjenje in delo s podatki. Pri predmetu Podatkovne baze se bomo seznanili z osnovnimi načeli in principi, ki se uporabljajo v podatkovnih bazah, spoznali zgradbo podatkovnih baz in različne vloge posameznih uporabnikov, pregledali nekaj najpomembnejših plačljivih in zastonjskih SUPB ter se naučili podatkovne baze samostojno in učinkovito uporabljati v praksi.

Ko Programiranje 1 študenta uvede v čare programerskega razmišljanja, je čas za Programiranje 2, kjer mu razširimo in poglobimo perspektivo.  Spoznali bomo sodoben, splošno namenski, hiter, varen, robusten, predmetno usmerjen programski jezik Java.  Jezik je zelo priljubljen in razširjen in sodi v nujno splošno izobrazbo vsakega sodobnega računalnikarja. Poleg pojmov, ki se nanašajo na konkretne programske konstrukte (podatkovni tipi, spremenljivke, izrazi, operatorji, pomnilnik, ...), bodo študentje spoznali programerske pristope, ki se uporabljajo v praksi in načine reševanja problemov. Naučili se bodo delati z datotekami, izjemami in podatkovnimi zbirkami ter napisati javanski okenski program z vsemi elementi grafičnega uporabniškega vmesnika.

Predmet je zelo praktično naravnan. Za vsak predstavljen teoretični koncept ali programski konstrukt je na  predavanjih prikazana tudi njegova uporaba v konkretnih primerih. Preko nalog, ki jih študentje rešujejo na vajah in doma kot domače naloge, pa imajo priložnost, da pridobljeno znanje utrjujejo in poglabljajo.

Študent v okviru tega predmeta samostojno reši približno 25 različnih nalog, polovico od tega na vajah, drugo polovico pa doma.  S tem pridobi dovolj "kilometrine", da mu Java postane priročno in dobro poznano orodje za reševanje različnih problemov, na katere bo naletel v prihodnjih letih na fakulteti in kasneje na delovnem mestu.   

practically oriented. For each theoretical concept or programming construct that is presented during the semester, a practical usage is also given. Through tasks that students solve within this course, they have the opportunity to consolidate their knowledge and to go deeper into the subject.


Z matematiko je križ. Diskretne strukture so matematika. Zato so z Diskretnimi strukturami tudi same sitnosti.

Ah, šalo na stran. Predstavimo raje, kaj bi zamudili, če bi se Diskretnim strukturam izognili. Če vemo, da je 1+1=2 in 2+2=5, potem bi morali verjeti tudi, da je 3+3=7, mar ne? Sešteli bi lahko obe "enačbi", na primer. Toda v tem primeru moramo verjeti tudi, da so vse krave iste barve. Tega pa si najbrž ne bi mislili.

Je težko opravljati posel receptorja v neskončnem hotelu? Tudi če je poln in na obisk pridejo dodatni gosti, jih vedno lahko razporedimo po prostih sobah. Skrbimo lahko tudi, da je hotel polno zaseden, čeprav se lepega dne zaradi slabega vremena (le kako je lahko lepega dne slabo vreme?) domov odpravi neskončno mnogo gostov.

Včasih so v dvornih parkih vrtnarji skrbno prirezovali labirinte iz žive meje (ponekod to počno še danes). Bi se znali iz takšnega labirinta rešiti? Tudi če vas v njegovo sredino spustijo z žerjavom? Pri Diskretnih strukturah se naučimo, kako iz takšnega labirinta pobegnemo. Pa četudi je trda tema. Je Rubikovo kocko težko pravilno sestaviti? Z nekaj vaje se lahko tega naučimo in jo z vrtenjem raznobarvnih kvadratkov vseeno spravimo v red. Kaj pa, če odlepimo dve raznobarvni nalepki na takšni kocki in ju prestavimo? Bi verjeli, da tako "popravljene" kocke nikakor ne morete znova pravilno sestaviti, pa če jo še tako besno vrtite? Pri Diskretnih strukturah bi znali to pokazati, če bi imeli na voljo še kakšno dodatno uro.

Marsikdo med nami ima z matematiko težave, tudi računalniki. Če računski stroj dovolj dolgo sešteva enice, se bo slej ko prej začel motiti. Diskretne strukture predstavljajo tisti del matematike, ki se zelo dobro razume z računalniki. Ponudile mu bodo različne načine računanja, pri katerih se ne bo nikoli zmotil, kljub vsemu pa bo znal kaj uporabnega izračunati.

Pa še bolj zares.

  • Matematična logika: sklepanje v izjavnem računu, osnove predikatnega računa.
  • Množice: osnove kombinatoričnega preštevanja
  • Relacije in funkcije: ekvivalenčne relacije, komponiranje funkcij.
  • Relacije: ozadje, ekvivalenčne relacije.
  • Teorija grafov: osnovne definicije, sprehodi, poti in povezanost, dvodelni grafi, drevesa, Eulerjevi grafi, barvanje grafov.
  • Osnove teorije števil: razširjeni Evklidov algoritem, diofantske enačbe.
  • Linearne rekurzivne enačbe: osnove

Študenti opravljajo domače naloge v tedenskem ritmu, kolokvije iz praktičnih nalog in končni izpit iz teorije.

Matematika v računalništvu je nekaj takega kot prestave na avtomobilu - tudi brez prestav, v prvi gre, ampak zelooo počasi, več ko je prestav, hitreje bo šlo in dlje bomo prišli.

Na primer, računalniki računajo, računa pa se s števili, ampak kaj pa so pravzaprav števila? Kako računalniku povemo, na primer, kaj je koren števila 2? Računalniki tudi rišejo, slike so sestavljene iz krivulj, ampak kaj pa so krivulje in kako iz njih naredimo animacijo ki je del v računalniške igre? Računalniki nam tudi pomagajo pregledovati cele gore podatkov. Kako predstaviti te podatke v obliki, ki bo razumljiva in pregledna? No, zato imamo celo vrsto matematičnih modelov in matematičnih trikov.

Nikakor ne obljubljamo, da boste odgovore na vsa ta vprašanja dobili pri Matematiki, vsekakor pa bomo skupaj naredili korak naprej. Predmet je razdeljen na 6 poglavij z naslovi: Zaporedja in vrste, Funkcije, Odvod in uporaba odvoda, Integral in uporaba integrala, Vektorji, Matrike.

Vas je že kdaj zamikalo, da bi si iz nič sestavili svoj računalnik? Bi radi vedeli, kaj se dogaja pod črnim plastičnim ohišjem z zvenečim imenom najnovejšega procesorja in kaj v procesorju počnejo tranzistorji in zakaj nam jih nikoli ni dovolj? Nekaj odgovorov na zgornja vprašanja bomo razvozlali pri tem predmetu. Spoznali bomo, kako so v računalniku predstavljena števila, kako jih sešteva in kako si jih zapomni. Ogledali si bomo tudi mnogo drugih osnovnih vezij in se jih najprej naučili razumeti. Nato se bomo vsa ta vezja, nekakšne računalniške Lego kocke, naučili povezovati v lastne izdelke, računalniška vezja, ki delujejo po naših željah. Iz zelo osnovnih vezij, kot so logična vrata in pomnilne celice, ter naprednejših vezij, kot so na primer števniki, bomo zasnovali in tudi praktično izdelali preprosta računalniška vezja, na primer avtomat za napitke, regulator pralnega stroja ali vezje za krmiljenje okrasnih luči, lahko pa tudi preprost računalnik. Ugotovili bomo tudi, da problemov, ki jih ne znamo rešiti s preprostim računalnikom, ne moremo rešiti niti z najnovejšim superračunalnikom.


Podati zgradbo in delovanje današnjih računalnikov z obravnavo za programerja vidnih lastnosti računalnika. Študent naj bi dobil osnovna znanja o zgradbi in delovanju posameznih delov računalniškega sistema in njihovi medsebojni povezavi.

Programiranje brez poznavanja algoritmov in podatkovnih struktur (APS) je kot trenje orehov brez kladiva - gre bolj počasi, lahko ostaneš lačen. Pri APS bomo za različne vrste orehov spoznavali različna kladiva. Za orehi se seveda skrivajo računalniški problemi, za kladivi pa postopki reševanja problemov in hranjenja podatkov. Če uživate v programiranju, boste po APS še bolj.

Računalniškim postopkom bolj umetelno pravimo tudi algoritmi, načinu hranjenja podatkov pa podatkovne strukture. Spoznali boste algoritme za različne probleme. Tako se boste naučili hitro množiti, urejati karte na sto in en način, iz velikh problemov delati manjše, požrešno zlagati stvari v vrečke in še in še - življenje vam bo postalo popolnoma jasno in enostavno. Razkrite vam bodo dobro varovane skrivnosti podatkovnih struktur. Spoznali boste, da računalniški podatki niso le števila, nizi in tabele, ampak obstajajo tudi skladi, vrste, seznami, drevesa, kopice, grafi itd. Od daleč boste prepoznali, kateri algoritem je hitrejši in katero drevo je višje - vaše ali sosedovo. Še več, spoznali boste različne metode za reševanje življensko pomembnih problemov in nenazadnje naučili se boste napisati hitrejši in lepši algoritem kot sosed. Razen, če seveda vaš sosed ni poslušal APS.

"May the source be with you."without knowledge ofalgorithms and data structures(ADS)is like cracking nuts without a hammer - goes slowly and makes you hungry. ADS is about different types of nuts and hammers. Behind nuts hide computational problems, and behind hammers receipts for solving the problems and data storage approaches. If you enjoy programming you will enjoy ADS.

Receipts are rather called algorithms and storage approaches data structures. You will learn algorithms for various practical problems, such as how to quickly multiply, to sort cards, to divide big problems into smaller ones, to greedily pack things into bags and so on - you life will become vivid and simple. You will be introduced to hidden secretes of data structures. You will learn that computer data is not only numbers, strings and arrays, but also stacks, queues, lists, trees, heaps, graphs, etc. You will easily recognize which algorithm is faster and which tree is higher - yours or neighbour's. Even more, you will learn various methods for solving the problems and, finally, how to make an algorithm faster and better than your neighbor. Unless, of course, your neighbor did listen ADS.

"May the source be with you."

Ko se bodoči programer prebije čez čeri prvih dveh programerskih predmetov, je podoben šolarju, ki pozna abecedo in slovnico do te mere, da zmore napisati esej brez napak. Kot je verjetno marsikdo (boleče), ugotovil to žal ni dovolj niti za dober spis in za dobro oceno. In v čem je problem? V tem, da je za dober spis potrebna tudi dobra vsebina in oblika in za njuno izboljšanje je preprosto potrebno veliko brati. Ker je dobre literature preprosto preveč, se je smiselno omejiti na izbor kvalitetnih besedil.

Podobno je, ko nekdo želi napisati lep in učinkovit program. Bistvo tega predmeta je več ali manj enako, saj nas želi učiti lepih in učinkovitih podatkovnih struktur in algoritmov, da bomo razumeli znanje in principe, na katerih so zasnovani in bo to iz nas naredilo boljše programerje. Pri tem predmetu je poseben poudarek še izzivu kako shraniti podatke, da bomo z njimi učinkoviteje rokovali. Tako se bomo učili o skladih, kopicah, različno obarvanih drevesih, kukavičjih gnezdih in še o drugih čudnih stvareh. Vendar pomni, poudarek predmeta ni na učenju algoritmov in podatkovnih struktur, ampak na razumevanju zakaj delujejo ter kakšne so njihove meje. Točno to, kar loči povprečnega računalničarja od dobrega in uspešnega računalničarja.


Cilj predmeta je študente seznaniti z osnovami sodobnih metod razvoja programske opreme in inženirskim pristopom k razvoju. Tako se po zaključku študija lažje vključijo v ekipe razvijalcev in vodij projektov, čeprav študij od njih zahteva pretežno samostojno delo in programiranje v malem.

Delovna praksa je redna študijska obveznost študenta, saj predstavlja obvezni del prvostopenjskega visokošolsko strokovnega študijskega programa Računalništvo in informatika. Namen delovne prakse je prilagoditi znanje študentov potrebam gospodarstva in javnega sektorja ter jih usposobiti do take mere, da se bodo ob zaposlitvi sposobni produktivno vključiti v delo v podjetjih in ustanovah, le-tem pa dati možnost, da si poiščejo in izoblikujejo svoje bodoče kadre.

Praksa traja 9 tednov neprekinjeno in se izvaja praviloma v poletnem semestru 3. letnika. Poteka pod vodstvom mentorja na fakulteti in mentorja v izbranem podjetju, ustanovi oziroma njihovih oddelkih, katerih področje dela je pretežno računalništvo in informatika. Podjetje oziroma ustanovo, v katerem bo študent opravljal delovno prakso, si študent lahko poišče sam ali pa mu pri tem pomaga koordinator praktičnega izobraževanja na FRI. Medsebojne obveznosti fakultete, študenta in podjetja, ustanove se podrobneje opredelijo s pogodbo o medsebojnem sodelovanju. Vsebino delovne prakse določa program, ki ga za posameznega študenta sestavita mentor na fakulteti in mentor v podjetju oziroma ustanovi. Ob zaključku delovne prakse izdela študent zaključno poročilo o izvedbi posameznih nalog. Poročilo in kvaliteta izvedenih nalog sta osnova za ocenitev uspešnosti  študenta. Oceno prakse poda mentor na fakulteti v sodelovanju z mentorjem v podjetju, ustanovi na osnovi predloženega poročila, podjetje pa izda potrdilo o opravljeni delovni praksi.

Predmet EMP pokriva tematike, ki so v sodobni informacijski družbi še kako prisotne in, kot kaže praksa, pomembne.

Pa začnimo pri vajah:. Na vajah bomo letos usmerjeni predvidoma le v Android. saj je to najbolj razširjena mobilna platforma. S tem po moji oceni največjemu odstotku študentov omogočimo, da programe testirajo kar na svojih pametnih telefonih. Kaj pa predavanja?


Imamo cel kup zanimivih tematik:

-mobilne aplikacije in mobilno poslovanje. Za to področje bomo izvedli tudi nekaj kratkih predstavitev vrhunskih slovenskih mobilnih aplikacij

-kot posebno področje mobilnih aplikacij bomo pozornosti posvetili obvladovanju mobilnih naprav v podjetjih in varnosti mobilnih naprav in aplikacij. Odkar so mobilne naprave "dobile" aplikacije, ki vsaj minimalno dostopajo do virov informacijskega sistema, je mobilne naprave potrebno obvladovati. Pogledali si koncepte in primere MDM (mobile device management) sistemov. Preko spletne konference se nam bo na predavanju pridružil Siniša Patkovič, vice president for secure products koorporacije Blackberry. Blackberry je vodilni ponudnik na tem področju za velika podjetja na svetu 

-tudi letos bomo pokrili področji ERP in CRM. ERP (Enterprise Resource Planning) so sistemi, ki pokrivajo celoten nabor poslovnih in odločitvenih procesov v podjetjih. CRM (Customer Relationship Management) pa pokriva upravljanje odnosov s strankami. Za obe področji bomo imeli vrhunskega vabljenega predavatelja, za CRM pa je predvidena tudi delavnica, kjer bomo ob diskusiji implementirali CRM sistem.

-IoT (Internet of Things) je zelo aktualno področje.

-Vsekakor pa bomo pozornost posvetili tudi elektronskemu poslovanju v splošnem in v okviru tega integracijam sistemov  v podjetjih. Predvideno je tudi vabljeno predavanje vodje informatike na Telekomu, kjer je integracija med različnimi sistemi ključna za delovanje podjetja


za tiste, ki želite več, pa bomo v okviru predmeta izvedli dva projekta, kjer bodo nastale uporabne in zanimive mobilne aplikacije. To bo temeljilo na "prostovoljni" osnovi.


Se veselim letošnjih srečanj z vami!



Rok Rupnik

   

  



Dandanes smo priča eksponentni rasti količine podatkov.
Poznavanje sodobnih tehnologij s področja podatkovnih baz ter poznavanje
pristopov za načrtovanje le teh je zato ključno tako za razumevanje delovanja
sodobnih informacijskih sistemov kot za uspešno profesionalno delo na področju
računalništva in informatike.

V okviru predmeta Podatkovne baze 2 boste nadgradili znanje
o relacijskih podatkovnih bazah in se naučili sistematičnega pristopa za njihovo
načrtovanje. Predmet se bo posvetil tudi indeksiranju podatkov in optimizaciji
poizvedb. Del predmeta se bo posvetil tudi obvladovanju velikih količin
podatkov in podatkovnim bazam, ki to omogočajo. Pogledali si bomo različne tipe
NoSQL podatkovnih baz. Spoznali bomo particioniranje podatkov, replikacije in
map-reduce za poizvedovanje. Laboratorijske vaje vam bodo omogočile preizkus
različnih konceptov s področja podatkovnih baz v praksi.

The course
Database II will upgrade your knowledge of relational databases and will teach
you a systematic approach to their design. The course will also focus on an
indexing of data and query optimization. Part of the course will address the
management of large amounts of data and databases that make this possible. You
will learn the different types of NoSQL databases. We will learn about data
partitioning, replication, and map-reducer for querying. Labs will allow you to
test different database concepts in practice.

Informacijske sisteme dandanes srečamo dobesedno na vsakem
koraku. Kot uporabniki se soočamo z informacijskimi sistemi v trgovinah, na
avtobusnih postajah, kinodvoranah,... da niti ne omenjamo vrste informacijskih
sistemov dostopnih preko interneta. Za bolj ali manj prijaznim uporabniškim
vmesnikom pa stojijo kompleksni informacijski sistemi, ki zbirajo, procesirajo,
hranijo in porazdeljujejo podatke. Informacijski sistemi igrajo eno od ključnih
vlog tudi pri poslovanju podjetij. Pri tem ne gre le za to, da podjetja
informatizirajo svoje obstoječe poslovne procese, ampak zlasti za to, da
vpeljava informacijskih tehnologij omogoči pomembne izboljšave le teh pa tudi
uvajanje povsem novih poslovnih modelov, ki podjetjem prinašajo pomembno
konkurenčno prednost.

Vse to boste spoznavali v okviru predmeta Informacijski
sistemi. Spoznali boste tudi ključne vrste poslovnih informacijskih sistemov (npr.
ERP, SCM, CRM,…). Predstavljene bodo informacijske tehnologije za podporo
delovanja informacijskih sistemov, povezava sodobnih informacijskih sistemov s
poslovnimi procesi, pomen poslovno informacijske arhitekture, itd. V okviru
predmeta bodo predstavljeni tudi konkretni primeri, ko so podjetja (npr.
Amazon, Citibank, …) z vpeljavo novih informacijskih sistemov in tehnologij
dosegla pomembno konkurenčno prednost. V okviru laboratorijskih vaj boste
spoznavali temeljne implementacijskih koncepte informacijskih sistemov z
uporabo sodobnih razvojnih okolij. Predmet informacijski sistemi podaja
temeljna znanja za razumevanje sodobnih informacijskih sistemov in za uspešno
profesionalno delo na področju poslovne informatike.

All these
topics are covered in the course Information systems. The course will introduce
the key types of business information (e.g. ERP, SCM, CRM,…), the information
technologies supporting the operation of information systems, association of
modern information systems to business processes, importance of business
information architecture, etc. The course will also present examples of enterprises
(eg. Amazon, Citibank, ...) that achieved significant competitive advantage by introducing
new information systems and technologies. Labs will teach you the basic implementation
concepts of the information systems using modern development environments. The
course Information Systems provides a fundamental knowledge for understanding
modern information systems and for successful professional work in the field of
business informatics.

Pravijo, da je pero močnejše od meča. Pravijo tudi, da slika pove tisoč besed. Verjamem, da ste ti dve trditvi že slišali; nekateri izmed vas ste o njih tudi razmišljali. Pa ste že slišali, da lahko z uporabo omejenega števila barv poveste več, kot če bi jih uporabljali mnogo? Da lahko z njihovo ustrezno rabo pričarate občutek umirjenosti ali nelagodja? Kaj pa tipografije? Še vedno prisegate na Times New Roman in Arial? No ja, na Cambrio in Calibri za tiste izmed vas, ki ste že uspešno presedlali na »ribbon«. Ste že kdaj pomislili, da lahko z nečim tako statičnim, kot je tipografija, pričarate čustva? Vse to lahko in tudi boste (morali). Da ne bo pomote, če se vam postavlja vprašanje »a ni to računalniški faks«, naj vas potolažim. Čeprav je običajna in tudi smiselna praksa pri razvoju programske opreme (to vam bodo pritrdili tudi drugi, kar povprašajte), da se oblika in funkcionalnost ločujeta, pričujoči predmet skuša povedati, da je kljub temu občasno treba imeti v mislih tudi obliko. Oblika, ki ne nadomešča ali zanemarja funkcionalnosti, ampak oblikovanje, ki jo dopolnjuje in nadgrajuje. Grafikon, ki prikazuje množico podatkov, lahko z uporabo ustreznih pristopov grafičnega oblikovanja postane tak, da uporabnik iz njega z lahkoto razbere najpomembnejše informacije. Prav tako uporabniški vmesnik. V čem je skrivnost iOS? Zakaj je v Win8 izmed gumbov za pomanjšanje, povečanje in zapiranje okna rdeč le zadnji? Nam morda sporoča, naj bodo ves čas zaprta? Zakaj so v OSX taisti gumbi po vrsti zelen, rumen in rdeč? Verjemite, ob koncu predmeta boste na svet gledali drugače.

Študentje so se že spoznali z osnovnimi koncepti računalniških komunikacij in omrežij ter operacijskih sistemov. Pri tem predmetu se bomo podrobneje seznanili z nekaterimi pomembnejšimi protokoli in se v drugem delu predmeta spoznali z osnovami varovanja računalniških in (širše gledano) informacijskih sistemov. Cilj predmeta je predvsem v pridobitvi praktičnih znanj. Teoretična znanja so podana le v nujnem obsegu.

Temeljni cilj je poglobljen pogled v zgradbo in delovanje računalnika in njegovih sestavnih delov. Najprej se spoznamo z najenostavnejšim nivojem gradnikov digitalnih integriranih vezij, ki jih sestavljamo v kompleksnejše sestavne dele sodobnih procesnih enot; podrobneje se seznanimo z njihovo zgradbo, realizacijo in delovanjem. Med praktičnimi primeri obravnavamo mikrokrmilnike iz družine ARM in najnovejše modele Intelovih procesorjev (npr. Core i7). V obsežnejšem delu se posvetimo pohitritvi delovanja računalniških sistemov s pomočjo vzporednega izvajanja na nivoju ukazov znotraj same procesne enote (cevovod) in potem tudi na nivoju združevanja večih enot v sistem (večjedrni procesorji, multiprocesorji, multiračunalniki). Pojasnimo razloge, zakaj razvoj teče predvsem v smeri paralelizacije sistemov in razložimo posledice tako z vidika programerja kot tudi snovalca računalniških sistemov. Ob tem se spoznamo tudi z zgradbo najzmogljivejših računalnikov z velikim številom procesnih enot. Pri vseh omenjenih sistemih so zelo pomembne zmogljive poti za prenose podatkov, ki jih obravnavamo v nadaljevanju (npr. PCI, USB, PCI Express). Zatem pojasnimo še delovanje nekaterih splošno uporabljanih vhodno izhodnih enot – trdih diskov, bliskovnih (»Flash«) pomnilnikov in ustreznih načinov prenosa podatkov med njimi (npr. prekinitve, DMA, V/I procesorji). V okviru laboratorijskih vaj pridobljeno znanje utrjujemo in poglabljamo s programiranjem in uporabo dejanskega vgrajenega sistema z ARM mikrokrmilnikom – “FRI-SMS” (v času semestra dobite sistem v sposojo). Prižigamo svetleče (LED) diode, programiramo vhodno izhodne naprave in sestavljamo enostavnejše aplikacije. Obravnavamo tudi model centralne procesne enote (CPE) na nivoju logičnih vrat (»MiMo«), ki lahko izvaja poljubne programe v lastnem zbirnem jeziku. Po želji lahko model dopolnjujemo na nivoju logičnih vrat npr. z lastnimi vhodno izhodnimi napravami, določamo korake pri izvedbi vsakega strojnega ukaza in celo kreiramo svoj nabor ukazov. Tako pri laboratorijskem delu spoznavamo na predavanjih opisane koncepte predvsem s praktičnega vidika.We also address the model of the central processing unit (CPU) at the level of logic gates ("MiMo") that can execute programs in its own assembly language. If desired, the model can be complemented on the level of logic gates e.g. with various input and output devices, the steps in the implementation of each machine instruction can be determined and even custom machine instruction set can be created. During the laboratory work, we learn the concepts described in lectures mainly from a practical point of view.

Ste se kdaj vprašali, zakaj so sodobni računalniki tako zmogljivi?
Za to so zaslužna digitalna integrirana vezja (čipi oz. mikročipi), ki so zelo majhna in izjemno hitra. Zmožna so izračunati več milijonov operacij v sekundi. Nastala so v petdesetih letih prejšnjega stoletja in od tedaj se nenehno izpopolnjujejo. Gre za eno največjih revolucij v tehniki nasploh.
Za računalničarja morda ni ključno, da o njih ve vse, pomembno pa je, da pozna njihove bistvene lastnosti. Kakšne funkcije izvajajo, kako jih načrtujemo in kako jih povezujemo med seboj? Osnovni elementi, iz katerih so sestavljena digitalna integrirana vezja, so tranzistorji. Spoznali bomo njihove značilnosti. Kako iz njih sestavimo naprave, ki znajo karkoli izračunati? Kako delujejo vezja, ki jih uporabnik lahko programira in tako po potrebi določa njihovo delovanje? Spoznali bomo, na kakšne načine računalnik pomni informacije, kako delujejo zapahi, registri, pomnilniki DRAM, SRAM. Skratka, spoznavanje digitalnih vezij bo pri nas v službi razumevanja delovanja računalnikov.

Ni ga med vami junaka, ki lahko trdi, da računalnika ni nikoli uporabil za igranje računalniških iger. Nekatere izmed vas je prav želja po razvijanju iger potegnila v študij računalništva in informatike. Zgodovina računalniških iger sega v daljno leto 1950, ko so akademiki začeli razvijati preproste igre in simulacije kot del raziskav na področju računalniških znanosti. Današnji trend vseprisotnosti in dostopnost mobilnih naprav področje zabavne industrije postavlja v sam vrh dobičkonosnosti.

Pri predmetu računalniška grafika bomo začeli s prvimi koraki k vizualni predstavitvi. Ugotovili bomo kako računalniku, ki se v osnovi zanaša zgolj na ničle in enice, razložiti, kaj je trikotnik. Kako naj z linearno algebro in množenjem matrik ustvari tak prikaz trikotnika, da bomo na ploskovnem ekranu dobili občutek prostora. Naučili se bomo prižgati luč in trikotnik ustrezno osenčiti, da bo občutek prostora še bolj pristen. Skočili bomo v grafični cevovod in spoznali metode, ki sodobnim igram dopuščajo izrisovanje velikih količin trikotnikov pri interaktivnih hitrostih osveževanja. Naredili bomo tudi nekaj korakov v svet animacije, kjer bomo spoznali 12 načel animacije, ki animirane filme naredijo tako žive. V bistvu se bomo veliko igrali.

Imate radi filme? Znanstveno fantastiko? Ste gledali Matrico, Terminatorja, Odisejo 2001, Umetno inteligenco, Laro Croft? Potem gotovo mislite, da veste, kaj je umetna inteligenca. V resničnem svetu se že od nastanka prvih računalnikov vrstijo znanstvene in filozofske razprave o tem, če je možno ustvariti sistem, ki se bo obnašal inteligentno.  ..

Danes mnogi programi pomagajo zdravnikom postavljati diagnoze, odkrivati goljufije v zavarovalništvu in na borzi ter celo določati, kateri izdelki naj stojijo skupaj na polici v veleblagovnici. Kdo je najmočnejši šahovski igralec na svetu? Kako poteka analiza človeškega genoma? Inteligentni sistem je sposoben sistem – in mnogi programi tudi so sposobni, le da so ozko omejeni in zmožni reševati probleme na zelo omejenih področjih.

Danes dobro vemo, da inteligence brez učenja ni – torej moramo računalnike naučiti, da se začnejo zares učitiin le pomniti, kajti edino pravo znanje je tisto, ki ga znaš uporabiti v praksi in s katerim si sposoben reševati probleme bolj učinkovito. Pri predmetu Umetna inteligenca boste spoznali, zakaj obstaja tako velik razkorak med pričakovanji in realnostjo, kaj sploh je inteligenca in kako jo simuliramo z računalnikom. Pogledali si bomo nekaj najuspešnejših tehnik reševanja problemov, ki izhajajo iz umetne inteligence, npr. strojno učenje. Govorili bomo o predstavitvah znanja, nevronskih mrežah in obdelavi naravnega jezika. Naučili se bomo, da sta v umetno inteligenco vmešana tudi evolucija in agenti.

Vaje pri predmetu potekajo v obliki reševanja nekaterih nalog in posvetovanj z asistentom o seminarskih nalogah. Oceno vaj predstavlja skupna ocena seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk. Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico točk. Oceno je mogoče izboljšati z ustnim izpitom.

Uporabniški vmesniki v aplikacijah so namenjeni čimbolj enostavnemu in preglednemu prenašanju informacij od aplikacije do uporabnika in obratno. Še tako dobra aplikacija ne more biti uspešna brez dobrega uporabniškega vmesnika. Uporabnik običajno ne pozna algoritmov, podatkovnih struktur in ostalih programerskih rešitev, ki skrbijo za to, da aplikacija deluje točno tako, kot se od nje pričakuje. Vidi pa uporabniški vmesnik in tako vsako njegovo napako ali pomanjkljivost. Najpomembnejši kriterij pri odločitvah, katero aplikacijo uporabljati (izmed nekaj sorodnih, katere opravljajo več ali manj enaka opravila), je velikokrat ravno ustreznost in enostavnost uporabniškega vmesnika. Pri tem predmetu boste izvedeli, kakšne karakteristike imajo sodobni uporabniški vmesniki in kakšni principi se skrivajo za njihovo implementacijo. Ravno tako pa se boste naučili izdelave dobrih uporabniških vmesnikov tako za namizne kot tudi za internetne aplikacije.

Računalnikarji pišemo programe v programskih jezikih. Teh je na tisoče in vsak od njih na svoj način nudi programerju čim lažji zapis programa. Žal pa računalnik razume en sam jezik: strojni jezik procesorja, ki je vgrajen v računalnik. Zato potrebujemo posebne programe, ki jim pravimo prevajalniki in jih uporabljamo za prevajanje enega programskega jezika v drugega, včasih pa si pomagamo še s programi, ki jim pravimo navidezni stroji in omogočijo izvajanje programa v jeziku, ki ga sam procesor ne razume. Prevajalnike in navidezne stroje si moramo računalnikarji sestaviti sami. A četudi nam jih sestavijo drugi računalnikarji, moramo zelo dobro razumeti, kako prevajalniki in navidezni stroji delujejo, kaj zmorejo, česa ne zmorejo in česa sploh nikoli ne bodo zmogli. Le tako jih namreč lahko pravilno uporabljamo in z njimi izdelamo učinkovite programe. Prevajalnike najbolje spoznamo, če kakšnega sestavimo sami. Pri izdelavi posameznega prevajalnika moramo znati z računalnikom analizirati prevajani program, ki je napisan v enem programskem jeziku, in nato sestaviti program, ki počne isto, a je napisan v nekem drugem programskem jeziku. Pri sestavljanju prevoda s prevajalnikom najlažje ugotovimo, kakšen program lahko učinkovito prevedemo, iz tega pa se naučimo, kako pisati učinkovite programe. Podobno je z navideznimi stroji. Šele ko spoznamo notranjo zgradbo kakega obstoječega navideznega stroja ali pa sestavimo kakšnega sami, razumemo omejitve, ki so jim podrejeni navidezni stroji, da lahko učinkovito izvajajo programe. Programiranje vam spremeni pogled na svet - razumevanje prevajalnikov pa vam spremeni pogled na progamiranje... Zelo preprosto: predmet za računalnikarje, ki uživajo v programiranju.

Kaj najprej naredi kuhar, ko skuha omako? Pokusi jo in (običajno) doda še malo popra ali soli. To naredi bolj iz navade, saj je glede na svoje dolgoletne izkušnje in natančno izveden recept prepričan, da je jed odlična.

What
about software: is it really enough if the programmer simply runs the program
to prove it works fine? Usually no as each software development follows a
different recipe which may be a very long one as well. Additionally what does
"work fine" mean? There are many aspects of this, not to mention that
customers, users and programmers don't share the same view on that. Thus, there
are several reasons why software testing must be systematically planned (size,
time), correctly executed in different phases and carefully documented. Many things
are anchored in deeper research and implemented in different testing tools.
First part of this course will teach you about all this following the
experience of most successful testing practitioners.

The aim of software testing is to discover
and remove as much errors as possible. It sure must be executed in the best
possible way, but it is still very dependent on how many errors the (especially
large) software artifact contains before testing: a lot or only a few. 
The secret is in the software development process, which should assure a good
quality product with minor number of errors only. Here different software
quality models and standards come into play which drive programmers to efficiently
develop a good quality product. To prove its quality software measurement is
used. The quality aspect of software development is covered in second part of
the course.

Finally,
we might consider our programmer a cook, but he works in a big restaurant with
a lot of hungry customers with very different wishes. Still, he strictly
follows recipes and systematically tastes each dish. Any improvisation is out
of question!

Razvoj sodobnih informacijskih sistemov je zahteven proces,
ki mora upoštevati ne le kompleksne tehnološke izzive, ampak tudi različne
organizacijske dejavnike, ki pogosto usodno vplivajo na uspeh razvojnih projektov.
Hitre spremembe informacijskih tehnologij in poslovnega okolja še povečujejo
kompleksnost razvojnega procesa. Razvojne ekipe morajo biti pripravljene na
sprotno vključevanje sprememb in novih zahtev, hkrati pa morajo biti sposobne
sodelovati v velikih projektih skupinah v katerih sodeluje več različnih
organizacij. Sodelovanje v takšnih skupinah, zlasti pa njihovo vodenje zahteva
veliko znanja in izkušenj. Še tako dober programer se ne bo mogel kakovostno vključiti
v delo projektne skupine, če ne bo razumel pomena in vsebine dokumentacije
zajema zahtev in načrtovanja oz. svoje vloge v okviru postopkov kot so zajem
zahtev, testiranje, itd.

V okviru predmeta Razvoj informacijskih sistemov boste
spoznali postopke in ključne tehnike in pristope, ki se uporabljajo pri razvoju
informacijskih sistemov. Predstavljeni bodo postopki in faze objektnih,
strukturnih in agilnih metodologij razvoja informacijskih sistemov. V okviru
načrtovanja se bomo med drugim posvetili diagramski tehniki UML, spoznali pa
bomo tudi nekatere druge diagramske tehnike, ki se pogosto uporabljajo pri
razvoju. V okviru predmeta boste pridobili pregled in razumevanje tehničnih
postopkov razvoja, kot so: zajem zahtev, analiza in načrtovanje,
implementacija, testiranje in uvedba, pa tudi vpogled v ključne podporne postopke,
pri čemer se bomo posvetili zlasti iterativnemu vodenju projektov razvoja
informacijskih sistemov. V okviru laboratorijskih vaj boste znanje, ki ga boste
pridobili na predavanjih, uporabili na primeru praktičnega projekta. Pri
predmetu boste pridobili ključna znanja za razumevanje procesa razvoja sodobnih
informacijskih sistemov, ki vam bo v okviru vašega profesionalnega dela pomagalo
uspešno sodelovati in voditi razvojne ekipe.

The course
Development of information systems will introduce the key techniques and
approaches used in the development of information systems. It will present the key
procedures and phases of object, structural and agile development methodologies
of information systems. In the context of analysis and design we will focus on
UML and other diagramming techniques that are commonly used in the development
processes. The course will provide an overview and understanding of the
technical processes of development, such as: requirements capture, analysis and
design, implementation, testing and deployment. Furthermore, it will provide an
insight into the key support processes in particular iterative management of information
systems development projects. Labs will enable you to apply the knowledge
acquired in this course on a practical project. In this course you will gain key
knowledge for understanding the development process of modern information
systems. This knowledge will help you to successfully participate in and lead
development teams as a part of your professional work.

Informacijska doba ni zaznamovana le z vseprisotno mrežo računalnikov
in informacijskih tehnologij; temveč tudi s pojavitvijo novih možnosti
izražanja in komunikacije, vzponom digitalne kulture in novih načinov
interakcije. Video, digitalna fotografija in grafika, digitalna
televizija in druge tehnologije se povezujejo v hipermedijsko protezo
človeštva. Proust bi dejal, da za prava odkritja ne potrebujemo novih
obzorij, temveč nove oči*. Zato bomo spoznali, kako multimedijo
uporabljamo, dojemamo, in produciramo. Kako lahko posnamemo
prepričljiv dokumentarec, kakšne so zakonitosti snemanja in montaže,
katere naprave in programje lahko uporabimo, in kakšne bodo
multimedijske tehnologije jutrišnjega dne? Z urjenjem ustvarjalnosti
bomo izdelali napredna hipermedijska okolja.

* Proust je tudi prijavil, naj lepa dekleta prepustimo možem brez
domišljije, vendar to ni del učnega programa pri tem predmetu.

The
course will familiarize the students with the key technologies, procedures, and
tools for production of multimedia content. The course is very practically
oriented; the students will learn the theoretical principles and apply them in
practice by working on multimedia projects. The practice classes will
facilitate such kinds of hands-on work; they will take place in a classroom
with suitable software and hardware equipment.

Objective: to adopt fundamentals of Digital Signal Processing Theory. The course covers basic concepts in Digital Signal Processing. Sampling of continuous-time signals, discrete-time signals, frequency domain representation of signals, discrete-time systems, frequency response of discrete-time systems, digital filters, and image filtering will be studied. The topics covered in this course include: sampling of continuous time signals, linear time-invariant (LTI) systems, the discrete-time Fourier transform (DTFT), discrete Fourier transform (DFT), Z-transform, transform domain analysis of signals and of linear time-invariant (LTI) systems, circular and linear convolution, spectral analysis via the DFT, techniques for designing and applying infinite impulse response (IIR) and finite impulse response (FIR) digital filters, two-dimensional signals, and introduction to digital image processing procedures. MATLAB and C will be used during the course.

Računalnik, internet in splet nas spremljajo na vsakem koraku. Postali so del nas, brez njih skoraj ne znamo več živeti. Vprašamo se lahko, kako bi izgledal en teden ali pa en dan brez teh modernih naprav in storitev. Ko na računalniku zaženemo brskalnik, se nam odpre nov svet. Zdi se nam, da nam je vse na dosegu roke, lahko se pogovarjamo s prijatelji, poslušamo glasbo, lahko nakupujemo, lahko objavimo svoje mnenje in še veliko več. Ali vas zanima kako je vse to mogoče, kakšna orodja potrebujemo, kako to naredimo? Vse to boste izvedeli pri tem predmetu. In še več, naučili se boste: * Kako narediti spletno stran, predstavitev slik - galerija? * Kako napisati program za igrico spomin? * Kako je zasnovana e-trgovina? * Kako poskrbeti za varnost podatkov? * Kako pridobiti uporabne podatke? * Kako izkoristiti prednosti in spoznati slabosti spleta?

Namen predmeta je predstaviti povezovalne probleme v digitalnih vezjih, vrste V/I naprav njihovo zgradbo, lastnosti in delovanje.

Študenti, ki poslušajo ta predmet, so že spoznali osnove
načrtovanja vezij s klasičnimi pristopi. Pri načrtovanju kompleksnejših vezij
na čipu pa si inženirji pomagajo z različnimi naprednejšimi programskimi orodji
namenjeni načrtovanju digitalnih naprav. Ta orodja podpirajo opisovanje delovanja
vezij s posebnimi programskimi jeziki kot je tudi jezik VHDL (angl. Very high speed integrated circuit Hardware
Description Language
), s katerim se bomo podrobneje spoznali. Nekaj delujočih
naprav bomo skupaj implementirali v čipih FPGA (angl. Field-programmable Gate Array). Preizkusili se boste lahko v
pisanju svojega mikroprocesorja ali pa različnih krmilnikov za npr. ATA disk,
Sound Codec AC97, Ethernet ali pa VGA kartico.


Zdravnik je zbral goro podatkov o neki bolezni, zdaj pa bi rad iz njih kaj pametnega izvedel. Banka ima podatke o svojih komitentih, pa jo zanima, komu dati kredit, komu ponuditi naložbe v sklade in koga pustiti čim bolj pri miru. Meteorologi beležijo podatke o topljenju ledu na Antarktiki in zdaj bi radi enkrat za vedno razčistili, ali je to res povezano z ogljikovim dioksidom ali ne. Naloge so si med seboj podobne: imamo podatke in preobračati jih moramo toliko časa, dokler nam česa ne povedo. Risali bomo grafe, računali to in ono, jih združevali, delili in filtrirali, vse dokler ne bomo izvedeli česa smiselnega, zanimivega in koristnega. Ste vedeli, da kupci plenic nenavadno pogosto kupijo tudi pivo? Ne? Potem, predpostavljam, še niste očki. Povezavo je odkrila velika ameriška trgovska veriga in zato na police s plenicami postavila še pivo. Pa ne najcenejšega, seveda. Ste vedeli, da imajo Francozi, ki jedo najbolj mastno hrano, kljub temu najmanj težav z ožiljem? Da, zato, ker ob njej pijejo vino. Rdeče. Tudi zakaj je tako, smo odkrili: ker vsebuje resveratrol (karkoli že to je). Vas zanima, katere stranke najpogosteje zamenjajo operaterja mobilne telefonije? Vas najbrž ne, Mobitel, Simobil, Tuš, Debitel, T-2 pa nekoga dobro plačujejo, da jim to pove. Vemo, na kateri dan v tednu se najbolj splača pošiljati reklame za špecerijo? In kdaj začenjati in končevati prodajne akcije? Komu sitnariti celo po telefonu? Da, pri Mercatorju, Sparu in Lidlu je nekdo to izračunal. Znamo iz podatkov o genih posamezne osebe povedati, ali se mora paziti holesterola ali naj se raje boji raka črevesja? Ali pa jo bo spravila v prezgodnji grob jutranja kava? Jaz še ne - vi pa morda boste.

Virtualizacija, kontejnerji in upravljanje velikih produkcijskih sistemov
Čeprav je tehnologija programskih kontejnerjev* (angl. software containers) znana in
uporabljana v svetu Linuxa že dalj časa, je s fokusiranjem na lažjo uporabo pravo
revolucijo z njihovo vpeljavo začelo podjetje Docker. Uporaba kontejnerjev je v svet
virtualizacije vnesla nov, svež veter. Podjetje Docker je samo v 4 letih iz praktično
nišnega izdelka zgradilo podjetje vredno več milijard dolarjev in zelo velik ekosistem
uporabnikov in podpornih podjetij. Kontejnerji in njihovo upravljanje je eno od najbolj
iskanih znanj v podjetjih
v okviru t.i. DevOps praks.
Študenti pridobijo konkretne izkušnje z Docker kontejnerji in njegovimi podpornimi
tehnologijami, ter se naučijo, kako zgraditi skalabilno aplikacijo, primerno za uporabo v
oblačnem okolju (cloud native apps)
. Pridobijo znanje, ki ga v tujini dobijo tečajniki pri
t.i. tehničnih treningih:

- Virtualizacija, hipervizorji, kontejnerji, razlike, primeri uporabein primernost uporabe glede na namen

- Pregled tehnologij, ki jih uporabljajo kontejnerji

- Delo s kontejnerji

- Gradnja oblačnih aplikacij (t.i. cloud native aplikacij)(arhitektura mikro storitev, CNCF (Cloud Native Computing Foundation) in priporočila, skalabilnost)

- Orkestratorji kontejnerjev v produkciji, predvsem Kubernetes, katerega razvoj vodi Google


Vsa tematika bo sproti podprta s praktičnimi, “hands-on” vajami.
Na koncu predmeta naj bi bil študent sposoben razumeti, kako je sestavljena moderna
oblačna aplikacija (cloud native application) in kako glede na zahteve naročnika
zasnovati, prilagoditi, implementirati in upravljati ustrezno optimalno rešitev, temelječo
na kontejnerjih Docker in orkestratorju Kubernetes. Večino znanj pri tem predmetu
spada pod tematiko t.i. DevOps znanj.
Pri predmetu bodo študentje programirali x86 kompatibilne osebne računalnike z uporabo zbirnika.

Upravljanje tehnoloških podjetij

Cilj predmeta je predstaviti poslovanje in upravljanje tehnoloških podjetij - startupov, od ideje do priprave za poslovanje.

V okviru predmeta bomo spoznali potrebne veščine, ki jih inženir potrebuje, ko se odloči za podjetniško pot. Spoznali bomo poslovanje startupa, trženje, upravljanje izdelkov, planiranje, dostop do trgov, finančno upravljanje podjetja, množično financiranje, pridobivanje investicij, upravljanje poslovanje mobilnih aplikacij, naprav, socialnih omrežij in podobno.

Vaje predmeta bodo oblikovane kot podjetniški inkubator, kjer bodo skupne študentov oblikovale svojo tehnološko rešiitev kot poslovno idejo in tako spoznale vse potrebno za nastop na trgu.



Področje pisanja programskih rešitev ni tako mlado, kot bi si marsikdo mislil – veliko starejše je od vas, pravzaprav je starejše celo od večine profesorjev naše fakultete. Zato je tudi zelo raznoliko in pokriva tako razvoj zelo specializiranih gonilnikov kot obsežnih bančnih informacijskih sistemov. In čeprav je zanj, enako kot za področje računalništva nasploh, značilno hitro menjavanje tehnologij in stremljenje za novimi, boljšimi rešitvami, pa se z zatonom določene tehnologije običajno ne zavrže vsega. Dobre rešitve in prakse preživijo in se pogosto celo reinkarnirajo v novih tehnologijah, podobno kot to velja za kavbojke ali skupino The Beatles, ki sta »in« praktično od svoje pojavitve. Lahko bi celo rekli, da so se tudi na tem področju izkristalizirale nekakšne splošno veljavne »resnice«, ki jih pravi programer mora poznati. Tehnologija programske opreme je predmet, ki ta uporabna znanja in prakse na praktičen način posreduje študentom.

Pri tem študenta najprej postavimo v vlogo vodje projekta razvoja računalniškega sistema, ki bo zahteval večmesečni razvoj, izvajal vrsto aktivnosti in ga bo mogoče uporabljalo na tisoče uporabnikov. Zato je nadvse pomembno poznavanje problematike razvoja (velikih) programov, različnih pristopov k razvoju ter poznavanje področij, kot so analiza naročnikovih zahtev, načrtovanje, izdelava in vzdrževanje programa. In ravno pri teh so nenadomestljive najboljše izkušnje, ki so se skozi leta nabrale v področju tehnologije programske opreme.

Poseben poudarek je namenjen tudi dobrim praksam pisanja programov z vidika programerja. In kot je za odlično orehovo potico potrebno sestaviti kvalitetne sestavine ter gospodinjino natančno izvedbo recepta, je tudi do odličnega programa le ena pot – skrbno premišljeni in natančno izvedeni koraki izdelave programa. Kaj je najpomembnejše? Pri potici gospodinja, pri programu pa programer. Potica je tako dobra tudi zato, ker ima gospodinja dolgoletne izkušnje in posredovano znanje več rodov. Kaj pa programer?

Predmet predvideva dobro znanje programiranja (predvsem v programskem jeziku Java), algoritmov in podatkovnih struktur ter podatkovnih baz. Poleg predavanj in laboratorijskih vaj vključuje tudi skupinsko delo na projektu, ki obsega vse od priprave do realizacije projekta ter njegove predstavitve.

Predmet je zanimiv predvsem za tiste, ki želite v svojih
karierah zasesti vodstvene položaje: vodja projektov informatike, vodja
informatike v podjetju, svetovalec za področje informatike v podjetju.

Spoznali bomo koncepte obvladovanja informatike v podjetjih,
saj informatika v podjetjih namreč ne funkcionira sama od sebe. Poleg spoznanja
konceptov obvladovanja informatike bomo spoznali tudi standarda COBIT in ITIL.

Pomemben sklop predmeta bo projektno vodenje. FRI si je namreč
privoščil avanturo s tem, ko je ukinil predmet za projektno vodenje, zato bomo
to vrzel zapolnili pri tem predmetu. Razumevanje konceptov vodenje projektov in
dela na projektih je v računalništvu in informatiki namreč izjemno pomembno.
Celo kariero boste namreč sodelovali na projektih. Spoznali bomo standard PMBoK
in nekatera izbrana poglavja področja vodenja projektov informatike.

Strategija informatike je pomembno področje, katere koncepte
boste še kako morali razumeti v vaših karierah. Spoznali se bomo s koncepti
strateškega planiranja v splošnem in v okviru tega spoznali glavne funkcije
managementa v splošnem. Znanje strateškega planiranja v splošnem bomo nato
nadgradili z vsebinskim sklopom strateškega planiranja informatike.

Zanimiv vsebinski sklop predmeta bo Poslovna analiza.
Poslovna analiza je področje, ki postaja pomembno stično področje obvladovanja informatike
in poslovanja podjetij. Zato bomo v okviru predmeta obravnavali tudi področje
poslovne analize.

Vsekakor pa bomo v okviru predmeta imeli tudi nekaj vabljenih
predavanj. Šlo bo bodisi za »čista predavanja«, bodisi bo gost sodeloval v
diskusiji z menoj in vami.


Veselim se skupnih tedenskih srečanj na predavanjih tega predmeta.


Rok Rupnik

Predmet študentu predstavi osnove multimedijskih tehnologij. Multimediji so nepogrešljiv del sodobnega okolja, saj nas napadajo takorekoč na vsakem koraku, od vseprisotne glasbe in slikovnih podob, do filmov, televizije in spletnih medijev.

Pri predmetu bomo raziskali tehnologije izza multimedijskih vsebin, ki so podlaga za uspešno uporabo, načrtovanje in razvoj multimedijskih sistemov. Obravnavali bomo vse tipe medijev: besedila, zvok in glasbo ter slike in video, posvetili pa se bomo tako problemom učinkovite predstavitve in stiskanja podatkov (npr. kako deluje stiskanje mp3 ali jpeg), kot sintezi in obdelavi vsebin (npr. kako deluje sintetizator zvoka, kako delujejo filtri v Photoshopu) in nenazadnje iskanju po multimedijskih podatkih (npr. kako dela Google).

Pri vajah se bomo spoznali s konkretno uporabo omenjenih tehnologij v različnih okoljih (npr. Matlab, Processing, java), in pri tem lahko izdelali svoj sintetizator zvoka, algoritem za stiskanje ali program za obdelavo videa.

tudents will get to know the basic principles of multimedia technologies. 

We will dig into technologies behind multimedia contents, which form the bases for the use, planning and development of multimedia systems. All types of media will be taken into consideration: text, sound and music, images and video. We will focus on data representation and compression (e.g. how does mp3 or jpeg work), media synthesis and processing (e.g. how does a synthesizer or Photoshop filter work), as well as search and retrieval in multimedia databases (how does Google work). 

In lab exercises, students will focus on concrete challenges, such as making their own sound synthesizer, compression algorithm, image processing application, or a video indexing service.


Izjava »kupil si bom štiri-jedrni procesor, da se bodo
programi štirikrat hitreje izvajali« je trapasta in zavajajoča. To ve vsak, ki
zna narediti paralelne sisteme, povezati jedra, procesorje in računalnike v
celoto ter take sisteme programirati tako, da se programi učinkoviteje
izvajajo. Da boste tudi vi med njimi, bomo pri predmetu spoznali različne
arhitekture paralelnih sistemov in se spoprijeli z več-nitnim programiranjem, s
programiranjem splošno namenskih grafičnih procesnih enot s knjižnico Open CL,
s knjižnico MPI za delo s porazdeljenimi sistemi, z mrežnim računalništvom ter
z računalništvom v oblaku.

Vaje pri predmetu so obvezne in se ocenjujejo. Na vajah vsak
teden dobite kratko nalogo, ki je vezana na predavano snov. Za pozitivno oceno
iz vaj morate rešiti vsaj 80 % kratkih nalog. Kratke naloge predstavljajo eno
tretjino končne ocene. Drugo tretjino predstavlja ocena projekta paralelizacije
kompleksnejšega algoritma na dveh različnih platformah. Zadnjo tretjino ocene
dobite iz znanja na ustnem izpitu.

Homework
assignments for the course are required and are being assessed. Every week
students get a short assignment from the material presented during lectures. To
get a positive grade from the homework assignments you need to successfully
complete at least 80% of short assignments. Short assignments represent
one-third of the final grade. Second-third is obtained from parallelization of
more comprehensive algorithm on two different parallel platforms. The last
third of the grade is obtained on the oral exam.

Uporabniška programska oprema omogoča računalniku, da stori kaj koristnega za uporabnika. Sistemska programska oprema pa omogoča računalniku, da sploh živi. Glavni del sistemske programske opreme je sam operacijski sistem oz. njegovo jedro (kernel). Poleg tega pa spada v skupino sistemske programske opreme še kup drugih programov, brez katerih bi računalnik le životaril. Spoznali bomo, kako komunicirata strojna in programska oprema. Za povprečnega uporabnika računalnika morda nič ni bolj nepomembnega od tega, kdo ali kaj skrbi za to, da naprave, ki so priključene na računalnik (monitor, disk, miška, tipkovnica, tiskalnik, omrežna povezava, USB disk itd.), lahko nemoteno delujejo. Za to skrbijo programi, ki jih imenujemo gonilniki. Brez teh bi bili računalniki popolnoma neuporabne škatle. Sistemska programska oprema omogoča programerju, da izdeluje aplikacije, ne da bi poznal vse "umazane" podrobnosti konkretnega računalnika, še posebno njegovih zunanjih naprav. Že vse različne strojne opreme je toliko, da je operacijski sistem računalnika ne more poznati. Gonilnik je npr. neke vrste prevajalec, ki govori tako jezik naprave kot jezik računalnika. Spoznali bomo, kako pišemo, prevajamo in nalagamo preproste primere gonilnikov. Ukvarjali se bomo tudi s sistemskim programiranjem, predvsem v sistemu Linux (v jeziku C). Pri tem bomo obravnavali tudi datoteke, procese, semaforje, signale, razne oblike medprocesne komunikacije in vtičnice (sockets), ki nam omogočajo, da napišemo preprost TCP strežnik in odjemalca.

Avtomatizacija igra vedno pomembnejšo vlogo v svetovnem
gospodarstvu. Inženirji si prizadevajo avtomatizirati najrazličnejše naprave in
jih povezovati v kompleksne računalniške sisteme, da bi ljudem kar najbolj
olajšali izvajanje najrazličnejših aktivnosti.

V okviru procesne avtomatike bomo spoznali osnovne gradnike,
ki so potrebni za izvedbo in vodenje avtomatiziranih sistemov . Ogledali si
bomo različne merilne in izvršne člene ter industrijske računalnike. Slednje se
bomo naučili programirati in jih povezovati v zanesljiva industrijska omrežja.
Naučili se bomo tudi, kako se zgradi uporabniku prijazen nadzorni sistem in
kako se industrijske računalnike poveže z višjimi sistemi vodenja v podjetjih.

Da pri avtomatizaciji naprav ne bo pretirane bojazni pri
delu ali napak, povezanih z velikanskoškodo, se bomo na realne izzive
pripravljali kar v računalniški učilnici na modelih industrijskih robotov in
proizvodnih linij.

Vaje pri predmetu so obvezne in se ocenjujejo. Projekt, ki
ga izdelate tekom semestra na omenjenih modelih, predstavlja polovico ocene.
Drugo polovico ocene dobite iz znanja, ki ga pokažete na ustnem izpitu.

In the
context of process automation we will learn the basic building blocks necessary
for implementation and control of automated systems. We will review a variety
of sensors, actuators, and programmable logical controllers (PLC). We will
learn how to program the latter and integrate them into reliable industrial
networks. We will also learn how to build a user-friendly supervisory control and
data acquisition system, and how to connect programmable logic controllers with
higher-level computer systems.

To get some
experience in the field, students have to set up a working system at practical
classes composed of a real industrial PLC and a model of industrial process
from scratch.

Practical
classes of the course are mandatory and are being assessed. The project created
during the practical classes represents half of the final grade. The second
half of the grade is obtained on the oral exam.

Študent, ki se prebije do tega predmeta, že veliko ve o procesorjih, računalnikih in njihovih komponentah. Zna tudi že marsikaj sprogramirati. Ali bi znal narediti čisto svoj računalnik, s katerim bi lahko predvajal posnetke MP3? Povezati in sprogramirati procesor, pomnilnik, AC97 kontroler in kodek (a sploh veste o čem pišem?)? Inženir računalniških sistemov to zna. Ali veste, da je v vašem telefonu zmogljiv računalnik majhnim zaslonom in tipkovnico? Podoben računalnik je tudi v vašem fotoaparatu, dlančniku, predvajalniku MP3, navigacijski napravi GPS, avtomobilu, mikrovalovni pečici, pomivalnem in pralnem stroju... Lahko bi rekli, da je danes v vsako napravo vgrajen računalniški sistem. Naučili se bomo, kako narediti take sisteme ter kako jih programirati. Naredili bomo tudi svoj računalniški sistem po želji ter za njega napisali vse potrebne programe.

Scenarij št. 1: Jan
stopi na platformo nad proizvodno halo v njegovem podjetju. Pod seboj zagleda
kopico neutrudnih robotov, ki nad tekočim trakom sestavljajo avtomobile. Dan za
dnem, uro za uro, minuto za minuto. Ne ozirajo se ne levo, ne desno, samo opravljajo
svoje delo. Njihovo zaznavanje in sposobnosti so razviti za opravljanje
specifičnih nalog; da nekaj postorijo, ali preverijo, če je bilo nekaj storjeno
pravilno. In te naloge opravljajo z odliko. Z veliko natančnostjo zaznajo tudi
najmanjše nepravilnosti na sestavnih delih, s tri-dimenzionalnim vidom lahko
zanesljivo ocenijo oddaljenosti in oblike predmetov, z robotskimi rokami jih
lahko primejo in z njimi rokujejo, na njih nekaj postorijo. Vse je tako kot
mora biti. Proizvodnja avtomobilov poteka brez zapletov.

Scenarij št. 2: Jan
se je komaj umaknil izstrelku robota XGH68. Dopoldne se je namreč Jan uprl
njegovemu ukazu in sedaj ga preganja kopica humanoidnih robotov, specialni
oddelek za dehumanizacijo neposlušnih ljudi. Kaznovali ga bodo namreč zaradi
državljanske nepokorščine. V družbi kjer vladajo roboti, morajo namreč ljudje
dosledno spoštovati njihove ukaze!

Pri tem predmetu se
bomo ukvarjali s scenarijem št. 1. Naučili se boste, kako takšni robotski
sistemi delujejo, iz kakšne opreme so sestavljeni, kakšne metode uporabljajo.
Razumeli boste osnovne principe na katerih temeljijo računalniško zaznavanje in
robotika. Predvsem se bomo ukvarjali z različnimi metodami robotskega vida s
katerimi se bomo naučili procesirati slike, iskati robove in kote ter druge
oblike na slikah, ločiti predmet od ozadja ter ga ustrezno obdelati in opisati.
Spoznali bomo tudi osnove tridimenzionalnega vida ter osnove robotike,
zgradbo  ter principe delovanja
robotskega manipulatorja. Principe in metode boste osvojili in jih preizkusili
v praksi. 

Z roboti v drugem
scenariju pa se ne bomo ukvarjali. In ne skrbite, tudi nikoli se vam ne bo
potrebno. Ljudje bomo za vedno gospodarji robotom. Se pa moramo naučiti, kako
jih najbolje izkoristiti.

Računalniške igre. Od strateških, športnih, dirkaških, do streljačin, arkadnih in ...

Najprej igraš, igraš in igraš, potem primerjaš in nato se začneš spraševati, kako so posamezne stvari narejene?

Ugotoviš, da so stvari kompleksne, da je osnova vsega seveda programiranje in ko zajadraš v svet pisanja kode, hitro prispeš do 2D grafike, svojih prvih objektov. Potem želiš nadzorovati, premikati grafične objekte na ekranu, pravilno simulirati trke, odboje.

Vsaka igra ima seveda tudi neka pravila, zato moraš pravilno umestiti tudi to logiko v svoj program.

In nastane tvoj prvi izdelek, tvoja prva igra, na katero si lahko upravičeno ponosen/a! Vsebuje namreč vsaj osnovna znanja programiranja, računalniške grafike, matematike, fizike, oblikovanja, kreativnosti in mogoče že celo nekaj umetne inteligence.

A tukaj se seveda stvar ne zaključi. Svet pač ni 2D, zato je skok v 3D grafiko zagotovo naš naslednji razvojni korak. Začne te namreč zanimati geometrija v tem novem 3D navideznem svetu, preslikave, senčenje, pravilno modeliranje človeške kože, animiranje in spet ...

Radovednosti, vprašanjem ni ne konca ne kraja. Nanašajo se tudi na ustrezno strojno opremo, načrtovanje uporabniških vmesnikov, interaktivnih zgodb, avdio-vizualne vsebine, na sam postopek razvoja in seveda, brez tega ne gre, trženje igre.

Odkrijmo te skrivnosti skupaj!

-----------------------

Ključni pojem na predavanjih: cevovod igre!
Ključni pojem na vajah: objavljena igra na AppStoru!

Bodo miške odločile?

Sedite za konferenčno mizo v zatohli sejni sobi. Spet sestanek. Že kdo ve kateri po vrsti. In spet so se šefi lotili tiste stare teme, prav tiste, o kateri vi nočete slišati niti besedice več. Niti ene same samcate besedice več!

Vsebina pogajanj je sicer resna. Izbrati morate dobavitelja računalniške opreme za vaše podjetje in vse njegove podružnice. Že zdavnaj ste sklenili, da sta poleg cene in kvalitete najbolj pomembna kriterija rok dobave in hitrost servisa. Še kopico drugih kriterijev ste določili in se o njih strinjali. A ti zlomka, debata se je spet ustavila pri miškah. Tako je, miškah! Ker Celjani ne morejo prodati tistih Logitechovih, oni drugi iz Maribora pa ne tistih Microsoftovih. V nekakšnih konkurenčnih klavzulah je menda problem.

Tako radi bi vstali in čez vso sobo zarjoveli: “Miške so nepomembne! Poglejte, če Celjani slučajno ne postanejo za dvajset odstotkov cenejši in če Mariborčani ne podaljšajo roka dobave za pol meseca, je odločitev tako ali tako jasna. Miške ne vplivajo!” A veste, da bo takoj sledila množica ugovorov. Kaj pa, če oni naredijo to? Kaj, če se spremeni ono? Kako lepo bi bilo, če bi le lahko vtipkali par številk v računalnik, nekajkrat kliknili in v hipu dobili odgovore na vsa ta vprašanja...

Mislite, da se vam kaj podobnega ne more zgoditi? Zgodilo se vam bo. Takšni sestanki v resnici potekajo vsak dan. A obenem tudi obstajajo programi, ki znajo tisto, kar si želite, tisto "vtipkati par številk in nekajkrat klikniti". In podati odgovore šefom.

Takšne dileme in programe si bomo ogledali pri Odločitvenih sistemih. In še kaj več. Pogledali si bomo volilne sisteme in kako so pri naši televiziji ogoljufali neko znano pevko. Pogledali si bomo, kako se da s pomočjo računalniške analize podatkov zdravnike na Onkološkem inštitutu prepričati v odločitev, da je potrebno zamenjati zakoreninjeno metodo merjenja joda v ščitnici. A predvsem, kako se da računalnike uporabiti kot orožje za krajšanje sestankov.

Računalniki so se, kot ime pove, na začetku uporabljali predvsem za računanje. Prvi problemi, ki so jih reševali z računalniki, so bili povezani predvsem s konstrukcijo atomske bombe. Kmalu pa so tedanje računalnike zasedli znanstveniki in inženirji, ki so reševali tudi "miroljubne" probleme.
Danes skoraj ni področja, kjer se računalniki (v povezavi z matematiko) ne bi uporabljali (http://www.siam.org/careers/matters.php).
Pri predmetu "Numerične metode" se bomo naučili nekaterih osnovnih postopkov, s katerimi lahko problem, formuliran v matematičnem jeziku učinkovito rešujemo na računalniku.

ŠPORTNA VZGOJA - ŠPORT NA FRI

Cilj predmeta so skozi organizirano in načrtno vodeno športno vadbo pri študentih vplivati na oblikovanje pozitivnih stališč do športa, ozaveščati o vrednotah športa, navajati na zdrav način življenja ter aktivno in ustvarjalno izrabo prostega časa, usmerjati v organizirane oblike športa na univerzi in širšem okolju, preventivno vplivati na posledice pomanjkanja gibanja, razvijati psihofizične sposobnosti in izpopolniti znanje v posameznih izbranih športnih panogah.

Velik poudarek je na praktičnih vajah, kjer študent izbira med ponujenimi športi (košarka, nogomet, odbojka, plavanje (aktivnosti v naravi - gorništvo, smučanje, tek na smučeh)).

Specialne teoretične vsebine so:
• Razlaga pravil in sodniških znakov.
• Razlaga osnovnih značilnosti tehničnih elementov in osnov taktike.
• Elementi skupinske taktike.











Prvi modul: Izobraževalni program
Vsebine izobraževalnega programa športa so športne panoge, ki se izvajajo v različnih oblikah in na več stopnjah zahtevnosti. Obsega programe učenja in izpopolnjevanja v izbranih športnih panogah, ki se izvaja kontinuirano ali v zgoščenih oblikah.
Drugi modul (lahko le kot dopolnilo prvemu modulu): Tekmovalni program
Tekmovalni program obsega vsa fakultetna, univerzitetna, meduniverzitetna in mednarodna tekmovanja (evropska in svetovna univerzitetna tekmovanja ter univerziade) v izbranih športnih panogah in je sestavni del dejavnega sožitja študentov, učiteljev in drugih pripadnikov univerze z namenom sodelovanja znotraj fakultet in univerz. V ta program se vključujejo predhodno selekcionirani študenti.


Predvideni študijski rezultati:

Znanje in razumevanje: osvajanje vsebin športa kot temeljev, ki omogočajo kvaliteto življenja.
Uporaba pridobljenega znanja za kompenzacijo vsakodnevnih stresov med študijem.
Refleksija: uporaba pridobljenega znanja za kompenzacijo vsakodnevnih stresov v poklicu in družini.
Prenosljive spretnosti : spretnosti pridobljene pri športu prispevajo k vzdržljivosti in telesni pripravljenosti na študij in delo.

Metode poučevanja:

 • predavanja v okviru vaj,
•  vaje,
•  skupinske in individualne konzultacije.

Način ocenjevanja:
Sprotno preverjanje (sodelovanje na vajah v izbranem vadbenem programu,
praktični prikaz pridobljenega znanja)

Končno preverjanje (ustno izpraševanje in preverjanje pridobljenih spretnosti)

Ocene: 6-10 pozitivno, 1-5 negativno




The aim of this course is, through an organized and systematic training influence the students attitude towards sports and raise their awareness of the values in sport, show a healthy lifestyle and active and creative use of leisure time, guide towards an organized form of sport in the university and the wider environment, prevent the effect and the consequences of lack of exercise, develop physical and mental fitness and improve skills in selected individual sports.

Strong emphasis is on practical work where students are offered a choice between different sports (basketball, soccer, volleyball, swimming, outdoor activities - climbing, skiing, cross country skiing).

Specific theoretical contents consist of:
• rules and judging signs,
• rasic features and technical elements, and basic tactics,
• elements of group tactics

Module 1: Education
The content of the education module  includes sport disciplines which are provided  in different forms and at different levels of  difficulty. The module comprises learning and training programmes in the selected sport disciplines , which is provided in a continued form or concentrated forms.
Module 2 (only available as a supplement to Module 1): Competition programme
The competition programme comprise all faculty, university and inter-university, as well as international competitions (European and world university competitions, as well as Universiades) in the selected sport disciplines and constitutes a part of the symbiosis among students, teaching staff and other members of the University with the aim to promote collaboration within faculties and universities. This module is intended for pre-selected students.

Knowledge and understanding:
Sports activities as a foundation for the quality of life.
Application: using the aquired knowledge and skills to compensate for the daily stress during the study improve the quality and performance.
Reflection: using the acquired knowledge and skills to compensate for the daily stress and improve the quality of the professional and family life.
Transferable skills – acquired skills contribute to endurance and physical fittness necessary for study and work.

Learning and tewaching methods:

• lectures within practical work
• practical work,
• group and individual consultations.

Assessment:

Type
Continuing (attendance at training sessions in the selected program, practical demonstration of knowledge and skills)

Final (oral examination and assesment of aquired skills)

Grading: 6-10 positive, negative 1-5

Izbrana poglavja iz računalništva in informatike: Analiza omrežij (ASI)

Svetovni splet, blogosfero, neposredno sporočanje in Facebook je vse moč opredeliti kot prepletanje med vsebino bogato z informacijami, milijoni posameznikov in organizacij, ki le-to uporabljajo in soustvarjajo, ter tehnologijo, ki vse to podpira. Vsebina predmeta bo zajemala rezultate zadnjih raziskav na področju zgradbe in analize takih velikih družbenih in informacijskih omrežij ter modelov in algoritmov za abstrakcijo njihovih osnovnih lastnosti. Poseben poudarek bo na praktičnih pristopih za analizo zelo velikih omrežjih ter razumevanju omrežij na podlagi različnih modelov njihove zgradbe in razvoja. Med drugim bodo obravnavane metode analize povezav in odkrivanja skupnosti v omrežjih, širjenje informacij po svetovnem spletu, odkrivanje virusnih izbruhov v omrežjih ter povezave z raziskavami v družboslovju in ekonomiji.

Predmet temelji na predmetu CS224W, ki ga ponuja Univerza Stanford, in služi kot nadaljevanje predmeta Aktualno raziskovalno področje I: Uvod v analizo omrežij (INA). Predmet bo natančno sledil urniku, gradivu, obveznostim, ocenjevanju ipd. predmeta CS224W. Predavanja bodo potekala v angleščini, dočim bodo vaje v angleščini ali slovenščini.

Predmet se izvaja v zimskem semestru z začetkom 24. septembra 2018 in traja deset tednov.

Za več glej eUčilnica.

Kreditne točke pri predmetu Računalništvo v praksi lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.


Kreditne točke pri predmetu Računalništvo v praksi lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.


Ta predmet je namenjen obvestilom v zvezi z drugostopenjskim študijem, razpravam študentov, študentskim vprašanjem... Članstvo v predmetu in naročnino na forume priporočamo vsem študentom, pa tudi vsem učiteljem in asistentom, ki poučujejo na tem študiju.

Splet je skoraj neomejen vir podatkov. Z uporabo iskalnikov, kot so Google, Bing in podobni, lahko hitro najdemo vsebine, ki nas zanimajo. Vendar je teh zelo veliko in pogosto si ne moremo privoščiti, da bi prebrali vse spletne strani, ki nam jih kot zadetke na neko poizvedbo vrne iskalnik. Rešitev so računalniški programi, ki znajo iz velikih količin nestrukturiranih ali delno strukturiranih podatkov (kar je tudi splet) izluščiti relevantne informacije in nam jih posredovati v strukturirani obliki.

CILJ PREDMETA

Cilj predmeta Iskanje in ekstrakcija podatkov s spleta je študente naučiti, kako razviti računalniške programe za iskanje po spletu (po indeksiranem in neindeksiranem delu spleta) ter kako razviti programe za ekstrakcijo strukturiranih podatkov s statičnih in dinamičnih spletnih strani. Študentje bodo spoznali osnovne koncepte spletnega iskanja in ekstrakcije podatkov s spleta ter se naučili potrebnih tehnik, ki so za to potrebne. Po uspešno opravljenem predmetu bodo sposobni samostojnega razvoja aplikacij, ki avtomatizirajo spletno iskanje in izluščijo podatke s spletnih strani, vključno z ekstrakcijo podatkov iz on-line socialnih medijev.

VSEBINA

Glavne teme, ki jih bomo obravnavali, zajemajo:

  • Combining Similarities, 1:m Match, Integration of Web Query Interfaces, Constructing a Unified Global Query Interface...) 
  • Opinion Mining and Sentiment Analysis (Document Sentiment Classification, Sentence Subjectivity and Sentiment Classification, Opinion Lexicon Expansion, Aspect-Based Opinion Mining...)

REQUIRED KNOWLEDGE

It is expected from students that they know at least basics of program languages and technologies such as, Java, JavaScript, Python, HTML, CSS, web page structure.  


COURSE GRADING
For a positive grade at this course students are expected to successfully finish two homework's, project work and written examination (at least 50% of all points) . 
Pri predmetu se bomo spoznali s principi in navodili načrtovanja uporabniških vmesnikov (UV) in s komunikacijo med možgani in računalnikom preko zamišljanja motoričnih aktivnosti oziroma neinvazivnim vmesnikom možgani računalnik (VMR). Teme so naslednje: sposobnosti človeka (spomin in učenje, zaznavanje, poznavanje), vrste komunikacije pri UV (vhodni modeli, modeli in metafore), principi načrtovanja UV (Normanovi namigi, Mandelovi principi, Nielsenovi principi), navodila načrtovanja UV (izbor in aranžiranje grafičnih gradnikov za interakcijo, grafično načrtovanje, povratna informacija in interakcije, izbor in načrtovanje ikon), elektroencefalogram (EEG) in komunikacija možgani računalnik, mednarodna referenčna podatkovna baza za načrtovanje VMR (EEGMMI DS - EEG Motor Movement/Imagery DataSet), načrtovanje neinvazivnega VMR, spektralna analiza signalov EEG (močnostni spekter, avtoregresivna metoda, časovno frekvenčne predstavitve, parametrično modeliranje), izločanje značilk v časovnem in frekvenčnem prostoru, izbor značilk, klasificiranje zamišljanih motoričnih aktivnosti, VMR s strojnim učenjem, VMR aplikacije (pomikanje kurzorja, črkovanje, komunikacija za hendikepirane). Uporabljena okolja bodo NetBeans in Matlab.

Računalništvo je tesno povezano z matematiko in temeljito poznavanja matematičnih osnov je nujen predpogoj za razumevanje strokovnih vsebin pri študiju računalništva in informatike na drugi stopnji. Namen obveznega predmeta Matematika 2 je ponoviti, utrditi in poglobiti poznavanje in razumevanje matematičnih osnov, linearne algebre (vektorski prostori in linearne preslikave) ter analize (številske in funkcijske vrste, funkcije več spremenljivk in vektorska analiza).

Computer science is closely related to mathematics and a thorough knowledge of the mathematical basics is a prerequisite for understanding the technical content in the study of computer science and informatics. The purpose of the course Mathematics 2 is to deepen the knowledge and understanding of mathematical basics of linear algebra (vector spaces and linear transformations) and analysis (series, integral and discrete transformations, functions of several variables and vector analysis).

Računalničarji moramo poleg osnov programiranja pridobiti tudi vpogled v drugačne programerske tehnike, kot sta proceduralno in objektno-usmerjeno programiranje. V zadnjih letih se izrazito uveljavlja funkcijski način programiranja, ki omogoča učinkovito razgradnjo programa na skupek neodvisnih funkcij, s katerimi je možno program izvajati tudi paralelno in s tem hitreje.

Pri predmetu se bomo učili funkcijskega pristopa k programiranju v jezikih Standardni ML in Racket. Spoznali bomo pojme, kot so tipizacija, leksikalni in dinamični doseg, funkcijska ovojnica, razvili pa bomo tudi interpreter za lasten programski jezik. Naš cilj bo pridobiti globje razumevanje v delovanje programskih jezikov in s tem doseči mojstrstvo pri programiranju.

Predpogoj za razumevanje snovi predmeta je poznavanje osnov programiranja v proceduralnih jezikih (Java, C++, Python) in razumevanje koncepta rekurzije.

Predmet se izvaja s predavanji, sprotnimi laboratorijskimi vajami in izdelavo domačih nalog.

Računalničarji moramo poleg osnov programiranja pridobiti tudi
vpogled v drugačne programerske tehnike, kot sta proceduralno in
objektno-usmerjeno programiranje. V zadnjih letih se izrazito uveljavlja
funkcijski način programiranja, ki omogoča učinkovito razgradnjo
programa na skupek neodvisnih funkcij, s katerimi je možno program
izvajati tudi paralelno in s tem hitreje.

Pri predmetu se bomo
učili funkcijskega pristopa k programiranju v jezikih Standardni ML in
Racket. Spoznali bomo pojme, kot so tipizacija, leksikalni in dinamični
doseg, funkcijska ovojnica, razvili pa bomo tudi interpreter za lasten
programski jezik. Naš cilj bo pridobiti globje razumevanje v delovanje
programskih jezikov in s tem doseči mojstrstvo pri programiranju.

Predpogoj
za razumevanje snovi predmeta je poznavanje osnov programiranja v
proceduralnih jezikih (Java, C++, Python) in razumevanje koncepta
rekurzije.

Predmet se izvaja s predavanji, sprotnimi laboratorijskimi vajami in izdelavo domačih nalog.

Za računalničarjevo preživetje v krasnem novem digitalnem svetu je nujno, da čimprej najde orodjarno ter da si tudi sam izdela vsaj kakšno bitno lopato. Govorimo o algoritmih in podatkovnih strukturah. To so za računalnikarja orodja, s katerimi uresniči svoje še tako divje ideje.

Dobro je poznati  pogosto rabljene algoritme ter preizkušene in uspešne načine razvoja  novih. Z višine se vidi več in dalj, zato bomo pri tem predmetu ukvarjali s prostorskimi podatki, iskali z in plezali na k-d, R in van Emde Boats drevesa. Poglobljeno bomo spoznali funkcije razprševanja, urejanje s predpostavkami, lokalno preiiskovanje, hevristične metode reševanja problemov, biološko navdahnjene metode, računsko geometrijo in uporabo linearnega programiranja. Da bi znali algoritme med seboj primerjati in da vedeli, katerih problemov se je sploh smiselno lotevati, bomo spoznali verjetnostno in amortizirano analizo algoritmov. In ker imajo dandanašnji procesorji vse več jeder, jih bomo izkoristili z večnitnimi algoritmi, nekaj pozornosti pa bomo namenili tudi distribuiranim algoritmom.

Tistim, ki na prvostopenjskem študiju še niso osvojili dovolj algoritmičnega znanja, bodo manjkajoče osnove ponujene kot samostojno dodatno delo na začetku semestra.

Vaje pri predmetu potekajo v obliki reševanja nekaterih nalog in posvetovanj z asistentom o seminarskem delu (3 seminarske naloge, 5 spletnih kvizov). Oceno vaj predstavlja skupna ocena seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk. Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico točk. Oceno je mogoče izboljšati z ustnim izpitom.

If one
does not want to reinvent the wheel, it is wise to know at least the frequently
used algorithms and some well tested and successful methods for development of
new algorithms. In general, it seems that standing on the shoulders of giants
is the best strategy for a quick progress. In high altitude one sees farther, so one should know about spatial data structures and climb the k-d, R, and van Emde-Boats trees. The course will drop
comparison sort and make some assumptions to sort in linear time. Standard
toolbox includes algorithms from computational geometry and use of linear
programming and hash functions. When exact methods do not work, local search, heuristic problem solving and
biologically inspired methods can be a solution. Knowing what tool (algorithm) to use in which
circumstances is also essential, so one has to compare different algorithms. Will my
new algorithm run a few seconds, a few minutes, or a few millennia? The
course will offer a way to answer these questions through the analysis of
computational complexity, in particular with probabilistic and amortized analysis.
Luckily, nowadays processors have more and more cores, so knowledge of parallel and distributed algorithms comes handy.

The
students who haven’t learnt enough of algorithms in their first degree study will be offered additional contents as a self-study at the beginning of the semester.

Practical part is in the form of programming assignments, solving problems, and web quizzes. Assistant is available for consultations. The grade of practical work is a joint grade of three assignments, which have to be finished on time and graded with at least 50% of points. The precondition for passing practical work is achieving at least 50% of points in web quizzes.

The final course grade consists of practical work grade (50%) and written exam (50%), in both parts one has to achieve at least 50% of points. Oral exam is optional.


Za računalničarjevo preživetje v krasnem novem digitalnem svetu je
nujno, da čimprej najde orodjarno in orožarno, ter da si tudi sam izdela
vsaj kakšno bitno sekiro, če že ne laserskega hipersenzoričnega kvantno
sklopljenega lupilca krompirja. Govorimo o algoritmih in podatkovnih
strukturah. To so za računalnikarja orodja, s katerimi realizira svoje,
še tako divje ideje.

Dobro je poznati  pogosto rabljene algoritme
ter preizkušene in uspešne načinov razvoja  novih. Lahko sicer vse na
novo izumimo tudi sami, a kot pravijo modri, se kolesa ne izplača
izumljati na novo pa še čas je zlato, zato se bomo raje postavili na
ramena velikanov. Z višine se vidi več in dalj, zato bomo pri tem
predmetu iskali z in plezali na k-d, R in van Emde Boats drevesa.
Poglobljeno bomo spoznali gramatike, funkcije razprševanja, urejanje s
predpostavkami, hevristične metode reševanja problemov, biološko
navdahnjene metode, računsko geometrijo in linearno programiranje. Da bi
znali algoritme med seboj primerjati in da vedeli, katerih problemov se
je sploh smiselno lotevati, bomo spoznali verjetnostno in amortizirano
analizo algoritmov. In ker imajo dandanašnji procesorji vse več jeder,
jih bomo izkoristili z večnitnimi algoritmi.

Tistim, ki na
prvostopenjskem študiju še niso osvojili dovolj algoritmičnega znanja,
bodo manjkajoče osnove ponujene kot samostojno dodatno delo na začetku
semestra.

Vaje pri predmetu potekajo v obliki reševanja nekaterih
nalog in posvetovanj z asistentom o seminarskem delu (3 seminarske
naloge, 5 spletnih kvizov). Oceno vaj predstavlja skupna ocena
seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk.
Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na
kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj
in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico
točk. Oceno je mogoče izboljšati z ustnim izpitom.


This course is held in English language and is oriented towards a practical course project. You will need to know the basic algorithms and data structures, and be ready to program a lot!

The course mark is composed of the coursework (the course project and homework) 50%, and the final exam 50%. To take the exam you need to score at least half of the coursework points. In addition, to pass the course, you need at least half of the final exam points.

Pri tem predmetu bomo obravnavali računalniško strojno opremo. Ne bomo pa se ukvarjali s procesorji in pomnilniki RAM, ker jih predvidoma že poznate, ampak bomo obravnavali “ostalo”. Vhodno-izhodne ali periferne naprave so najvidnejši del vsakega računalniškega sistema, kljub temu pa, strogo gledano, v resnici niso del računalnika v ožjem smislu. Povezane so z računalnikom z namenom razširitve njegovih funkcionalnosti. Preko mnogih od njih človek sploh lahko komunicira z računalnikom. Mednje štejemo vhodne naprave, kot so tipkovnica, miška, skener, izhodne naprave, kot so video adapter, monitor, zvočne kartice, zvočniki, slušalke, ter naprave za shranjevanje podatkov, kot so trdi diski, USB ključki, CD, DVD, Blu-ray, magnetni trakovi itd. V tesni povezavi s perifernimi napravami so tudi določene vrste vodil, namenjene priključevanju teh naprav, kot so npr. inačice PCI in USB. Ker vodila štejemo med električne linije, si bomo ogledali tudi osnovne značilnosti le-teh, npr. pojave, kot so odboji in presluhi. Dotaknili se bomo tudi nekaterih starejših standardov, npr. RS-232. Tudi omrežni vmesniki se lahko prištevajo med periferne naprave, zato jih ne bomo preskočili. Ogledali si bomo tudi primere gonilnikov, tj. programov, ki omogočajo komunikacijo s perifernimi napravami.

Predmet predstavlja celovit pogled na računalniške sisteme. Obravnava načela delovanja, podatkovni vhod in izhod ter procesne komponente računalniških sistemov z omejenimi viri. Predmet presega obravnavo posameznega računalnika in obravnava sisteme, sestavljene iz več med seboj povezanih naprav. Začnemo s pregledom kiber-fizičnih sistemov, tj., z integracijo računalniških in komunikacijskih procesov ter zaznavanja in aktuatorjev v fizičnem svetu. Predstavljamo temeljne vidike in ključna razmerja, ki veljajo za take procese. Nato se lotimo delovanja mikrokrmilniških platform, kjer preučimo, kako so usklajene različne periferne komponente in komponente za procesiranje podatkov. Posebno pozornost posvetimo programskim modulom, namenjenim nadzoru različnih komponent strojne opreme znotraj sistema, in celotnem orkestriranju komponent v operacijskih sistemih v realnem času na vgrajenih napravah. Zmanjševanje komponent in padanje cen strojne opreme olajšujejo vsesplošno uporabo nizkocenovnih računalniških naprav, zato preučujemo načine porazdeljenega procesiranja, komunikacije in interakcije med heterogenimi vgrajenimi napravami.
Na koncu obravnavamo tudi realne aplikacije brezžičnih računalniških sistemov.

At the course we will recognize principles and guidelines for designing User Interfaces (UI), and communication between brains and computer via movement imagery, i.e., non-invasive Brain-Computer Interface (BCI). The topics are following: human capabilities (memory and learning, perception, cognition), types of UI communications (input models, models and metaphors), UI design principles (Norman's hints, Mandel's principles, Nielsen's principles), UI design guidelines (selection and arranging graphic controllers for interaction, graphic design, feedback and interactions, selection and design of icons), electroencephalogram (EEG) and brain-computer communication, international reference database for designing BCI (EEGMMI DS - EEG Motor Movement/Imagery DataSet), designing non-invasive BCI, spectral analysis of EEG signals (power spectrum, autoregressive method, time-frequency representations, parametric modeling), feature extraction in time and frequency domain, feature selection, classification of imagined movements, BCI with machine learning, BCI applications (cursor moving, spelling, communication for handicapped). The environments used will be NetBeans and Matlab.

Predavanja predstavijo pristope in razložijo njihovo delovanje. Na laboratorijskih vajah to znanje uporabimo za apliciranje na praktične probleme v Matlabu in odprtokodnih orodjih.
---
The course relies mostly on computer vision, as most biometrics technologies are based on it. Students interested in cutting edge technology, much of which is still in a research stage, are the intended target for the course. The main content (will evolve due to developments in the field):

1.    Biometry basics
2.    Biometrical modalities
3.    Structure of a typical biometric system
4.    Recognition/verification/identification
5.    Metrics
6.    Conditions for correct comparisons of the systems (databases, frameworks)
7.    Performance and usefulness of the systems
8.    Computer vision as the foundation of the biometric systems

9.    Fingerprint
a.    Acquisition
b.    Quality assessment and quality improvement
c.    Processing
d.    Singular points, minutiae, ridges
e.    Matching

10.    Iris
a.    Acquisition
b.    Quality improvement
c.    Processing (segmentation, normalization, coding)
d.    Feature points
e.    Matching

11.    Face
a.    Acquisition
b.    Sub-modalities
c.    Processing
d.    Feature points (appearance/
model/texture-based approach)
e.    Matching

12.    Gait
a.    Acquisition
b.    Influence of dynamics
c.    Processing (appearance/
model-based approach)
d.    Dynamic feature points
e.    Matching

13.    Ear
a.    Acquisition
b.    Processing
c.    Feature points
d.    Matching

14.    Multi-biometric systems / multi-modality / fusions
15.    Key problems of modalities/systems (research challenges)

The lectures introduce the approaches and explain their operation. At tutorial the knowledge is applied to practical problems in Matlab and open source tools.
Predmet bo vseboval naslednje vsebine:

•    Uvod
    Računska zahtevnost odločitvenih in optimizacijskih problemov
    NP-polni in NP-težki problemi
    Hevristični algoritmi, kakovost suboptimalnih rešitev,  (ne)obstoj zagotovila za kakovost
•    Približno reševanje NP-težkih probl.
    Aproksimacijski algoritmi
    Kakovost približnih rešitev
    Razred APX
    Tehnika z vrzeljo
    Aproksimacijske sheme
    Razreda PTAS in FPTAS
    Meje približnega reševanja
•    Razvoj aproksimacijskih algoritmov
    Požrešna metoda
    Osredotočanje na podporobleme
    Zaporedno razdeljevanje
    Dinamično programiranje
•    Naključnostno reševanje NP-težkih probl.
    Las Vegas in Monte Carlo algoritmi
    Razredi RP, co-RP,  ZPP, PP, BPP
•    Razvoj naključnostnih algoritmov
    Naključno vzorčenje
    Zagotavljanje obilice prič
    Naključno preurejanje vhoda
    Zgoščanje
    Enakomerno porazdeljevanje bremen

Aktualno raziskovalno področje I: Introduction to Network Analysis (INA)

Networks or graphs are ubiquitous in everyday life. Examples include online social networks, the Web, wiring of a neural system, references between WikiLeaks cables, Supervizor, terrorist affiliations, LPP bus map, plumbing systems and your brain. Many such real-world networks reveal characteristic patterns of connectedness that are far from regular or random. Networks have thus been a prominent tool for investigating real-world systems since the 18th century. However, while small networks can be drawn by hand and analyzed by a naked eye, real-world networks require specialized computer algorithms, techniques and models. This led to the emergence of a new scientific field about 20 years ago denoted network analysis.

The course will first introduce the field of network analysis and highlight the differences between classical graph theory and modern network science. In the main part of the course, the students will learn about fundamental concepts and techniques for the analysis of real-world networks including node centralities and equivalence, graphlet counting, blockmodeling, community detection, role discovery, link prediction, network modeling and visualization. The last part of the course will be devoted to selected practical applications of network analysis in fraud detection, software engineering, information science and other.

The objective of the course is to present a broad spectrum of network analysis concepts and techniques, clarify their theoretical foundations and demonstrate their practical applicability. The topics covered were carefully selected thus to be suitable for a wide range of students and to serve as an introduction to more advanced network analysis courses like Selected Topics in Computer and Information Science: Analysis of Networks (ASI).

Except for good programming skills in some general purpose language, there are no specific prerequisites for the course. However, the students will benefit from a solid knowledge in graph theory, probability theory and statistics, and linear algebra.

The course is offered in the summer semester starting on February 19th, 2018 and lasts for fifteen weeks. Lectures and practice will be held in either English or Slovene.

For more see eUcilnica.



Spoznavali bomo področje inženiringa algoritmov,
katerega vodilo je premoščanje razlike med teorijo in prakso. Znanih je
več primerov, kjer klasični teoretični pristop nezadovoljivo opiše
obnašanje algoritma v praksi, npr. simpleksni algoritem, hitro urejanje,
LIFO/FIFO strategije, ravninskost grafa,
minor grafa itd. Posledično je izredno pomembna dobra implementacija
in eksperimentalen preizkus algoritma. Tekom predmeta si bomo
ogledali proces inženiringa algoritmov in njegove posamezne stopnje:
realistični modeli računanja, snovanje algoritmov, implementacija
algoritmov, analiza algoritmov preko najslabšega primera, izvedba
eksperimentov, generiranje realističnih vhodov, izvedba
algoritmičnih knjižnic.

Mobile computing devices such as smartphones revolutionised the way in which we communicate and find information. In addition, these devices are equipped with sensors that enable the inference of the surrounding context, including the position, activity, and the environment of the user. The aim of this course is to introduce students to mobile communication and sensing systems based on the above devices. The emphasis is on developing deeper understanding of the functioning of mobile wireless networks, mobile sensing, pervasive computing and applications of mobile systems. The course examines these systems both from a technical perspective, as well as in terms of interdisciplinary applications, thus touches upon machine learning, computer network analysis, and healthcare. Students are introduced to development tools and techniques for building mobile systems and their understanding is reinforced through practical work in the Android OS.

This
course is held in English language and is oriented towards a practical
course project. You will need to know the basic computer communication
concepts, be proficient in Java
, and be ready to program a lot!

The course mark is composed of the coursework (the course
project and homework) 50%, and the final exam 50%. To take the exam you
need to score at least half of the coursework points. In addition, to
pass the course, you need at least half of the final exam points.


Računalniške metode v sintezni biologiji

Sintezna biologija je novo znanstveno področje, ki se ukvarja z načrtovanjem in izdelavo novih, sintetičnih, bioloških sistemov. Številni uspehi področja so rodili aplikacije kot so na primer pametna zdravila, biološki sistemi kot obnovljivi viri energije in sistemi za zmanjševanje onesnaženosti kot tudi računalniške stukture, ki bodo lahko v bližnji prihodnosti predstavljale osnovne logične elemente bioloških računalnikov.

V okviru predmeta Računalniške metode v sintezni biologiji se bodo študenti poglobili v aktualne računalniške metode, ki se v zadnjem času uporabljajo na tem interdisciplinarnem področju. Računalniški pristopi so v tem kontekstu postali nepogrešljivi, saj na osnovi modeliranja bioloških sistemov omogočajo njihovo analizo, načrtovanje in verifikacijo pred samo biološko realizacijo. Prav tako se bodo študenti spoznali tako z naravnimi kot tudi s sintetičnimi biološkimi sistemi, ki omogočajo procesiranje informacij na podoben način kot to v današnjem času vršijo digitalni elektronski sistemi, ki sestavljajo sodobne računalnike.


Computational Approaches in Synthetic Biology

Synthetic biology is an emergent scientific field which aims the design and construction of novel, i.e. synthetic, biological systems. Several successful applications were reported recently such as intelligent therapeutics, renewable energy sources and systems for environmental pollution removal. Also, basic information processing structures were already realized, which will probably present the basic parts of biological computers in the near future.

The course will provide an outline of the state of the art computational approaches used in this interdisciplinary field. Computational approaches support the rapid progress of the filed while they allow us to thoroughly analyse the novel biological systems before its experimental (i.e. biological) realization. Moreover, we will introduce the biological systems which are able to process information in similar manners as digital electronic systems that comprise modern computers.


Title: Software Radio for Smart Wireless Systems

The
design and implementation of radio transceivers for certain classes of
applications is increasingly shifting from the hardware to the software
domain. The “softwarization” of radio systems is enabled by the
increased speed and reduced cost of general-purpose processors, and
allows developing systems that are more flexible, adaptable and
evolvable than traditional hardware-based systems. It also facilitates
experimentation and over-the-air testing of novel wireless communication
techniques and systems for communication and/or sensing.

The
high-level goal of the course is to enable students to develop radio
transceiver systems for advanced wireless applications entirely in
software. The course is designed specifically for Computer Science (CS)
students, it is entirely self-consistent and does not require previous
knowledge of Communication theory. 


The course consists of three parts.

Part
I – Fundamentals. The initial part of the course will provide a
thorough review of basic concepts that are the foundation of
communication theory and signal processing: baseband vs. pass-band
signals, complex representation of pass-band signal, representation and
reasoning in the frequency and time/frequency domain,
sampling/decimation, aliasing, definition of basic functions like
modulation, coding, etc. This initial part covers topics that are
normally thought in basic communication courses, but they are addressed
here with a different cut, more pragmatic and oriented to (software)
implementation. The use of mathematical formalism is limited to the
minimum that is necessary to facilitate the comprehension of basic
signal manipulations and the reasoning in frequency and time/frequency
domains. Furthermore, mathematical notions and signal processing
concepts are readily “interpreted” and illustrated with reference to
software (not hardware) implementation.

Part II - Functions and
components. The second part of the system provides a high-level view of
various components and functions of a radio transceiver system that are
traditionally accounted to the PHY/MAC/LLC layers in the reference OSI
model. Differently from other courses on signal processing, the goal
here is not to provide an in-depth treatment of individual components,
but rather provide a synthetic view of what these modules are needed
for, and what are the key properties of the most common state-of-art
solutions. The perspective taken in the course is that the students will
not have to implement each component individually from scratch:
instead, they will select and use existing implementations, possibly
with some level of optimization (e.g., parameter tuning) and/or
customization of few selected module, in order to build a whole
transmitter/receiver system.  To this end, they need to have a
high-level understanding of (i) whether a specific function is needed at
all for the particular application at hand, and if so, (ii) how to
select the most appropriate implementation (in terms of various
performance vs. cost tradeoffs).

Part IIII – Advanced wireless
systems and applications. The final part of the course addresses the
system level: how functions and components can be combined to implement a
specific application. At this stage of the course it is important to
refer to concrete examples of applications, or classes thereof. Instead
of established radio standards, the course will focus on advanced
applications that are currently at the forefront of the research
activities in the wireless research arena, namely wireless localization
and physical-layer security. Selected case-study from the recent
research literature will be presented. Collectively, these exemplary
applications will be mind-opening for the students and give them a
different perspective on the current capabilities and further potential
of modern wireless systems.

During the laboratory sessions the
students will learn to program radio protocol stack in the open-source
platform GNU-Radio (for an overview see
en.wikipedia.org/wiki/GNU_Radio). Basic implementations of protocol
stack for various radio standards are already available in GNU-Radio
(e.g. FM Stereo, WiFi, IEEE 802.15.4, RFID, ADS-B, and many others).
During the laboratory course, the implementation of 2-3 selected radio
standards will be studied and used to quickly acquire familiarity and
hands-on experience with (the processing) of real-world radio signals.
Programming languages will be C/C++  and Python.

Podatkovni analitiki, osebe, ki znajo s kombinacijo računalniškega in statistično/matematičnega znanja izluščiti koristne informacije iz podatkov, so danes eden izmed najbolj zaželenih in iskanih kadrov. Glavni cilj tega predmeta je študenta opremiti z znanjem, ki je potrebno za reševanje večine statističnih nalog, ki jih srečamo pri vsakdanjem statističnem delu in empiričnih raziskavah, obenem pa študentu predstaviti tudi teoretično in algoritmično ozadje, ki nam omogoča statistično analizo. Najprej se bomo naučili temeljev statistike, natančneje Bayesove statistike. Bayesova statistika je sodoben statistični pristop in je v veliko pogledih bolj intuitivna kot klasična statistika. Še posebej pa je primerna za tiste, ki imajo programersko ozadje in so vešči algoritmičnega razmišljanja. Spoznali se bomo s koncepti statističnega modeliranja ter klasičnimi in sodobnimi algoritmov za statistično računanje (Gibbs, Metropolis-Hastings, Hamiltonian Monte Carlo). V drugem delu predmeta bo poudarek na uporabi pridobljenega znanja pri reševanju praktičnih problemov, od preprostih, pa vse do aktualnih raziskovalnih problemov. Od predpriprave podatkov, preko modeliranja, do predstavitve rezultatov. Pogledali si bomo tipične naloge napovedovanja, gručenja in testiranja hipotez na različnih področjih, kot so geografija, meteorologija, šport..


Hiter napredek tehnologije je omogočil tudi razvoj senzorskih omrežij, ki počasi prodirajo na vsa področja, tako industrijske, kot tudi domače uporabe. Omrežja so pogosto uporabniku skrita, tako da jih zaznava samo preko zajetih podatkov. .Senzorska omrežja ne vsebujejo zgolj elementov za zajem podatkov, temveč tudi elemente, s katerimi lahko upravljamo zunanje naprave. Primer enostavne uporabe senzorskega omrežja v domačem okolju je vodenje centralnega ogrevanja z baterijsko napajanimi radiatorskimi ventili, povezanimi v omrežje preko centralne postaje.


Posebnost senzorskih omrežij je zahteva po nizki porabi energije, kar omogoča dolgotrajno avtonomno delovanje z baterijskim napajanjem, ki lahko doseže tudi deset let ali več. Senzorska omrežja so običajno sestavljena iz večjega števila enakih elementov, kjer je nizka cena pomemben faktor. V teh omrežjih se srečujemo s problemi, kot so enolično poimenovanje elementov, usmerjanje prometa, zajemanje podatkov, avtentikacije elementov itd.


Senzorska omrežja posegajo tudi na področje interneta stvari (IoT), saj so pogosto povezana v internet in tako postanejo del le-tega. S tem pridobimo vse možnosti, ki jih omogoča obdelovanje podatkov v oblaku.

Ali bi radi vedeli kako se lahko računalnik spremeni v orodje za obdelavo glasbe, govora, slike, telekomunikacijskih, navigacijskih in medicinskih signalov? Pogosto brez kakršnekoli dodatne opreme, samo z uporabo znanja! Ali veste, da je vaš mobilni telefon pravzaprav računalnik, ki izvaja programe za digitalno procesiranje signalov? Ali da se pri uporabi ADSL modema in pri gledanju digitalne televizije vsako sekundo opravi več sto milijonov seštevanj in množenj? Odgovorom na vprašanje, kako je to mogoče in kakšna znanja so potrebna za to, je namenjen predmet Digitalno procesiranje signalov.

V okviru predmeta si bomo najprej ogledali kaj so signali in s kakšnimi matematičnimi orodji jih opisujemo. Za delo z njimi potrebujemo diskretne sisteme, ki omogočajo pretvorbo signalov v drugačne oblike. Spoznali bomo najpogostejše vrste takih sistemov in načine za določanje njihovih parametrov. Videli bomo kako se izračunajo filtri, kako se določajo spektri in kako se lahko ugotovi prisotnost v šumu skritega signala. Ker je pri signalih hitrost računanja ključnega pomena, bomo iskali hitre algoritme, s katerimi je mogoče doseči delovanje v realnem času. Pri laboratorijski vajah bomo obravnavali veliko praktičnih primerov in aktualnih problemov, na katerih bo mogoče preizkusiti vaše pridobljeno znanje. Med problemi so npr. sinteza strunskih instrumentov, odpravljanje nezaželenih odmevov, lociranje izvora zvoka v prostoru, uporaba filtrov, 3D zvok, detekcija zvokov, razpoznavanje govora in identifikacija govorca.

Multimedijska predstavitev: http://prezi.com/zxdmg2osfn6d/dps-predstavitev-izbirnega-predmeta/

We will begin with a question what signals are and what mathematical tools are needed to describe them. For signal processing we need discrete systems which transform signals into different forms. We will learn about the most common types of such systems and about methods that give their parameters. We will see how the filters are designed, how the spectrum of a signal is computed, and how a signal that is hidden in the noise can be extracted. Since the speed of computation is extremely important we will search for fast algorithms that allow real time implementations. In the laboratory we will, in addition to the standard computers, use special signal processors on which your solutions to the problems can be tested. Among the problems there are synthesis of string instruments, removal of undesirable echoes, location of the acoustics source in space, speech recognition, and speaker identification.

Zaradi hitrih sprememb na tem področju se bo vsebina predmeta prilagajala razvoju:
1. Uvod v digitalno trženje
2. Značilnosti in vedenje porabnikov v digitalnem trženju
3. Digitalno trženje in trženjsko raziskovanje
4. Izdelki in storitve v digitalnem trženju
5. Posebnosti oblikovanja cen v digitalnem trženju

1. Introduction to Digital Marketing

2. The characteristics and behavior of consumers in the digital marketing

3. The digital marketing and market research

4. Products and services in digital marketing

5. Special pricing in the digital marketing

6. Marketing channels in digital marketing

7. Digital Marketing Communications

8. Marketing relationships in the digital marketing

9. Business Models of Digital Marketing

10. The marketing plan for the needs of digital marketing

Naj vas druga beseda v imenu ne prestraši. Diskretna matematika je tista matematična disciplina, ki se z računalniki najbolje razume. Uspešna rešitev diskretnega matematičnega problema nas včasih ne bo zadovoljila, med rešitvami bomo želeli poiskati takšno, ki jo lahko prepišemo v kar se da učinkovit algoritem (ali pa vsaj takšno, ki jo na najlažji način prepišemo v algoritem).

Znaten del tečaja se bomo ukvarjali s problemi na grafih, ki se pojavljajo povsod okrog nas, ne da bi se tega zavedali. Napredek v teoriji grafov kot matematični disciplini je tesno povezan z razvojem računalništva. Rdeči niti bosta v resnici dve: barvanja grafov in problem disjunktnih poti. Problemi barvanja splošnih grafov so tipično težki. Če pa imamo opravka, denimo, z ravninskimi grafi, lahko barvanje grafov postane z računskega stališča obvladljiv problem. Problemi disjunktnih poti (pa tudi njihovi sorodniki - pretoki in prirejanja) se lahko skuhajo na več načinov, s popolnoma različnim obnašanjem. V neusmerjenem ali usmerjenem grafu in z ločevanjem terminalov poti ali ne. Večina naših problemov pa bo postala enostavna v grafih, v katerih lahko že majhna skupina policajev ujame še tako hitrega roparja.

Spoznali pa bomo tudi nekaj osnovnih tem iz računske geometrije. Kako zapleten mnogokotnik razrezati na enostavne sestavne dele? Kako v galerijo postaviti varnostne kamere? V katere trgovine zahajajo prebivalci velikega mesta in kako določiti nadmorsko višino?

Pričakujemo predznanje iz algoritmov in podatkovnih struktur, tudi z malo bolj teoretičnega stališča - časovna in prostorska zahtevnost algoritmov. 

Predmetno delo vključuje tedenske domače naloge in končni izpit. 


Nove informacijsko komunikacijske tehnologije prinašajo tudi korenite spremembe v načine poučevanja in učenja. Danes govorimo o e-izobraževanju, na obzorju pa je, v skladu z idejo vsepovsodnega računalništva tako imenovano mobilno izobraževanje (m-izobraževanje). V didaktičnem smislu je potrebno poznati različne pristope oziroma modele izobraževanja, pri čemer pa sodobna tehnologija postavlja tako pred učitelja kot pred učenca nove izzive in nove možnosti. Nekatere tehnologije so že dobro znane in uveljavljene. Omenimo naj uporabo različnih spletnih učilnic in izobraževalnih portalov. Atraktivnost izobraževalnih gradiv lahko dosežemo z intenzivno uporabo multimedijskih in interaktivnih elementov, kot so različne računalniške simulacije in animacije. Kreativni učitelj, ki stalno posodablja svoje elektronsko učno gradivo, hitro spozna, da je pri pripravi takih gradiv potrebno mnogo vloženega truda, hkrati pa se sreča s problemi, ki jih predstavlja hiter razvoj računalniških tehnologij, ki postajajo po svoje neskladne, po drugi strani pa odpirajo dodatne možnosti. Odpre se vprašanje, kako ponovno uporabiti in prilagajati s trudom pripravljeno digitalno vsebino. Rešitev najdemo v tako imenovanih ponovno uporabljivih učnih objektih. Pojavljajo in uveljavljajo se digitalne knjižnice, ki naj bi omogočale tudi mednarodno souporabo didaktičnih gradnikov. Vendar se pred nami pojavi novo vprašanje: tehnologije, ki jih pri tem uporabljamo, med seboj niso skladne, čeprav govorimo o standardih, ki pa niso konsistentni in se spreminjajo. Predmet naj bi dal možne odgovore na takšna vprašanja. Hkrati naj bi nakazoval primere dobre prakse in možne računalniško podprte aplikacije, kot so elektronsko preverjanje znanja, elektronske spletne ankete, vrednotenje kakovosti e-izobraževalnih gradiv.

Vas zanima, kako bi procesirali kar kriptirane podatke in bi bil rezultat pravilen, procesor pa se "ne bi zavedal" konkretne vsebine podatkov? Vas zanima, kako deluje BitCoin in bi sami želeli izdelati digitalno gotovino? Bi želeli postati varnostni inženir, revizor IS, ali se npr. naknadno specializirati za varnostne kibernetske operacije? Potem ste dobrodošli pri predmetu Informacijska varnost in zasebnost.

Varovanje informacijskih sistemov je postala ena osrednjih dejavnosti v sodobnih informacijskih okoljih tako v poslovnem, javnem in zasebnem življenju ter vse bolj na državnem nivoju. Slušatelji bodo zato pri tem predmetu osvojili znanja (teoretična in praktična) s področja varovanja omrežij in zasebnosti v sodobnih informacijskih okoljih (od klasičnih informacijskih sistemov do interneta stvari ter računalništva v oblaku) in sicer za namen skrbništva (administrator sistemov), upravljanja (vodja informatike, angl. »chief ecurity officer«), kot tudi razvoja novih rešitev (razvojni inženir) in svetovanja ter revizije.

Uvodnemu pregledu področja ter ključnih organizacij in standardov (ISO, ITU-T, ANSI, IETF, W3C, OASIS, OMG,...) bo sledila tematika obvladovanja tveganj pri varovanju informacijskih sistemov, organizacijskih pristopov ter obvladovanja človeškega dejavnika (varnostne politike). Temu bo sledilo podajanje potrebnih temeljnih znanj, to je varnostnih mehanizmov in varnostnih storitev (principi in praktične izvedbe overjanja, zaupnosti, celovitosti, nezatajljivosti, nadzora dostopa, beleženja in alarmiranja). Zatem pride obravnava infrastrukture javnih ključev (časovna normala, upravljanje imenskega prostora, operativni protokoli) ter infrastrukture za overjanje, avtorizacijo in nadzor (skupaj s principi in primeri standardiziranih rešitev kot je npr. RADIUS). Temu bo sledila analiza varnosti po slojih sklada IP, najprej varovanja na fizičnem in linijskem sloju (protokoli WEP, WPA in WPA2), nato varovanja na mrežnem, transportnem in končno aplikacijskem sloju (protokoli IPSec, TLS, S/MIME, SET, XMLSec, SAML, XACML, WS-*). Za potrebe razvoja je potrebno poznavanje formalnih metod, kjer bomo spoznali metodo R. Rueppla, ki je primerna za uvod v to področje. Ta problematika se bo na koncu navezala na varnostno inženirstvo, konkretno na obvladovanje zasebnosti, vključno z najnovejšimi trendi, ki vključujejo internet stvari, računalništvo v oblaku in digitalni denar (BitCoin).

Rdeča nit predavanj bo sistematično pokrita s samostojnim delom študentov pri vajah. Prehajamo pa tudi na nov pristop k predavanjem,
kjer bodo ozko specializirani segmenti praktično izvedeni tudi pri predavanjih, npr. varnostne simulacije, varovanje elektronskih
dokumentov v okviru operativne PKI, itd. Še to - predmet predvideva seznanjenost s predmeti Računalniške komunikacije oz. Komunikacijski protokoli ter Brezžična in mobilna omrežja, ker ter močno nadgrajuje tematike, ki so v osnovnem obsegu podane pri teh redmetih. Predmet se izvaja v angleščini, v primeru, ko so prisotni samo slovenskih slušatelji pa lahko v slovenščini.

Hiter razvoj informacijske tehnologije omogoča oblikovanje, podajanje in dostopanje do informacij na interaktiven, hitrejši in bolj intuitiven način. To omogoča lažje obvladovanje in razumevanje vedno večjega obsega informacij. Pri predmetu Interaktivnost in oblikovanje informacij bodo obravnavani celostni pristopi k oblikovanju informacij (angl. information design), in oblikovanju interaktivnosti. Poudarek bo na računskih pristopih k učinkovitemu vidnemu sporočanju (jezik Processing) ter na razvoju interaktivnih rešitev, produktov in vmesnikov v hipermedijskih okoljih. Obravnavani bodo glavni vidiki oblikovanja informacij, od modelov vidnega zaznavanja, predstavitve informacij na vizualen način, do različnih vidikov interaktivnosti, tudi s pomočjo različnih vrst senzorjev. Spoznali bomo nekaj konkretnih primerov od interaktivnega digitalnega oglaševanja, analize gledanosti, pa do vizualizacije glasbe in interaktivnih novomedijskih umetniških instalacij.

Študenta želimo opremiti s sodobnim znanjem s področja teoretičnega računalništva. Snov bo podana strogo, toda s primerno mnogo podrobnostmi. Posebna skrb bo namenjena motiviranju, intuitivni razlagi in uporabi v praktičnem računalništvu.

Uvod: Algoritem intuitivno. Zgodovina: Kriza v matematiki 20. stoletja. Reševanje iz krize. Formalni sistemi. Hilbertov program. Godlova teorema. Uvod v izračunljivost: Kaj je algoritem in računanje? Računski modeli. Church-Turingova teza. Turingov stroj in univerzalni stroj. Neizračunljivost: Neizračunljivi problemi obstajajo. Primeri, uporaba in posledice na raznih področjih. Relativna izračunljivost in hierarhije. Avtomati, gramatike, jeziki: Končni avtomat, regularna gramatika in jezik. Skladovni avtomat, kontekstno neodvisna gramatika in jezik. Linearno omejeni avtomat, kontekstno odvisna gramatika in jezik. Hierarhija Chomskega. Primeri, uporaba in posledice na raznih področjih. Uvod v računsko zahtevnost: Prostorska, časovna in druge zahtevnosti. Lahki in težki problemi v praksi. Razreda P, NP in drugi. NP-polnost in njeno dokazovanje. Primeri, uporaba in posledice na raznih področjih. Obvladovanje težkih računskih problemov: Verjetnostno, aproksimativno in paralelno računanje. Interaktivno dokazovanje. Primeri, uporaba in posledice v praksi. Novejši pristopi: Kvantno računanje, obeti in težave.

Informacijska/računalniška varnost opisuje vse preventivne postopke in sredstva s katerimi zagotovimo dostop do informacijskih sistemov in njihove vsebine ter preprečimo njihovo nepooblaščeno uporabo. Med preventivnimi ukrepi nudi kriptografija največjo varnost oziroma zaščito glede na svojo prilagodljivost digitalnim medijem in s tem predstavlja osnovo informacijske družbe (cilji: zasebnost, celovitost podatkov, digitalno overjanje/podpisovanje, digitalni denar, in drugi kriptografski protokoli; obseg: matematika, računalništvo, elektrotehnika, finance, politika, obramba, itd.). Vsebina bo med drugim zajemala naslednja področja: simetrična kriptografija in zgoščevalne funkcije, kriptografija javnih ključev oziroma asimetična kriptografija, računalniška varnost.

Cilj predmeta se je naučiti razvoja
procesnih aplikacij – to so aplikacije, ki direktno podpirajo poslovne procese
v podjetjih. Imenujemo jih tudi kompozitne aplikacije. Razvoj procesnih
aplikacij postaja vedno bolj pomemben, saj želijo podjetja in organizacije
informacijsko podpreti procese kot celote in ne samo posameznih aktivnosti.
Procesne aplikacije razvijamo v izvedljivem BPMN (Executable BPMN) ali v BPEL
(Business Process Execution Language). Pri tem predmetu bomo spoznali dva
pomembna vidika: 1) načrtovanje in razvoj procesnih aplikacij in 2) SOA –
storitveno orientirano arhitekturo, ki ponuja osnovo za izvajanje procesnih
aplikacij. Poleg samih konceptov in pristopov, bomo spoznali, da procesne
aplikacije pomembno spreminjajo način razvoja, ki temelji na modeliranju
procesu, kompoziciji storitev, izvajanju in monitoriranju.

Veliko strokovnjakov je mnenja, da je razvoj procesnih oz. kompozitnih
aplikacij način, kako se bodo v prihodnosti razvijale poslovne aplikacije!

V okviru SOA bomo spoznali spletne storitve, procesne strežnike, ESB –
storitveno vodilo, registre in repozitorije, monitoriranje – BAM, upravljanje
identitet, SCA in SDO, uporabniške aktivnosti v poslovnih procesih: BPEL4People
in WS-HumanTask, standarde in specifikacije na področju poslovnih procesov:
NGOSS, eTom, CIM, ipd., ogrodja ključnih procesnih indikatorjev (KPI), itd.

Predmet je praktično orientiran, kar vključuje razvoj konkretnih procesnih
aplikacij v okviru vaj. Delali bomo na platformah IBM WebSphere BPM/SOA v8 ali
Oracle BPM/SOA Suite 12c.

V okviru predmeta bo najboljšim študentom omogočeno certificiranje za IBM
WebSphere BPM in/ali Oracle BPM/SOA Suite 12c.

Many
experts believe that the development of process applications is the future of
business application development.

In the
context of SOA we will get familiar with web services, process servers, ESB -
service bus, registries and repositories, business activity monitoring - BAM,
identity management, SCA and SDO, human workflow in business processes:
BPEL4People and WS-HumanTask, standards and specifications in the field of
business processes : NGOSS, eTOM, CIM, etc., frameworks of key process
indicators (KPIs), etc.

The course
is practically oriented, including the development of specific process
applications through exercises. We will work on IBM BPM and Oracle BPM / SOA
Suite platforms.

The course
will allow the best students to get certification for IBM BPM and/or Oracle BPM
/ SOA Suite.

Predavanja:

 

3D modeliranje

 

3D modeling

  1. polygon meshes, multiresolution meshes, simplification, optimization
  2. parametric surfaces, mesh conversion
  3. implicit surfaces, solids
  4. point based representations, mesh reconstruction

                                 

 

Rendering

  1. foundations of radio- and photometry, lighting, reflection
  2. advanced lighting models, BRDF, subsurface scattering
  3. global illumination: rendering equation, models for solutions
  4. Monte Carlo path tracing, Metropolis light transport, irradiance caching, photon mapping
  5. non-photorealistic rendering
  6. image-based rendering

 

 

Animation

  1. interpolation, kinematics
  2. motion capture: editing, retargeting, search, segmentation and classification
  3. dynamics: particle and mass-spring systems, animation of fluids, rigid bodies, deformable models
  4. crowd simulation
  5. facial animation

 

 

Scientific Visualization

  1. contour and isosurface rendering
  2. ray casting for volumetric rendering
  3. model-space rendering
  4. visualization of vector fields, liquids, texture advection

 

 

Laboratory:

Laboratory projects, where students implement their own solutions for visualization and animation of 3D models.
Predmet vsebuje različne napredne teme s področja zaznavanja gibanja z metodami računalniškega vida. Konkretna vsebina se bo letno prilagajala trendom na tem hitro razvijajočem se področju. Trenutne aktualne teme obsegajo:
1.    Pregled področja ocenjevanja gibanja in aplikacije.
2.    Ocenjevanje optičnega toka z metodami najmanjših kvadratov.
3.    Ocenjevanje optičnega toka z variacijskim računom.
4.    Sledenje s parametrično predlogo po postopku Lucas-Kanade.
5.    Sledenje s histogrami po postopku srednjega premika (Mean Shift).
6.    Sledenje s stohastično optimizacijo po postopku križne entropije.
7.    Rekurzivni Bayesovi filtri za sprotno ocenjevanje stanj.
8.    Sledenje s Kalmanovim filtrom.
9.    Sledenje s filtri z delci.
10.    Sledenje deformabilnih objektov s konstelacijskimi modeli.
11.    Metodologije primerjave sledilnikov.
12.    Sledenje s klasifikacijo.
13.    Metode dolgoročnega sledenja z detekcijo. 

V zadnjih štirih desetletjih so se nosilci procesiranja v digitalnih sistemih razvijali tako v smislu hitrosti delovanja, kot tudi v smislu miniaturizacije osnovnih procesnih entitet. Ob nadaljujočem se tovrstnem trendu bomo v bližnji prihodnosti dosegli nivo miniaturizacije, kjer bo vprašljivo zanesljivo obvladovanje dinamike osnovnih entitet zaradi drugačnih fizikalnih (kvantnih) zakonov, ki veljajo na tem nivoju. Ostali problemi, ki postajajo vse bolj pereči, so prevelika poraba električne energije na pridelano enote »koristne« informacije, slabe možnosti reciklaže računalniških sistemov, relativno velika cena procesnih naprav, itd. Vsi našteti problemi zavirajo prehod iz ere »namiznega« računalništva (angl. desktop computing), ki smo mu bili priča zadnjih 30 let, v ero »vseprisotnega« računalništva (angl. ubiquitous computing). Človek se že od izuma orodja obnaša analitično (angl. top-down approach). Slednje pomeni, da z orodji obdeluje materiale, s čimer troši energijo, zaloge materialov in ustvarja stranske – nekoristne produkte. Mnogi svetovni misleci opozarjajo, da je tak pristop preživet in da moramo preiti v sintezen odnos do razvoja dobrin (angl. bottom up approach), ki predvideva, da bomo produkte bodočnosti gradili iz primarnih entitet na osnovi avtomatiziranih postopkov. Vse navedeno daje področju računalništva neslutene možnosti razvoja na nova področja, kot so področja farmacije, medicine, gradbeništva, proizvodnje dobrin, itd. Iz slednjih razlogov se že danes iščejo alternativne procesne platforme, ki bi predhodno navedene probleme zaobšle in ponudile značilnosti sinteznega pristopa. V okviru predmeta bomo tako pregledali aktualne alternativne platforme procesiranja kot so kvantni celularni automati (angl. quantum dot cellular automata), DNK nosilci procesiranja, nanocevi (angl. nanotubes), optični nosilci procesiranja, itd. in pa tudi alternativne metode procesiranja, ki jih tovrstne platforme omogočajo. Med metodami si bomo ogledali kvantno procesiranje, reverzibilno procesiranje, večstanjsko procesiranje, amorfno procesiranje, itd.

Pri matematični analizi in in linearni algebri smo doslej nabrali veliko znanja, za katerega so nam povedali, da je zelo uporabno na različnih področjih. Vendar, ko želimo to znanje dejansko uporabiti, velikokrat naletimo na velikokrat nepremostljive težave: integrala ne znamo izračunati, funkcija, ki smo jo mukoma izračunali, je prezapletena za uporabo v realnem času, pa tudi rešitev diferencialne enačbe se nam le stežka posreči. Pri predmetu Numerična matematika si bomo najprej s praktičnega vidika (pa tudi z nekaj teorije bomo to podprli) ogledali, kako lahko učinkovito rešujemo sisteme linearnih, nelinearnih in diferencialnih enačb, računamo vrednosti integralov in odvodov ter kako lahko z enostavnejšimi funkcijami nadomestimo zapletene. Vseskozi bomo na praktičnih primerih preizkušali, kako s pomočjo računalnika to naše novo znanje lahko koristno uporabimo.

The course introduces techniques and procedures for analysis of biomedical signals and images like: cardiology signals (electrocardiogram - ECG), neurophysiology signals (electromyogram - EMG, electroencephalogram - EEG), medical images (autofluorescence images, computed tomography – CT images) with the emphasis on problems of biomedical researches. We will recognize how we can automatically, non-invasive and punctually, within 24-hour electrocardiogram signals, detect transient ischaemic disease, which is one of the most terrible heart diseases, and if we do not discover it punctually, it may lead to heart infarct. We will see how we can, using some non-linear signal processing techniques, analyze electromyograms recorded from the abdomen of a pregnant women, early during pregnancy (23 rd week), estimate, or try to predict, danger of pre-term birth. We will recognize techniques of analysis of 3-dimensional tomographic images with the aim of extraction and visualization of anatomic structures of human body organs. (We will also recognize techniques of analyzing electroencephalographic signals, which are recorded from the head of a person, with the aim of human-computer interaction, without using classic input devices.) The topics cover: representation of international standardized databases of signal samples (LTST DB, MIT-BIH DB, TPEHG DB, TPEHGT DS, EEGMMI DS, BCI DB, CTIMG DB), techniques of feature extraction from signals and images (principal components, Karhunen-Loeve transform, sample entropy, contour extraction), noise extraction, techniques of visualization of diagnostic and morphology feature-vector time series, and anatomic structures, analysis of feature-vector time series, spectral analysis, modeling, event detection, clustering, classifications, as well as metrics, techniques and protocols for performance and robustness evaluation of biomedical computer systems.

Vsebina predmeta temelji na izboru sodobnih statističnih tehnik obdelave naravnega jezika podkrepljenih s praktično rabo. V predavanjih predstavimo glavne pristope in pojasnimo delovanje posameznih metod in njihovo teoretično ozadje. V okviru laboratorijskih vaj znanje povežemo s praktično rabo in ga utrdimo z uporabo odprtokodnih sistemov za obdelavo naravnega jezika. Študenti rešujejo naloge, ki temeljijo na realnih raziskovalnih in praktičnih problemih, pretežno v slovenskem in angleškem jeziku.

1.    Uvod: motivacija, razumevanje jezika, Turingov test, tradicionalni in statističen pristop.
2.    Jezikovni viri: korpusi, slovarji, tezavri, omrežja in semantične baze, pregled orodij.
3.    Lingvistika: fonologija in morfologija, sintaktična analiza, formalne gramatike.
4.    Uporaba avtomatov in gramatik: avtomati in algoritmi za iskanje nizov, prepoznavanje sintakse,  gramatično razčlenjevanje.
5.    Oblikoslovno označevanje besedil: vrste oznak, lematizacija, ngrami, skriti markovski model, označevanje s pravili.
6.     Računska in leksikalna semantika: predstavitve pomena, metode s pravili, leksikalna semantika.
7.    Razvrščanje besedil in mere podobnosti: kosinusna razdalja, jezikovna omrežja in grafi, WordNet, vektorska predstavitev, uteževanje vektorjev, semantična korelacija.
8.    Tekstovno rudarjenje: prilagojene klasifikacijske metode, metoda podpornih vektorjev na dokumentih, izbira atributov.
9.    Globoka omrežja in besedila: predstavitev besedil za uporabo v globokih nevronskih mrežah, avtoenkoderji, rekurzivne nevronske mreže.
10.    Povzemanje: predstavitve besedil, matrična faktorizacija, ekstrakcijske metode, povpraševane metode.
11.    Strojno prevajanje: jezikovni model, prevajalni model, poravnava jezikov, parametri modelov, izzivi v prevajanju.
12.    Dopolnjevanje besedil z drugimi viri informacij: heterogena omrežja, predstavitev word2vec, heterogeni ansambli klasifikatorjev, analiza povezav.
13.    Metodologija in evalvacija pri obdelavi naravnega jezika.

Sodobni poslovni sistemi zahtevajo poleg poznavanja informacijske tehnologije (IT) tudi poznavanje poslovanja in s tem doseganje poslovnih učinkov s pomočjo informacijske tehnologije. Vse ankete med poslovneži kažejo, da pri naših diplomantih pogrešajo predvsem povezano obravnavanje poslovanja in informacijske tehnologije ter njenega vpliva na poslovno uspešnost. Posebej pomembna je vloga informatikov pri prenovi poslovnih sistemov ter organizaciji in vodenju funkcije informatike. Pri predmetu bomo spoznali vlogo poslovno informacijske arhitekture (PIA) pri celovitem obvladovanju poslovnega in njegovega informacijskega sistema ter sodobna ogrodja(TOGAF, ArchiMate…), metode in orodja za njeno vzpostavitev in vzdrževanje. Poslovno informacijska arhitektura daje celovit pogled na delovanje poslovnega sistema in njegovo sodelovanje navzven in je kot takšna sredstvo za učinkovitejšo komunikacijo, planiranje in obvladovanje znanja v poslovnem sistemu. Podpira tudi bolj informirano odločanje o vplivu različnih sprememb na posamezne gradnike arhitekture na vseh treh plasteh: poslovni, informacijski in tehnološki (npr. kako se nov poslovni cilj odraža v izvajanju poslovnih procesov in nadalje informacijski podpori procesov) ter zagotavlja zveznost in skladnost posameznih delov poslovnega sistema ter njihovo usmerjeno delovanje za doseganje skupnih ciljev poslovnega sistema. Predstavljena bo organiziranost funkcije informatike v poslovnem sistemu. Spoznali bomo ogrodja in najboljše prakse upravljanja procesov informatike (Cobit, ITIL, CMM), s poudarkom na procesu strateškega planiranja informatike, katerega cilj je med drugim zagotoviti skladnost področja informatike s poslovno strategijo. Znanja, pridobljena pri predmetu, so nepogrešljiva za vodje informatike, IT arhitekte in druge deležnike, ki sodelujejo pri povezanem modeliranju poslovnega sistema oziroma njegovega informacijskega sistema, pripravi in usklajevanju poslovne strategije in strategije informatike ter prenovi poslovnih in informacijskih sistemov.

Pri predmetu bomo v teoriji in na praktičnih primerih spoznavali tehnike odkrivanja znanj iz podatkov (angl. data mining). Če bo le možno, pri predmetu sodelujemo na mednarodnem tekmovanju s področja analize podatkov, tipično s portala Kaggle. Za izbrano tekmovanje na predavanjih v teoriji spoznamo ustrezne tehnike podatkovne analitike, poznavanje teh učvrstimo z implementacijami v projektnih domačih nalogih, nato pa se samostojno ali v manjših skupinah lotimo naloge iz tekmovanja. Pri tem uporabljamo skriptna orodja v jeziku Python in knjižnice za podatkovno analitiko, kot so numpy, scikit-learn, Orange, Keras in knjižnice za vizualizacijo podatkov kot je matplotlib. Če so problemi računsko zahtevni, imamo na voljo strojno opremo za vzporedno izvajanje programske kode.

Med tipičnimi tehnikami, ki smo ji spoznavali pri izvedbah predmeta v preteklih letih, so bile metode za ocenjevanje podobnosti med primeri podatkov, metode razvrščanja v skupine, tehnike za uvrščanje v skupine (logistična regresija, nevronske mreže, gozdovi klasifikacijskih dreves), globoko učenje in tehnike izbora značilk, ali pa metode za gradnjo priporočilnih sistemov. Pri predmetu precej programiramo, spoznavamo matematične osnove strojnega učenja, in vsakih štirinajst dni pripravimo poročilo v obliki domače naloge. Delo pri predmetu je intenzivno in sprotno, ocene domačih nalog nadomestijo pisni izpit, ustnega izpita ni. Predavanja skušamo prepletati z vajami, če je le možno, vse skupaj izvedemo v računalniški učilnici in skupaj razvijamo dele programske kode ali pa debatiramo o posledicah sprememb algoritmičnih pristopov in parametrov posameznih metod.

Potrebna predznanja: pogoj za vpis na predmet je uspešno opravljen prvostopenjski predmet Uvod v odkrivanje znanj iz podatkov (do 2016/17 poimenovan Poslovna inteligenca). Študenti druge stopnje lahko predmet Poslovna inteligenca izberejo v prvem semestru in potem v drugem semestru nadaljujejo s predmetom Odkrivanje znanj iz podatkov.

Študenti imajo morda napačen vtis, da so algoritmi in podatkovne strukture znanost o postopkih urejanja in obratih uravnoteženih dreves. Prva naloga predmeta je odpraviti ta škodljivi vtis in pokazati, da so drevesa, bisekcija, teorija informacij, dvojiški številski sistem, končni avtomati in celo rekurzija (ta sploh!) najbolj vsakdanje reči na svetu.

Predmet daje slušateljem intuitivnejše razumevanje računalniških konceptov, usposablja pa jih tudi za poučevanje teh tem. Videli bomo, kako vse to razlagati tako intuitivno in preprosto, da je razumljivo celo desetletnemu otroku: končni avtomati postanejo iskanje otoka zakladov, NP-polne probleme predstavimo s piranskimi sladoledarji, strojno učenje pa razložimo z računalnikom, sestavljenim iz bonbonov.

V okviru predmeta bodo morali študenti pripraviti materiale za izvedbo tehničnih dni, krožkov ali podobnih materialov za osnovnošolce, srednješolce ali odrasle neračunalnikarje in te stvari tudi dejansko preskusiti v razredu, na poletni šoli ali drugem podobnem dogodku. Od študentov se torej pričakuje nekaj žilice za delo z otroki.

Verjetno je eden največjih čarov računalništva in informatike, da se pojavlja tako pogosto v povezavi z drugimi vedami in digitalna forenzika je še eno od teh področij. Digitalna forenzika je veja forenzične znanosti, ki se ukvarja z zajemom in obnovo podatkov, katere najdemo v digitalnih napravah. Slednji so pogosto povezani z računalniškim kriminalom. Predmet bo razdeljen na dva dela. V prvem si bomo ogledali osnove, ki jih moramo upoštevati pri izvajanju digitalne forenzike, da bo dokaz verodostojen. V drugem in večjem delu se bomo sprehodili skozi različne operacijske sisteme in omrežne tehnologije. Pri tem se bomo srečali s tehnološkimi postopki, ki omogočajo zajem forenzičnih podatkov.

Študentove obveznosti sestoje iz domačih nalog (kvizi), laboratorijske domače naloge, kjer simulirajo izvedbo forenzične preiskave, in seminarske naloge, kjer se srečajo z najnovejšimi dognanji stroke.

Želite znati razviti nove zvočne efekte ali kreirati povsem nove zvoke? Vas mika vašo glasbeno stvaritev narediti vse do točke, ko se ta lahko ponudi na iTunes ali Amazon.com?  Želite razviti novo programsko rešitev za avdio storitve na vaši mobilni platformi in jo ponuditi na Google market? Ali pa želite spoznati, kako človek dojema glasbo in se podati v znanstvene vode na tem področju? Potem ste dobrodošli pri predmetu Računalniška zvočna produkcija.

Sodobni e-mediji poleg vizualne komponente temeljijo na zvočni komponenti. Cilj predmeta je, da študentje tehničnih, pa tudi drugih usmeritev pridobijo in osvojijo teoretična in praktična znanja na področju računalniškega inženirstva zvoka tako za tehnične, kot tudi druge namene uporabe v produkcijskem (studijskem), razvojnem (inženirskem) in kreativnem okolju (multimediji, film, računalniške igre, interaktivni vmesniki, navidezna resničnost). Uvodu in zgodovinskemu pregledu področja bo sledila obravnava fizikalnih temeljev, matematičnega aparata (od Fourierove analize do Gaborjevega zvočnega kvanta) in fizioloških specifik (psiho-akustike z zakonitostmi slušne percepcije, kjer je v središču zvočna slika, kot se vzpostavi v možganih). Zatem bo na vrsti obravnava elektronskih in omrežnih vidikov procesiranja: analogni in digitalni signal, pasovna širina medija, ojačitev in slabenje, analogno digitalna in digitalno analogna pretvorba, kvantizacijski šum, popačenja in postopki zajemanja zvoka. Nato bomo obravnavali elektronske naprave za generiranje zvoka (sintetizatorje, vzorčevalnike), naprave za računalniško zajemanje zvoka, to je zajem meta-kodiranega zvoka (sekvencerji) in zajem vzorčenega zvoka (za potrebe npr. neposrednega snemanja, angl. direct-to-disc recording). Vključili bomo tudi standardne studijske komponente kot so mešalniki, omejevalniki (limiterji), kompresorji, reverberatorji, izravnalniki (ekvilizatorji). V drugem delu bomo obravnavali protokole in algoritme v zvočni produkciji: MIDI, IEC-60958 (AES / EBU), S/PDIF, AC-3, ter sinhronizacijske mehanizme MTC in SMPTE za integracijo z videom in filmom. Sledila bo obravnava programskih standardov (vmesnikov) VST / Steinberg in DirectX / MS. Nato bodo podani formati zapisov (Wav, MP3) ter načini sodobne zvočne reprodukcije (omrežni tokovniki in protokoli RTP, RTCP, RTSP). Sledila bo obravnava digitalnih avdio delovnih postaj (Steinberg Cubase in Twelve Tone Systems Sonar, odprtokodne rešitve) in principov sinteze zvoka. Ob zaključku predmeta bomo imeli profesionalne video lekcije s področja studijskega dela (od snemanja do mešanja in končne produkcije). Opcijsko bomo obravnavali možnosti kreativne uporabe znanj za npr. vizualizacijo glasbe in strojno podprto ustvarjanje glasbe.

Na vajah bodo študentje samostojno izdelali rešitve, ki bodo usklajene s posameznimi sklopi zgoraj navedenih področij. Vendar tudi s
predavanji prehajamo na nov koncept, kjer bodo določeni specializirani segmenti predmeta praktično izvedeni tudi na predavanjih (npr.
razumevanje teoretičnih temeljev s pomočjo programskih paketov a'la Mathematica oz. Mathlab, generiranje "zvočnih fontov" za
sekvencerje MIDI, kreiranje glasbene skladbe v formatu MIDI, snemanje in končna produkcija). Še to - predmet ne zahteva posebnih 
predznanj (razen visokošolske matematike), dobrodošlo pa je poznavanje multimedijev. Predmet se izvaja v angleščini, v primeru, ko so
prisotni samo slovenskih slušatelji pa lahko v slovenščini.

Cilj predmeta je pridobiti znanja za razvoj inovativnih računalniških storitev in aplikacij, ki se izvajajo v oblaku (Cloud). Računalništvo v oblaku pomembno spreminja načine razvoja aplikacij in pri predmetu se bomo spoznali s koncepti, arhitekturami in tehnologijami za oblak – s tako imenovano cloud-native arhitekturo.
Poleg tega, da bomo osvojili poglobljeno znanje in poznavanje področja računalništva v oblaku in vseh nivojev storitvene usmerjenosti (XaaS; Iaas, PaaS in SaaS), bomo podrobno spoznali arhitekturni model, vzorce in najboljše prakse za razvoj cloud-native aplikacij, kar vključuje množico konceptov.
Začeli bomo z arhitekturo mikrostoritev in podrobno spoznali razvojne vzorce za mikrostoritve. To bomo združili z vsebniki (conatinerji) Docker (in ostalimi) ter mikro-kerneli. Spoznali se bomo z orodji za orkestracijo vsebnikov, predvsem Kubernetes (in ostalimi).
Nadaljevali bomo s spoznavanjem konceptov cloud-native arhitekture: storitvami, asinhronimi vzorci klicanja storitev, prekinjevalci toka, reaktivnim modelom razvoja mikrostoritev, pretočnimi dogodki (event streaming aka Apache Kafka), konfiguracijo, odkrivanjem storitev (service discovery), preverjanjem vitalnosti (health check), metrikami, varnostjo, odpornostjo na napake in drugimi.
Cilj bo razumeti in razviti oblačne aplikacije, ki se izvajajo na odporni in elastični (resilient and elastic) oblačni infrastrukturi in platformi in razumeti, kako te aplikacije delujejo in kako jih nameščamo na različne ponudnike oblačnih storitev (Amazon AWS, Google AppEngine, Microsoft Azure, Cloud Foundry in druge). V okviru predmeta se bomo spoznali z najpopularnejšimi PaaS platformami. Spoznali bomo koncepte zasebnih, javnih in hibridnih oblakov. Prav tako bomo vzpostavili lasten zasebni/hibridni računalniški oblak.
Obenem se bomo spoznali s praksami DevOps, ki so nujne za razvoj oblačnih rešitev ter spoznali koncepte in projekte CNCF (Cloud Native Computing Foundation), kot so Kubernetes, Prometheus, OpenTracing, Fluentd, Istio, Linkerd, gRPC in druge.
Predmet je praktično orientiran. V okviru vaj bodo študenti v skupinah razvijali inovativne oblačne rešitve z uporabo ogrodij, kot so Spring Boot, KumuluzEE, Node.js, Docker, Kubernetes, Prometheus ter oblake AWS, AppEngine, Azure in druge. Razumeli bodo pomen inovacij v oblaku.
Najboljši študenti bodo imeli možnost sodelovati na inovativnih projektih.

•    Sistemi in sistemska teorija
•    Principi vodenja in teorija vodenja
•    Hierarhija sistemov vodenja
•    Industrijski merilni sistemi
•    Izvršni sistemi v vodenju procesov
•    Vmesniki in signalne povezave
•    Industrijski komunikacijski protokoli
•    Programirljivi logični krmilniki
•    Standardni programski jeziki za programiranje logičnih krmilnikov
•    Regulacija procesov: osnove, regulator PID
•    Moderni pristopi k regulaciji: mehka logika, učeči sistemi
•    Naprave za komunikacijo s človekom
•    Standard OPC
•    Namen in funkcije nadzornih sistemov MES
•    Varnost
•    Dokumentacija

Računska topologija je dokaj novo področje, nekje med računalništvom in matematiko. Na matematični strani je tesno povezano s topologijo. Topologija pa je bolj ohlapna oblika geometrije, kjer nas velikosti, razdalje, koti in druge številske lastnosti objektov pravzaprav ne zanimajo. Zanimajo pa nas bolj kvalitativni opisi oblik kot so število ločenih kosov, številov tunelov in lukenj različnih oblik ipd. Zaradi tega so se topološki prijemi pokazali kot zelo koristni pri problemih, kjer je prevelika natančnost nepotrebna ali celo škodljiva. Topološke metode uporabljamo na primer pri analizi velikhi podatkovnih množic, pri modeliranju omrežij, rekonstrukciji obljektov iz vzorca točk, načrtovanju poti robotov in razdeljevanju poslov med procesorji.

Velik poudarek pri predmetu bo na študentiskih projektih. Opisali bomo več tipičnih problemov, ki so primerni za topološko modeliranje in analizo in ob njihovem reševanju spoznali osnovne topološke pojme, strukture in algoritme, ki jih bomo tudi preizkusili na konkretnih podatkih.

Strokovnjaki s področja računalništva navdih za reševanje aktualnih problemov iščejo v različnih virih. Povsem logično je, da inspiracijo za marsikatero rešitev najdejo v naravi, saj so zaradi evolucije organizmi v naravi razvili izjemne metode za reševanje različnih problemov, s katerimi se soočajo vsak dan. Posledica tega je, da mnogo zelo znanih algoritmov za reševanje kompleksnih problemov posnema obnašanje organizmov v naravi. Tako na primer eden od algoritmov za iskanje najkrajše poti posnema obnašanje mravelj, sistem za hitro vzpostavitev mobilnega brezžičnega omrežja pa imitira letenje ptic v jati. Cilj predmeta je študentom predstaviti uporabo znanj o delovanju narave in živih organizmov pri izgradnji računalniških sistemov ali algoritmov. Poleg konkretnega znanja bodo študenti dobili tudi teoretično ozadje, s čimer se bodo lažje prilagajali hitrim spremembam v današnji računalniški industriji. Spretnosti, pridobljene pri predmetu, so prenosljive, saj so predstavljene metode uporabne na zelo širokem spektru področij. Z naučenimi tehnikami si bodo študenti lahko pomagali tudi pri ostalih predmetih študija oziroma pri morebitni nadaljnji računalniški karieri, tako na doktorskem študiju kot v industriji.

 

Pregled vsebine predavanj:

1.                 

 

Lectures overview:

1.                  Introductory lecture (motivation, fuzzy logic, biomimicry, collective behaviour)

2.                  Cinder++ (C++ API for creative coding, OpenGL)

3.-7.     Fuzzy logic (fuzzy sets, membership functions, FIS, time and fuzzy logic, fuzzy arithmetic, fuzzy type 2, use cases)

8-12.    Autonomous agents and collective behaviour (modelling and simulation of collective behaviour, particle systems, boids, SPP model, animats, modelling perception, drives, action selection, verification)

13-15.  Artificial life and artificial worlds (learning agents, learning collective behaviour, framstics, stickyfeet, fuzzy evolution and fuzzy genetic algorithms)

 

Lab work:

Group project in modelling and simulation related to the topics covered in the course.

Raziskave kažejo, da velik del projektov, ki se ukvarjajo z razvojem programske opreme (od 60 do 80%) projektov prekoračuje stroške, zamuja roke in ponuja manj funkcionalnosti, kot je bilo prvotno predvideno. Zato je stalno prisotno iskanje novih postopkov, metod in orodij, s pomočjo katerih bi odpravili omenjene probleme. Kot obetavna možnost so se okoli leta 2000 pojavile agilne metode, ki se množično uveljavljajo med razvijalci programske opreme. V literaturi lahko preberemo, da agilne metode omogočajo bistveno povečanje produktivnosti razvijalcev, večjo kakovost programske opreme, večje zadovoljstvo vseh sodelujočih, boljši vpogled v potek dela in večjo zmožnost prilagajanja spremembam v zahtevah uporabnikov. V zadnjem času je prisotna zamisel o nadgradnji agilnih metod s koncepti vitke proizvodnje, kar naj bi še izboljšalo postopek razvoja programske opreme. Temu trendu sledi tudi vsebina predmeta, ki se osredotoča na metodi Scrumban in Kanban kot tipični predstavnici tega trenda. Uporaba teh metod je prikazana skozi praktično delo na (skoraj) realnem projektu, ki služi kot študija primera (case study) za empirično ovrednotenje razvojnega postopka in njegovih rezultatov. Delo poteka v skupinah, zato predmet prispeva tudi k pridobivanju dodatnih spretnosti, kot so sposobnost za skupinsko delo, organizacijo in vodenje, komuniciranje z naročnikom, pripravo predstavitev ipd.

In order to address these issues, new processes, methods, techniques, and tools are constantly searched for possible use in software engineering practice. Around 2000, agile methods appeared as a viable solution that has been gaining wide acceptance among software developers. It is reported that agile methods significantly improve productivity, quality, stakeholder satisfaction, visibility and adaptation to changing user requirements. More recently, the idea of upgrading agile methods with concepts of lean manufacturing has emerged that promises further improvements in the software development process. Following this trend, the course concentrates on Scrumban and Kanban as two typical methods of this kind. Both methods are introduced through practical work on a quasi-real project, which also serves as a case study for empirical evaluation of the new approach and its results. The project requires students to work in groups, thus enabling project-based collaborative learning, which is not only beneficial for mastering agile and lean concepts, but also helps students in developing transferrable skills like teamwork, organization and management, communication and presentation skills, working with customer, etc.


Strojno učenje (angl. machine learning) se uporablja v industriji, medicini, ekonomiji itd. za analizo podatkov in odkrivanje zakonitosti v podatkovnih bazah, podatkovno rudarjenje (angl. data mining), za generiranje baz znanja za ekspertne sisteme, za učenje prepoznavanja in predikcij, igranje iger, za razpoznavanje naravnega jezika in prevajanje, klasifikacijo tekstov in rudarjenje na svetovnem spletu, za nadzor dinamičnih procesov, razpoznavanje govora, pisave, slik itd. Osnovni princip strojnega učenja je opisovanje (modeliranje) pojavov iz podatkov. Rezultat učenja so lahko pravila, funkcije, relacije, sistemi enačb, verjetnostne porazdelitve ipd. Naučeni modeli poskušajo razlagati podatke in se lahko uporabijo za odločanje pri opazovanju modeliranega procesa v bodočnosti. Cilj predmeta je predstaviti teoretične osnove in osnovne principe metod strojnega učenja, osnovne algoritme strojnega učenja in njihove uporabe v praksi za iskanje zakonitosti iz podatkov ter za učenje klasifikacijskih in regresijskih modelov. Študenti bodo teoretično znanje praktično uporabili na realnih problemih iz znanstvenega in poslovnega okolja.

Povzetek vsebine: kWhat
is learning and relation between learning and intelligence, ML basics, Advanced
attribute evaluation measures, Advanced methods for estimating performance of
ML, Advanced visualization methods, Combining ML algorithms, Bayesian learning,
Calibration of probabilities, Explanation of individual predictions, Numerical
ML methods, Artificial neural networks: RBF, Deep NN, Unsupervised learning:
clustering, Association rules, Estimating the reliability of individual
predictions, Text mining, Matrix factorization, Arcehtypal analysis, ML as data
compression, active learning, user porfiling and recommendation systems, ILP, Introduction
to learning theory.

Practical part is in the form of solving problems and web quizzes and completing the seminar work. Assistant is available for consultations. The grade of practical work is the grade of the seminar work. The precondition for passing practical work is achieving at least 50% of points in web quizzes.

The final course grade consists of practical work grade (50%) and exam (50%). On the written exam students need to achieve at least 50% of points. 


Ta predmet obravnava izbrane ideje in metode umetne inteligence, ki so posebej zanimive ali praktično uporabne. Te metode so zato pomembne s stališča zahtevnejše uporabe računalnikov, pa tudi kot modeli delovanja inteligence pri ljudeh. Našli bomo odgovore na spodnja vprašanja:

  • Kako sestaviti plan za dano nalogo, ki jo skupaj rešuje množica agentov, npr. robotov ali drugih naprav, kjer lahko operacije potekajo sočasno? Na take probleme naletimo v logistiki, izdelavi urnikov ali organizaciji obsežnih operacij.
  • Kako se lahko agent, npr. robot, v povsem neznanem okolju nauči dosegati svoje cilje, pri čemer mora obenem odkriti tudi zakonitosti svojega okolja?
  • Kako lahko računalnik avtomatsko sestavi nov program, če so podani le primeri podatkov in rezultatov tega programa? Spoznali bomo algoritme za avtomatsko programiranje s primeri.
  • Kako lahko rešujemo optimizacijske probleme po vzoru naravne evolucije -- z naravno selekcijo, kjer preživijo le najboljši? Na tem principu delujejo genetski algoritmi.
  • Kako lahko računalnik po »zdravi pameti« predvidi potek dogodkov, kot ljudje v vsakdanjem življenju: brez števil, diferencialnih enačb in numeričnih fizikalnih modelov? Navadno za vsakdanje življenje zadošča »naivna«, intuitivna fizika, ki se je naučijo že otroci iz vsakdanjih izkušenj.

Vsebina: prostorsko učinkoviti preiskovalni algoritmi, učinkovito planiranje z delno urejenostjo, spodbujevano učenje, genetski algoritmi, kvalitativno sklepanje in modeliranje, induktivno logično programiranje, meje učljivosti – česa se je v omejenem času možno naučiti in česa ne.

Kako podobna so si med seboj živa bitja? Smo ljudje res potomci neandertalcev? Kako so se živalske vrste lahko prilagodile na življenjska okolja? Kateri geni so odgovorni za pojav različnih bolezni? Zakaj vsako leto potrebujemo drugo cepivo proti gripi? Današnja biologija je polna zanimivih vprašanj in nikoli prej nismo bili tako blizu odgovorom.

Nedavno razvite eksperimentalne biotehnologije omogočajo pridobivanje velikih količine eksperimentalnih podatkov: o genomih različnih vrst in osebkov, o genskih izrazih, koncentracij proteinov, vplivih učinkovin na delovanje celice, ipd. Tovrstni podatki so danes dostopni v javnih spletnih podatkovnih bazah in jih je potrebno statistično in matematično obdelati, v njih poiskati skrite vzorce in jih primeren način prikazati. Temu so namenjena orodja bioinformatike, področja, brez katerega danes ne bi mogli več odgovoriti niti na eno od zgoraj zapisanih vprašanj. Gre za interdisciplinarno področje, ki združuje metode iz statistike, matematike, vizualizacije podatkov in odkrivanja znanj iz podatkov.

Pri predmetu si bomo v teoriji in predvsem na praktičnih primerih ogledali osnovne bioinformatične pristope kot so analiza in poravnava nukleotidnih zaporedij, markovske verige, filogenetska analiza in računski pristopi k odkrivanju evolucijskih dreves, analiza genskih izrazov in medicinska prognostika in diagnostika na podlagi podatkih pridobljenimi z visokoprepustnimi tehnikami v molekularni biologiji. Predznanja iz molekularne in celične biologije ter genetike za obiskovanje predmeta niso potrebna. Osnovne molekularne biologije bomo pri sproti uvajali in podajali na računalnikarjem razumljiv in zanimiv način.

V 21. stoletju
postaja naša civilizacija ena sama globalna, na podatkih temelječa, družba.
Vsepovsod zbiramo ogromne količine podatkov, od tradicionalnih področij, kot so
tovarne, zdravstvo in znanost, do popolnoma novih, kot so kmetijstvo, osebi senzorji,
hišni merilniki, pametni mobilniki in kuhinjski pripomočki, promet, avtomobili
in seveda internet z ogromnimi zbirkami številskih in tekstovnih podatkov.
Vendar pa podatki sami ne pomenijo ničesar. Zanimajo nas v njih skriti vzorci
in znanje, ki nam omogoča, da razumemo trende in se odločamo pametneje.

Data mining
is an
interdisciplinary approach to knowledge discovery. It helps us handle enormous
quantities of data and exploit data diversity. It encompasses many ideas and
methods from machine learning, statistics, artificial intelligence, and
databases. Many solutions from this field are already part of everyday life. For
example, contents of shop shelves is optimized according to preferences of
customers which articles to buy together. Internet search engines display hits different
for each individual according to the pages they visit and clicks in their
social network activities. Traffic lights in cities are tuned to traffic density
patterns. Medical treatment guidelines are formed according to the history of
successful recoveries. Insurance companies detect fraudulent claims. Various
“big brothers” detect terrorist groups, etc.

The course contents offers a review of up to date
applicative knowledge. The lectures introduce main approaches without
theoretical background. Some important types of data reviewed, like tables,
text, networks, and surveys. For many fields comprehensibility of prediction
models is very important and want to understand the causes for different
phenomena.  Therefore course tackles visualization
of data, trends, patterns, and predictive models. In the lab work the gained
knowledge will be put into practice by using open-source data mining and
visualization tools.

As a saying
goes: we are drowning in data and starving for knowledge. This course can throw
you a life belt and help you swim in the sea of data. It will also teach you
how to harvest some knowledge, so that you don’t starve any more.

Kreditne točke pri predmetu Obštudijska strokovna dejavnost lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.

Orodja za analizo velikih podatkovnih baz

Pregledali bomo algoritme strojnega učenja in iskanja znanja v podatkih, ki zmorejo obdelati zelo velike količine podatkov. Poudarek bo na postopku "Map-Reduce" za ustvarjanje vzporednih algoritmov.

Med drugim bomo obravnavali: pogosto ponavlajoče se stvari v košaricah in povezovalna pravila, učinkovito iskanje sosedov v velikih podatkih, zgoščevanje s sosednostjo (LSH), zmanjševanje dimenzionalnosti, priporočilne sisteme, odkrivanje skupin v podatkih, analiza povezav (PageRank), nadzorovano strojno učenje na velikih podatkih, učenje s podatkovnih tokov, iskanje znanja v strukturiranih virih na spletu in spletno oglašanje.

Termin  izvajanja: 7. 1. 2019 do 15. 3. 2019.


Schedule: This course starts in the beginning of
January. We will follow a weekly schedule which means that you will also
have to do homework assignment during exam break.

The
course will discuss data mining and machine learning algorithms for
analyzing very large amounts of data. The emphasis will be on Map Reduce
as a tool for creating parallel algorithms that can process very large
amounts of data.

Topics include: Frequent itemsets and
Association rules, Near Neighbor Search in High Dimensional Data,
Locality Sensitive Hashing (LSH), Dimensionality reduction,
Recommendation Systems, Clustering, Link Analysis (PageRank), Large
scale supervised machine learning, Data streams, Mining the Web for
Structured Data, Relation extraction and Web Advertising.

Term of implementation: 7. 1. 2019 to 15. 3. 2019.

Kreditne točke pri predmetu Obštudijska strokovna dejavnost lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.

Business Intelligence and Data Science Aspects in Practice 

The course will include selected advanced topics in:

1.       Business Intelligence (BI) and Data Warehouse (DW) Systems in organization and business

2.       Characteristics, tasks, architectures, and application domains of BI and DW systems

3.       Strategic planning and development process of DW and BI systems

4.       Requirement specification of a DW & BI project work

5.       Database schema design for DW systems

6.       Physical database structures and operational performances of DW systems

7.       Extraction, Transforming and Loading (ETL) process in DW systems

8.       Aggregated data in DW systems

9.       Decision Support Systems (DSS), Data Analytics, Business Reporting, and application domains for BI and DW systems

10.   On-Line Analytical Processing (OLAP) – Concepts, Architectures and SQL capabilities

11.   Big Data and Data Analytics Thinking

12.   Data Science, Data Engineering and Data-Driven Decision Making

13.   Data Mining process and techniques for BI and Data Science

14.   Data Science and Business Strategy

15.   Design specification of a DW & BI project work

A Course on Algebraic Coding Theory

  •  Bayesian methods: Gaussian processes, Dirichlet processes, MCMC methods, variational inference.
  • Deep learning: Boltzmann machines, Autoencoders, Convolutional neural networks.
  • Computational learning theory: PAC learning, VC dimension.
  • Other select topics: multi-kernel learning, multi-task learning, reinforcement learning.

Napovedovanje: linearna regresija, logistična regresija, LDA/QDA, metoda najbližjih sosedov, ocene prileganja modela.
Izbira spremenljivk in modelov: prečno preverjanje, metoda bootstrap, metode filter in wrapper.
Napredni napovedovanje: bazne funkcije, zlepki, regularizacija, odločitvena drevesa, posplošeni aditivni modeli, lokalna regresija.

Združevanje modelov: bagging, boosting, naključni gozdovi, učenje z ansamblom modelov.

Metoda podpornih vektorjev: za regresijo, za klasifikacijo , optimizacija, dualnost, RKHS.

Nevronske mreže:fitting neural networks, overfitting and other computational challenges.

Splošne teme (III)

Študent opravi pregled sorodnih raziskav za izbrano raziskovalno temo s področja računalništva in informatike, ki naj sovpada z načrtovano temo doktorskega dela. Pri tem prebere in povzame vsaj trideset znanstveno-raziskovalnih člankov iz ožjega in širšega raziskovalnega področja, napiše pregledni seminar, ki ga predstavi ustno ostalim doktorskim študentom.

The aim of the course is to write a review seminar on a topic that is related to the planned PhD. thesis. An important goal is to present the seminar in front of peers. This way, doctoral students become acquainted with different presentation techniques and styles. They become familiar with the research area of their colleagues, and learn about broader themes in the field of computer and information science. Compulsory attendance of this course and presence at seminars promotes bonding among students and faculty.


In Seminar II students become acquainted with the paper publication procedure and its presentation on the locally organized conference. Besides writing and submitting a paper, students are included into the conference reviewing procedure, where they play an active role as the conference program members. Each student therefore performs the tasks of  bidding for the papers, reviewing assigned papers, submitting a revision of the paper, incorporating reviewers' comments and publicly presenting the paper. The presentations take place in front of the audience formed of all Ph.D. students of first and second year. The presentations are moderated and commented on by an instructor.

For the majority of doctoral students this seminar is their first oportunity to write a scientific paper. The course therefore represents a good exercise which provides a base for the later practice.   

The aims of Seminar IV are similar to Seminar II. In this course students also prepare a paper, submit it to a locally organized conference, bid for papers reviews, review assigned papers and publicly present the paper. The presentations take place in front of the audience formed of all Ph.D. students of first and second year. The presentations are moderated and commented on by an instructor.

Since the students are already familiar with the bases of scientific publishing, in this course the quality of their papers is progressed to a level which is sufficient for submitting to an international conference or into a scientific journals.  

Literature:

  • Bourne PE (2005) Ten simple rules for getting published, PLoS Computational Biology 1(5): e57.
  • Bourne PE (2007) Ten simple rules for making good oral presentations, PLoS Computational Biology 3(4): e77.
  • Bourne PE, Korngreen A (2006) Ten simple rules for reviewers, PLoS Computational Biology 2(0): e110.

Študent dodatno nadgradi pregled sorodnih raziskav s področja doktorskega dela, ki jih je opravil v okviru Seminarja 1. Pri tem prebere vsaj trideset sorodnih znanstveno-raziskovalnih člankov, ki se lahko razlikujejo od člankov, o katerih je poročal pri Seminarju 1. Članke povzame v zelo strnjeni obliki in jih poveže z lastnim raziskovalnim delom. Poudarek je predvsem na primerjavi metod in rezultatov sorodnih raziskav z metodami in rezultati študentovega raziskovalnega dela. Pregledni seminar predstavi ustno ostalim doktorskim študentom.

The aim of the course is to write comprehensive review seminar on the topic of the planned doctoral thesis, and to compare the student’s research findings with state-of-the-art findings reported in scientific literature. An important goal is to present the seminar in front of peers. This way, doctoral students learn about broader themes in the field of computer and information science. Compulsory attendance of this course and presence at seminars promotes critical thinking, bonding among students and faculty.

Seminar V is intended for presentation of research performed by the student during the Ph.D. studies. The presentation's length should be 20 to 30 minutes. It should include the overview of the topic of the doctoral dissertation, the motivation for the work, and report on student's research and its results. It should emphasize the scientific contributions of the work. Presentation could be similar to the one that the student is preparing for the final defense. It could also include elements that won't be presented in the final defense but otherwise deserve mentioning or are interesting for the general audience.

The presentation should take place a few months prior to the foreseen final defense. At that stage, the candidate should already have formally approved topic of the thesis, has already performed the planned research of which the results have already been published or are accepted to publication in a relevant journal. The candidate has already started to write the dissertation or has submitted it to the committee.

We will invite all Ph.D. students and foreseen members of the thesis committee to the presentation. In case of several candidates submitting requests for their presentations in the same period of time, the Faculty will organize a corresponding event.

Seminar V is organized on request and does not have specific dates or deadlines. Candidates should submit their requests for a seminar at least one month prior to the requested presentation date. The request should be submitted to the Office of graduate studies (Študentska pisarna, Referent za doktorski študij) and should be addressed to the Ph.D. study coordinator (Vice Dean for Research). Office of graduate studies will then confirm the dates and organize the seminar.

The course is designed to acquaint students with basic skills that are needed in scientific work. With practical work on seminars and exercises, students are encouraged to apply the gained knowledge.

During the course, students will become more familiar with topics like ethics in science, principles of written and oral communication and rhetoric, writing of academic papers, reports and dissertations. They will also acquire knowledge of science in the media, learn about a typical peer review process and the major elements of a peer review report, as well as about basic issues regarding patents and protection of the intellectual property.

Programme of course Scientific Skills I:
  • Tools for creating documents, editing techniques, bibliographic records managing and editing tools
  • Verbal communication and rhetoric, the elements of good oral presentations or lecture
  • Basic principles of scientific communication
  • Written communication, citation, articles and report writing skills
  • Ethics in science and research
  • Public bibliographic databases and their use in scientific research work, basics of scientometrics
  • Peer-review process, reviewers report elements, how to write a good review report
  • Models of research funding at home and abroad, types of projects, both domestic and foreign agencies that finance scientific projects, the application process, and reporting on project progress
  • Communicating in English; good practice and typical errors
  • Poster presentation
  • Science and the media
  • Protection of intellectual property, patents and patent protection, a review of current licenses
  • Planning and writing proposal of doctoral thesis
  • Tools for creating documents, editing techniques, bibliographic records managing and editing tools
  • Verbal communication and rhetoric, the elements of good oral presentations or lecture
  • Basic principles of scientific communication
  • Written communication, citation, articles and report writing skills
  • Ethics in science and research
  • Public bibliographic databases and their use in scientific research work, basics of scientometrics
  • Peer-review process, reviewers report elements, how to write a good review report
  • Models of research funding at home and abroad, types of projects, both domestic and foreign agencies that finance scientific projects, the application process, and reporting on project progress
  • Communicating in English; good practice and typical errors
  • Poster presentation
  • Science and the media
  • Protection of intellectual property, patents and patent protection, a review of current licenses
  • Planning and writing proposal of doctoral thesis

The objective of the course is a preparation of an R&D project application in accordance with  tenders published by a national or international agency/financer, and public presentation of the project. Students will get competences in preparing project applications and choosing relevant project topics. They will learn project writing and presentation skills.

The course will present basics of  research projects, difference between basic and applied projects, and major financers from EU and Slovenia.  Several successful case studies are presented as well as good practices and common mistakes in project preparation.

Based on this knowledge, each student will prepare a two phase project application. After the first introductory phase with research idea and project team competences the students get feedback from the lecturers with general directions and specific hints. In the second phase students prepare a full project application according to the directions of the selected agency/financer (i.e., ARRS tenders for post-doctoral projects, EU FP7 calls, or similar). Again the lecturers provide feedback, specific comments, and provisional grades.  The reviewed final project application will be publicly presented in front of a class. The grades are based on the project application and public presentation.

Selected Topics from Computer Graphics and Visualization

Students will get to know the current methods and technologies in the field of three-dimensional computer graphics. Emphasis will be given to rendering different types of data: volumetric data, point clouds, mesh geometry and logically defined geometry in the fields of medicine, biology, geodesy and high energy physics. Because the rendered data can be very large, emphasis will also be given to application of appropriate algorithms and data structures for fast and real-time rendering, implementation of techniques on graphic processors and remote rendering. In addition to the techniques, the students will also get acquainted with the different ways of visualizing such data, suitable for individual domains.

Vse informacije so na voljo v predmetu Raziskovalno delo I in II

Heterogeneous Computing Platforms

 The aim of the course is to deal with the state-of-the-art platforms and technologies, which present an important direction in ensuring enough computing performance for increasing computational requirements. Students will work with different types of hardware accelerators like GPU, FPGA, multicore CPU, and their combinations. For a selected problem, related to their PhD thesis, they will have to recognize an interesting platform and then implement and evaluate their problem on it.

Approximate Arithmetic for Media Processing and (C)NNs

The need to support various signal and media processing and recognition applications on energy-constrained mobile computing devices has steadily grown. In recent years there has been a growing interest in hardware neural networks, which express many benefits over conventional software models, mainly in applications where speed, cost, reliability, or energy efficiency are of great importance.

The standard hardware implementations of these algorithms and (convolutional) neural networks require many resource-, power- and time-consuming arithmetic (mainly multiplication) operations thus the goal is to reduce the size and power consumption of arithmetic circuits. In particular, in order for large (C)NNs to run in real-time on resource-constrained systems, it is of crucial importance to simplify/approximate MAC units, since they are usually responsible for significant area, power and latency costs. One option to achieve this goal is to replace the complex exact multiplying circuits with simpler, approximate ones. Approximate computing forms a design alternative that exploits the intrinsic error resilience of various applications and produces energy-efficient circuits with small accuracy loss. In the proposed course, we will study the importance of low-power, low-memory solutions, evaluate accuracy of media processing algorithms and CNNs based on approximate computing, evaluate power reduction in approximate circuits and investigate training-time methodologies to compensate for the reduction in accuracy. During the course, the students will implement various circuits in FPGAs and evaluate them in terms of speed, area and power consumption.

 

Selected Topics in Analysis of Sound Signals

Students will have the opportunity to explore the use of different methods for pattern recognition and machining learning (for example, deep neural networks) to solve the problems that we encounter when analyzing sound signals, such as identification of events in sound recordings, classification of sound recordings, transcription of music, detection of samples in music, etc. In the course of the semester, students will develop their own algorithm for solving a problem and send it to one of the evaluation campaigns (e.g., Mirex or DCASE), where its performance can be compared with approaches developed by other researchers (mostly PhD students) around the world.


The course will provide an overview of
definitions (what is security, economic and geopolitical underpinnings, etc.),
security standards (for example ISO 27001, ISO 270017), scope and threat
modelling, physical and network security, and common and current threat
vectors. Students will learn how to implement security, the typical mechanical
tools (layered switches, firewalls, load balancers, Intrusion detection
systems, biometric tools) and common social mechanisms (security policy, user
and admin training, live threat exercises). The law, and the ethics and moral
reasoning in Security will be provided with an emphasis on the Slovenian and EU
laws applicable to security (criminal law, data breach and retention laws,
security classifications, GDPR), and on the ethics of security (ethical
considerations concerning businesses, users and developers; ethical disclosure;
moral obligation for follow-up and pursuit of increased resilience). The topic
on ethical hacking will include definitions of basic terms and historical
overview (from first MIT hacks, to phreaking, MBX hacks, and current state of
play), typical tools used in PEN testing and ethical hacking (Kali, Shodan,
Metasploit, Wireshark), and social engineering (definitions, empirical
arguments, practical application).

Content

The objective of this course is to present current state of the art research challenges in integration of information system. The course will provide detailed insight into integration methods, approaches, technologies, patterns, and best practices. It will prepare students for research work in this area and point out currents unsolved and partially solved research issues. On completion of this course students will have detailed understanding on current state of the art research in integration, will be able to identify research challenges related to integration, apply key integration methods for information systems, analyze and asses integration technologies, understand integration patterns in detail and design complex integration architectures.

Relevance

Information system integration has been an active research topic for several years and covers different aspects, from data integration, application integration, process integration and presentation integration. Lately, integration with devices (Internet of Things) has opened some interesting new aspects. From the research perspective, students will get familiar with state of art research, including schema matching, API management, API conformance, API compatibility, process analysis, metrics, interface design, governance, and other relevant aspects.

Detailed Content

• Types of integration: service-oriented, intra-enterprise (EAI – Enterprise Application Integration), inter-enterprise (business-to-business or B2B).
• Integration methods: »bottom-up« methods, which are based on the partial point-to-point integrations between systems; »top-down« methods, which are based on the global integration model and architecture.
• Approaches: data integration, application interfaces (API) integration, business methods and services integration, process integration, and presentation layer integration.
• Data-level integration: structured data integration, schema matching, semi-structured and unstructured integration.
• API integration: API management, API compatibility, API matching, API conformance.
• Service integration: service design, service interoperability, service patterns, interface matching, types of services.
• Process integration: process patterns, metrics, private processes, public processes, orchestration, choreography.
• Internet-of-Things integration: approaches, real-time and near real-time integration, fast data and fast events, etc.
• Integration architectures: point-to-point, client-server, service oriented, event driven, complex event processing, stream analysis, etc.
• Integration and data: markup languages, XML, transformations, schemas, standard vocabularies, namespaces, master data management (MDM).
• Integration patterns, electronic markets, electronic biding, digital identities.

Pri predmetu bomo spoznali sodobne pristope k snovanju algoritmov. Ti pristopi vključujejo razne tehnike analiziranja, metode snovanja in računske modele. Spoznali bomo:

  • proces inženiringa algoritmov (proces, ki se trudi premoščati razlike med teorijo in prakso),
  • algoritme za večnivojsko pomnilniško hierarhijo (algoritme, ki upoštevajo značilnosti predpomnilnikov ipd.),
  • načine za pohitritev natančnih eksponentnih algoritmov (npr. rezanje prostora iskanja ipd.),
  • parametrične algoritme (algoritme, ki so hitri pri določenih vrstah vhodnih podatkov),
  • aproksimacijske algoritme (algoritme, ki hitro vrnejo približen, toda kakovosten rezultat),
  • verjetnostne algoritme (algoritme, ki hitro vrnejo negotov, toda verjetno pravilen rezultat),
  • kvantne algoritme (algoritme, ki izkoriščajo načela kvantne fizike).

Vse našteto bomo podkrepili s sodobno analizo algoritmov in problemov

  • apply algorithm engineering (which aims to bridge the gap between theory and practice),
  • use multi-level memory hierarchy and design cache-oblivious algorithms,
  • speed up exact exponential algorithms (e.g., by branching techniques),
  • design parameterized algorithms (algorithms that take advantage of specific inputs bound to a parameter),
  • design approximation algorithms (fast algorithms that return approximate results of good quality),
  • design
    randomized algorithms (fast algorithms that return uncertain results of good confidence),
  • design quantum algorithms (algorithms that integrate quantum reality into computation).

    Finally, we describe the concept of the realistic
    (as opposed to the worst-case) complexity of algorithms
    and computational problems.

Network Measurements and Traffic Monitoring

The importance of mobile Internet access in our society is steadily
growing, as more physical objects get connected (Internet of Things) and an
increasing share of our daily activities rely on smartphones and apps.
Ubiquitous and reliable connectivity is provided to the end-users by a “network
of networks”, i.e., a global system composed of the interconnection of multiple
IP network infrastructures, wired and wireless, owned and managed by different
players (network operators). The scale and complexity of the network
infrastructure is growing together with the requirements for reliability and
performances. Owing to the ever-evolving nature of such network
infrastructures, the risk of failures and performance degradation caused by
accidental faults and/or deliberate attacks is not decreasing. As with any
complex infrastructure, the network needs to be continuously monitored in order
to promptly identify (and resolve) problems, failures and any sort of anomalous
behavior. 

The course focuses on methods and techniques to measure the
performances of a packet-oriented network in order to reveal performance
degradation and faults in wide-area networks. Particular focus is given to
wireless mobile networks (3G/4G).

The goal of the course is to provide the student with an
understanding of the most important aspects that must be considered in all
phases of the monitoring process, from the design of the data collection
methodology to the representation, analysis and interpretation of the
measurement data. Some fundamental theoretical aspects of data analytics will
be discussed along with more practical “do and don’t” rules. During the course,
several case-study problems from real-world measurement activities and research
problems will be critically examined
and discussed in the classroom, in order to distill general guidelines and data
properties in a bottom-up fashion.

The course is useful also for PhD students that are working in
different research areas. In fact, the analysis of data from a dynamic,
heterogeneous and complex system like “the Internet” leads naturally to
encounter a number of concepts and system-level aspects that are very general
and apply to many other engineered systems.

In summary, the methods and skills acquired by the students during
the project will benefit the students along multiple directions:

1.     
Students will gain a more
in-depth understanding of the dynamics at play in real-world networks.

2.    Based on the methods and skills
acquired during the course, the students will be able to engage in research
activities related to measuring and analyzing datasets from computer networks.

3.    Several notions and ideas
presented during the course with reference to packet networks are actually much
more general, and apply mutatis mutandis
to other classes of large-scale systems in other domains.

Examination: verbal colloquium and project assignment.

Tema predmeta so sodobni algoritmi za učenje iz podatkovnih tokov. Učili se bomo o odprtih izzivih na področju (inkrementalni modeli za nadzorovano učenje, stiskanje podatkov, odkrivanje spremembe v porazdelitvi toka (concept drift), gručenje iz podatkov, specializirane statistike za vrednotenje uspešnosti). S pridobljenim znanjem bo študent sposoben uporabljati svoje znanje o strojnem učenju pri aplikacijah, ki so povezane z obilico vsakdanjih podatkov (finančne in bančne transakcije, vremenski podatki, senzorski podatki itd.).

Predmet bo organiziran kot kombinacija predavanj in laboratorijskih vaj (te bodo izvedene z uporabo statističnega paketa R). V okviru vaj bodo študenti znanje aplicirali na izbranem problemu, ki je lahko direktno povezan tudi s tematiko doktorske naloge. V preostanku semestra bo organizirano tudi medsebojno tekmovanje za izdelavo najbolj točnega napovednega modela na podanih podatkih.

Incremental Learning from Data Streams

The goal of the proposed course is to teach the students about the state-of-the-art algorithms that are used to perform learning from data streams. The course will guide the students through the major open challenges in the field (supervised learning, data compression, concept drift detection, clustering from streams, specialized evaluation statistics). With this knowledge, the students will be able to apply their machine learning skills to a specialized and useful area that is connected to the abundance of data in our everyday lives (bank/weather/financial transactions, sensor readings etc.).

The course will be organized by mixing lectures with hands-on lab exercises that the students will do in the Statistical package R. The lab exercises will include applying the acquired knowledge on their own problem and stimulating a competition between students to achieve the best possible learning results.

Izbrana poglavja iz umetne inteligence II: Advanced Topics in Network Science (ANTS)

Networks or graphs are ubiquitous in everyday life. Examples include online social networks, the Web, wiring of a neural system, references between WikiLeaks cables, Supervizor, terrorist affiliations, LPP bus map, plumbing systems and your brain. Many such real-world networks reveal characteristic patterns of connectedness that are far from regular or random. Networks have thus been a prominent tool for investigating real-world systems since the 18th century. However, while small networks can be drawn by hand and analyzed by a naked eye, real-world networks require specialized computer algorithms, techniques and models. This led to the emergence of a new scientific field about 20 years ago denoted network science.

The course will first introduce the language of networks and review the fundamental concepts and techniques for the analysis of large real-world networks. In the main part of the course, the students will learn about selected advanced topics in network science with special emphasis on the practical applicability of the presented approaches. The topics will include node metrics, groups and patterns, large-scale network structure, network sampling, comparison, modeling, mining, inference, visualization and dynamics. The last part of the course will be devoted to invited talks on network science from the perspective of mathematicians, physicists, social scientists and other. 

The objective of the course is not to give a comprehensive theoretical discussion or in-depth review on any of the topics, but to present a rich set of network science tools that students could use in their own PhD work. The latter will be the main part of the coursework.

Except for a clearly identified PhD topic, there are no specific prerequisites for the course. However, the students will benefit from a solid knowledge in graph theory, probability theory and linear algebra, good programming skills in a language of their choice, and familiarity with research work and scientific writing.

The course is offered in the summer semester starting on February 26th, 2018 and lasts for fourteen weeks. Lectures and practice will be held in either English or Slovene.

For more see eUcilnica.

Študentje se bodo pri
predmetu seznanili z različnimi nalogami napovedovanja strukturiranih izhodnih
spremenljivk in z različnimi pristopi za njihovo reševanje. Spoznali bodo nekaj
najsodobnejših orodij za reševanje te vrste nalog in jih uporabili na praktičnih
problemih. Naučili se bodo tudi uporabljati metode napovedne analize strukturiranih
podatkov v kontekstu lastnega raziskovalnega dela. Predictive Analytics for Structured Data

The course will introduce the students to
different tasks of structured output prediction and describe a variety of
approaches for solving such tasks. The students will get to know some
state-of-the-art tools for solving such tasks and examples of their use in
practice. Within the course, the students will learn to apply predictive analytics
methods for structured data in the context of their research.

 The course will cover the following topics:

  1. The
    different tasks of structured output prediction, such as multi-target
    classification/ regression and (hierarchical) multi-label classification.
  2. Predictive
    clustering methods (tree and rule-based) for structured output prediction.
  3. Ontologies
    for data mining and their use for describing structured output prediction.
  4. Ensemble
    methods for structured output prediction (tree and rule ensembles).
  5. Applications
    of structured output prediction to different practical problems, from
    areas such as environmental/ life sciences and image annotation/ retrieval.


The course presents a collection of advanced machine learning topics used in natural language processing and understanding. In particular, it addresses dense vector embeddings, deep learning approaches, ensembles, and visualization of text classifiers. The course covers relevant problems from computational linguistics and text mining, such as word sense disambiguation, detection of multi-word expressions, topic detection, and specifics of morphologically rich languages.  The course is practically oriented and requires students to apply machine learning methods on language processing tasks, preferably in the context of their research work.

Globoko učenje v računalniškem vidu

Raziskovalno področje računalniški vid naslavlja probleme povezane z zajemanjem, procesiranjem, analizo in razumevanjem vizualne informacije kot so slike, video in oblaki 3D točk. Eden temeljnih problemov računalniškega vida je vizualno učenje in razpoznavanje, t.j., učenje predstavitev (predmetov, obrazov, prostorov, akcij, itn.), ki se lahko nato uporabljajo za klasifikacijo nepoznanih primerov na novih slikah. Konvolucijske nevronske mreže in sorodni pristopi globokega učenja so se izkazali za zelo uspešen način za iskanje zmogljive predstavitve in učinkovitega klasifikatorja v poenotenem pristopu, ki daje odlične rezultate v različnih nalogah s področja računalniškega vida. Glavni cilj tega predmeta je uvesti študente na področje globokega učenja, s posebnim poudarkom na aplikaciji le-tega v računalniškem vidu. Študentje se bodo seznanili z glavnimi principi računalniškega vida in strojnega učenja ter s povezavo z globokimi nevronskimi mrežami. Naučili se bodo kako naučiti in uporabljati globoke nevronske mreže z glavnim poudarkom na konvolucijskih nevronskih mrežah. Pokazali bomo kako se ti pristopi uporabljajo za klasifikacijo in detekcijo predmetov, kot tudi za ostale naloge na področju računalniškega vida in tudi širše.


The research field of computer vision addresses the problems related to acquiring, processing, analyzing, and understanding visual information such as images, videos and 3D point clouds. One of the core problems in computer vision is visual learning and recognition; i.e., learning the representations (of objects, faces, rooms, actions, etc.) that are later on used to classify unknown instances that appear in new images. This problem has been tackled since the beginning of the computer vision, however no previously proposed method has increased the performance beyond the current state of the art in such a way as deep learning approaches in the recent years. Convolutional neural networks and related deep learning approaches have proven to be a very efficient way of finding the representations and building a classifier in a unified framework that yields excellent results in various computer vision tasks. The main goal of this course is to introduce the students into the field of deep learning, with the special emphasis on its application in computer vision. The students will be acquainted with the main principles of computer vision and machine learning, relating them to neural network methods and showing them how to train and use neural networks with the main emphasis on Convolutional Neural Networks. It will be shown how these approaches can be used for object classification, localization and detection, as well as for other tasks in computer vision and beyond.

Selected topics on Cryptography and Computer Security

The course will cover selected topics from the following list:

 Symmetric cryptography
- classical Ciphers and History of Cryptography
- Kerckho Principle and various attacks on cryptosystems
- Shannon Theory of Information (Perfect, Computational and Provable Security)
- Block Ciphers (DES/IDEA, AES and nalists, Linear and Di erential Analysis)
- Stream Ciphers/PRNG (LFSR and Berlekamp-Massey algorithm, RC4,...),
- Cryptoanalysis and Statistical Methods
- Hash Functions (MD/SHA, HMAC, ...),
- Authentication Codes (MAC),
- Birthday Paradox Attacks, new attacks,...

 Public-key cryptography (Asymmetric Cryptography)
- Perfect Security (Computational, Unconditional and Provable Security)
- Public-Key Cryptosystems, One-Way Functions and related problems in Number Theory
- Primality Testing, Integer Factorization, Discrete Logarithem Problem)
- Digital Signatures (RSA, DSA, one-time, blind, group etc.)
- Key Agreement Protocols (Die-Hellman, ElGamal, Kerberos, STS)
- Identi cation Schemes for humans and devices (challenge/response, ...)
- Other protocols (head/tail over the phone, mental poker, Secret Sharing Schemes, Au-
thentication Schemes, Timestamps, Visual Cryptography, Zero-Knowledge Proofs)
- Quantum cryptography

Computer and information security
- Security of programs (bugs, viruses, malicious code)
- Security of databases (anonymization, homomorphic encryption)
- Security of OS (MS Win, Unix/Linux, liveCD)
- Security of network communication ( rewalls, VPN, IPSec, SSL)

A detailed description of the course content, divided into weekly lectures (15W, 45h)
Week 1 Introduction
Week 2-5 (A) Funamentals of Cryptography (Project proposal)
Week 6-11 (B) Advanced topics in Cryptography and Computer Security
(Milestone presentations)
Week 12 (C) Applied Projects
Week 13-15 (D) Research topics (Project Presentation)

Big Data

In this course you will develop your knowledge of big data analytics and enhance your programming
and mathematical skills. Starting with fundamental data analysis and data visualization suing Power
BI and later you will learn to use essential analytic tools such as Hadoop, R, you will also learn about
predictive analytics including probabilistic and statistical models. Finally some machine learning
methods will also be explored during the course of this course.
By the end of this course, you will be able to approach large-scale data science problems with creativity.

Mathematics for Machine Learning

In this course, we’ll study the theory of matrices behind the basic
concepts of maching learning. We’ll present the matrix algebra
and derivations of and over matrices. These definitions are crucial
to understand the optimization methods in machine learning.

Za prejemanje obvestil o aktualnih objavah, se vpišite na ta forum.

Mobile and Wireless Computing Journal Club is envisioned as an informal discussion venue for advanced students and researchers interested in topics related to mobile computing, mobile sensing, wireless transmission, software-defined radio and related research areas. The journal club is envisioned as a democratic discussion space on selected topics. To steer the discussion, the club moderator will, in agreement with the group, propose topics that will be covered in the meetings. These will often be seminal and recent cutting-edge research papers, but also code/concept demos, and similar. Participants are requested to prepare for the meetings, i.e. by reading assigned papers, and to actively participate in the discussion. To support the discussion and keep track of the ideas, the group will use online tools on Ucilnica for collaborative note taking, online discussions, etc. The meetings will be held monthly.

NOTE: This is not an official FRI course, no ECTS credits are associated with it, and the participation is fully voluntary.

Na letošnjem natečaju za majice za bruce smo v ŠS FRI in ŠO FRI izbrali 5 predlogov.

Sedaj vas prosimo, da o njih glasujete in odločite, kakšne majice bodo nosili bruci.

Predmet je namenjen vprašanjem v zvezi s spletno učilnico. Če kaj ne dela, kot bi moralo in kako prepričati moodle, da se obnaša tako kot hočemo.

The course "Use of IT for study" is intended for foreign students in order to prepare them for regular study at University of Ljubljana. Main aim of the course is to train students to work with information systems and tools for study purposes:

  • Students will be able to prepare an information environment suitable for their study and to use university information systems.
  • Mastering of IT tools for academic writing, IT tools for literature searching and managing, IT tools for basic graphical design, visualization, preparation of presentations, as well as collaborative and productivity tools.
  • Students will get knowledge and comprehention in terms of visual and logic text preparation, mastering of academic writing and the culture of electronic communication.
  • Students will be acquainted with academic ethics, including citing, plagiarism and intellectual property.

Stran je namenjena izvajalcem in udeležencem uvoda v študij računalništva - osnovnega tečaja programiranja in ponovitve matematike -, ki ga izvajamo v zadnjem tednu septembra.

Napredne teme iz Pythona
Uganka
Delavnica Programiranje za vsakogar v okviru Tedna programiranja 2014

Kreditne točke pri predmetu Računalništvo v praksi lahko pridobite v okviru različnih organiziranih aktivnosti v okviru FRI, ki vpletajo strokovno delo na področju predmetov na FRI (na primer tutorstva) ali širše na področju računalništva (na primer programiranje). Primeri takšnih aktivnosti so:

  • predmetno tutorstvo ali tutorstvo za tuje študente,
  • vodenje računalniških krožkov na srednjih šolah,
  • sodelovanje pri organizaciji računalniških tekmovanj,
  • sodelovanje pri izzivih podjetij,
  • pomoč pri informacijskih sistemih FRI,
  • dogovorjene strokovne aktivnosti v fakultetnih laboratorijih.

Seznam aktivnosti se nenehno aktivno dopolnjuje in je opisan na učilnici: https://ucilnica.fri.uni-lj.si/RVP-OSD.

Predmet se ocenjuje z ocenama "opravil" / "ni opravil".

-          use of faculty information systems (university digital identity, web classroom, student information system, timetable, web pages, Eduroam),

-          use of library services (COBISS, search and checking out, material availability),

-          use of UL repositository,

-          basics of professional writing:

-          osnove strokovnega pisanja:

·                 word processing software,

·                 structuring written reports,

·                 ethics in writing (citing, plagiarism, intellectual property),

·                 making interactive presentations (Prezi, PowerPoint),

-          culture of electronic communication,

collaborative and productivity tools (Google Drive, Dropbox, Office 365, Overleaf, ShareLaTeX).
Zemantin programerski izziv 2017

NIL-ov programerski izziv 2016

Predmet namenjen študentom, ki tekmujejo na Celtrinem programerskem izzivu. 

Tukaj bodo objavljene vse novice in potrebni materiali.

A course given to students at Higher School of Economics, Moscow.

Računalniške programe --- navodila, ki računalniku povedo, kaj naj počne --- pišemo v jezikih, ki so za razliko od človeških zelo omejeni, a povsem natančni in nedvoumni.  Na delavnici bomo spoznali osnove jezika po imenu python.  Računalnik bomo naučili, da nas bo vljudno pozdravil, narisal kak vzorec ali pa nam zastavil kakšno računsko nalogo.  Naši programi bodo preprosti, imeli pa bodo marsikaj od tistega, kar imajo veliki.

Univerzitetno študentsko tekmovanje v programiranju mobilnih robotov Lego Mindstorms na Fakulteti za računalništvo in informatiko.