## Available courses

### Programming 1

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.

### Calculus

Calculus is a first step into mathematical analysis, the field of mathematics that deals with functions. A function is a formal way of expressing dependence between two different quantities (for example, the length of the day depends on the time in the year, the bill at the cashier depends on the things in your shopping basket, the result on the exam depends on the time spent studying, and there are many many other examples). In this course we would like to help you to learn more about functions. You will need then in your other computer science courses and later on in your work in computer and information science. The more you know about them, the more useful they will be to you, and the possibilities are almost unlimited.

The course is divided onto 4 chapters: Numbers, sequences and series, Functions of one and several variables, Derivatives with applications, and Integrals.

### Discrete Structures

Discrete structures are a core subject presenting the necessary mathematical topics that are needed to build on in computer science and engineering. It is highly probable that most of the topics will be new to a typical high school graduate, and also the familiar concepts will be studied in a new setting.

Topics include:
• Propositional logic: reasoning, formal proofs.
• Predicate logic: basics.
• Set theory: naive approach, basics of counting.
• Functions: composition of functions.
• Relations: equivalence relations, ordered structures.
• Number theory: basics, Diophantine equations, Euler function, congruence relations and modular arithmetic.
• Permutations: a primer of an algebraic structure.
• Graph theory: basics, walks, paths and connectedness, bipartite graphs, trees, Euler and Hamilton graphs, coloring.

Coursework consists of weekly homework assignments, midterms and a final exam.

### Introduction to Digital Circuits

Š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

### Physics

The aim of the course is to introduce fundamental laws of physics, to discuss quantitative analysis of some relevant practical cases on the basis of these laws, and most of all, to demonstrate the application of so called "physics method" - i.e. construction of analytical models of observed phenomena on the basis of measurement data - for solving various problems of modern technologies.

### Programming 2

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 μαθηματικά.

### Linear Algebra

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.

### Computer Systems Architecture

How does a computer work? This is the basic question that we try to answer at this course. For a student who will become a computer or software engineer, the computer must not be a "black box" (even when it is really black).

Our first question will be, how must be a machine in order to be able of computing (and also, what it means). We will see that it may be quite simple (when the speed is irrelevant or we are interested merely in the principle). How were these machines built in the past?

We will learn the working of the processor, which is the most important part of a computer. How does the processor fetch instructions, decode them and execute? We will learn how the architecture of a computer affects its performance, how to increase the performance and how the performance is measured.

We will learn also the assembly language, which is the closest to the machine instructions of the computer. Its understanding is important also for successful programming in higher programming languages.

### Computer Communications

The goal of the course is to make an introduction to computer communications, networks and important network protocols. Within the course, we study architecture of communication systems according to models ISO/OSI and TCP/IP and make an overview of services on different layers of these two models.

The most of the time is focused on studying the network layer (IP protocol), transport layer (protocols TCP and UDP) and application layer (protocols HTTP, POP, SMTP, DNS), that are the key building blocks of Internet today. We proceed to chapters about cryptography (simple cryptographic algorithms, DES, RSA) and network security (SSL, firewalls, intrusion detection systems).

The goal of the course is to enable students to understand how information-communication technology works; to teach them how to use it, plan networks and administer smaller local wired and wireless networks.

The course consists of lectures, laboratory exercises and homeworks (online quizzes).

### Introduction to Information Systems

The goal of this course for students of Computer and Information Science is to present key concepts of Information Systems, the different categories of Information Systems, and the place and role of Information System in Business Systems. Knowledge that students acquire in the course are crucial for understanding the operation and use of modern Information Systems. During laboratory exercises students learn utilization of modern information technologies and development environments, which are intended for the development of computer applications to support Information Systems.

The students are required to regularly perform taks, which includes short exams of checking the understanding of the basic concepts presented in the course, and the practical application of knowledge by working on smaller projects that are implemented in a form of homework. Students actively participate in the evaluation of the implementation of practical project by performing peer review. Adequacy of their grades given to fellow students is also part of their assessment. The final examination is performed in the form of a practical exam conducted by implementing a small project from a selected problem domain. Students are allowed to use the literature in their final examination.

### Algorithms and data structures 1

Well designed data structures and the efficient algorithms
for their processing are the very basis of computer science.

The goal of the course is to acquire the basic
principles of design and analysis of algorithms and basic and dynamic data
structures for problem solving. We will present the basic principles for
problem solving, the relation between iteration and recursion, the analysis of
time-complexity of algorithms, the concept of abstract data type and the
definition and implementation of basic abstract data types:  list, set,
queue, stack, mapping, tree, dictionary, priority queue, disjunctive sets,
graph and directed graph, as well as basic algorithms for graph analysis:
searching for longest paths and searching for shortest paths in directed
graphs, and building the minimum spanning tree in undirected graphs. At the end we will present also the basic principles for proving the correctness of programs.
At the end we will present also the basic
principles for proving the correctness of programs.

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
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
parts need to be positive.

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

### OPB: Osnove podatkovnih baz

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.

### Probability and Statistics

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.

### Algorithms and data structures 2

Lectures:

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
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.

### Theory of Informations and Systems

We live in
the information age. Information technology changes civilization deeper and
faster than any technology in the past. The importance of information is very
broad - it covers the technology of the internet, the possibility of accessing enormous
quantities of data, the ease of communication, entertainment, learning, and

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.

### Operating Systems

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.

### Computer Systems Organisation

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.

### Mathematical Modelling

The aim of the Mathematical modelling course is to build on the basic knowledge and understanding of the concepts of mathematical analysis and linear algebra to advanced concepts, demonstrate their use in modelling in computer science, mathematics and other sciences and develop the basic methods for calculating the resulting models.

### Computer Technologies

The goal of the subject Computer
technologies is to introduce to students of computer science and informatics
the physical and technological fundamentals for operating and manufacturing
computers, quantitative treatment of some relevant examples from the area of
solid state physics, as well as the introduction of the application of physics
laws in the technology of fabrication of microelectronic, monolithic circuits
which are basic elements of computers. One of the aims of the subject is also
the introduction of quantum mechanics which becomes increasingly important
physical theory in computer science.

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.

### Principles of Programming Languages

Usually,
we write programs as descriptions of algorithms. But is it necessary that a
program is always stated as an algorithm?

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

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.

### Introduction to Artificial Intelligence

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.

### Economics and Entrepreneurship

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.

### Diploma seminar

Lectures:

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.

### Platform Based Development

The course will include topics in platform based development recommended in the ACM curriculum for CS. The topics will continually adapt to contemporary trends, thus the course is not constrained to a specific platform.

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,

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.

Do you want to develop an electronic payment system like PayPal for your business purposes? Do you want to know how web data is being
transformed with semantic technologies to be ready for machine based processing? Do you want to develop a mobile business application
to the point where you can start selling it on Google market? Or you want to know the latest trends in managing enterprises and organizations due to information technology advancements? And you want to go for your own innovative start-up? Then E-business course is for you.

With the penetration of e-media (from traditional internet to internet of things and pervasive computing) into all areas of our lives business and private) new ways of doing business emerged. These new ways are largely determined by technology. However, although technology is the key driver, knowing only this technology is not sufficient for successful e-business. Therefore this course starts with the basic definitions and a brief historical overview of the field. Next, a systemic view on e-usiness is given with analysis and simulation of some typical structures like internal and external logistic chains, and the effects f decision making on their behavior. This topic will be followed by technological views with the emphasis on integration, first of data and documents (RIP, XML technologies, semantic web with RDF and OWL), and processes integration (standards SOAP / UDDI / WSDL, PEL and BPMN). Also the complementary technological means for e-business will be covered, i.e., electronic payment systems. In the second part we will focus on organizational views (business functions and processes, information systems evolution, new business models
and auditing standards like COBIT and ISO 27000). The main EU and national legislation in this domain will be given next. In the end we will analyze e-business specific methods for planning and introduction of new information systems (advancements in strategic IS management, use of formal methods, compliance with standards like Common Criteria, etc.), and state future developments in this area.

Practical laboratory work will consist of hands-on work that, for example, covers e-biz portal development, its integration with back-end system and business logic, introduction of a payment system a'la eBay, and inclusion of a mobile application. However, also ectures will be "refreshed" and will include hands-on work in focused and specialized areas of e-business like ontology development, simulations, innovation thinking techniques, etc.

Finally, it is recommended that students are familiar with Information systems course. The course will be in Slovene.

### Organisation and Management

The course introduces to 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.

### Introduction to Data Mining

What is common to marketing, insurance, telecoms, resellers, surveillance, fraud detection, and scientific discovery? Any modern business of today can gather vast amounts of data. To make this data useful, we need to extract patterns that provide insight to the data and can uncover hidden commonalities. A branch of computer science that develops techniques for discovery of knowledge from large data sets is called data mining. It combines methods from statistics, artificial intelligence, machine learning, visualization and database management. The course will introduce some of the most popular data mining techniques and will focus on those that can deal with large collections of data. These will include dimensionality reduction techniques, various data clustering/segmentation approaches, methods for finding frequent item sets, network-based explorative analysis techniques and support vector machines. During the course students will learn how to apply these techniques on the real data and use modern scripting-based data mining environments.

### Data Management Technologies

In the course Data management technologies we will study advanced topics on databases and data management that enable improved access to informations hidden within stored data. We will discuss approaches to data organization, both for transactional and analytic purposes, and survey related technological trends, such as data warehouses, data mining, data stream analysis, and modern non-relational (NoSQL) database management systems. The course builds upon knowledge from two earlier courses: Fundamentals of databases (basic concepts and tools, conceptual modeling, normalization, SQL) and Programming 1 (basic concepts and tools, operational knowledge of Java and Python).

### Information Systems Development

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.

### Informatics Planning and Management

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

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

### Software Development Processes

The aim of the
course is to gain knowledge about the software development processes and
principles, with particular emphasis on the development of server-side, datacenter,
and cloud applications, ie. applications that are used in large enterprise information
systems or large web applications (eg. Facebook, LinkedIn, online 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.

### Web Programming

In the Web Programming course will perform an overview of technologies that are used within the web, web servers, web browsers and web applications.

We'll focus on basics of web page development (HTML5 and CSS3), supplement them with an overview of client-side development (JavaScript), server-side development (Node.js) and implementation of REST API access to the database (MongoDB).

The goal of the course is to give students an overview of heterogeneous technologies and provide capability for autonomous learning of new technologies in development and a special emphasis will be given on a full-stack development.

The course consists of lectures, laboratory exercises and a project (own web application) that student present by part throughout the semester.

### Software Engineering

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.

### Communication Protocols

This course aims to present the fundamentals of protocol design, analysis and functions in general as well as to review selected standard protocols. The students will gain the following competencies: understanding of protocol execution and their interactions, ability to design and analyse  own communication, awareness regarding important  protocols on different communication layers. The students will get familiar with security related protocols, authentication protocols, multimedia protocols and mechanisms, network management protocols (SNMP), IPv4 to IPv6 transition mechanisms, vehicular communication protocols and protocols for coordination in distributed systems (election, agreement...) . In the lab part the students will get hands-on experience with selected protocols and finally integrate their practical and theoretical knowledge by deploying a complete system for a typical small enterprise.

### Mobile and Wireless Networks

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.

### Computer Networks Modeling

Objective of the course is to present the basics in modeling and simulation of computer networks to the students of computer and information science. The course is based on the theory of service which acknowledges the students with the terms such as demands, serving units (resources), queues, bottlenecks etc. Students will learn the practical values of theoretical knowledge on the problems that arise in the field of computer networks.

### Computer Systems Reliability and Performance

Objective of the course is to present the basic methods and approaches from the field of reliability and performance of computer systems assesment to the students of computer and information science. Reliability and perfomance of computer system are bital for its effectivity. Students will comprehend theoretical knowledge from both disciplines and will also learn their practical values from the examples of real-life problems.

### Digital Design

We instruct students how computer-aided design tools are used
to both simulate the VHDL or Verilog design and to synthesize the design to
actual hardware. Specific behaviour of HDL tools is emphasized. We present the
design of digital circuit using optimal approaches. As part of the course,
students develop familiarity and confidence with designing, building and
testing digital circuits, including the use of CAD tools, develop team-building
skills and enhance technical knowledge through both written assignments and
design projects.

### Distributed Systems Computer

The semiconductor
technology has reached physical limitations that prevent greater
miniaturization of chips and with it more energy efficient and more powerful
processors. Current research focuses on devices with multi-core processors and
general purpose graphics processing units on one side and a wide variety of
computer clusters and cloud services on the other.

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.

### Compilers

The course describes the structure and techniques of the modern compilers for translating programming languages into executable code. Lectures follow the phases of the modern compilers: lexical analysis, syntax analysis, abstract syntax trees, semantic analysis, activation records, intermediate code, basic blocks, instruction selection, liveness analysis, and register allocation.

### System Software

System software course covers the following topics:

1. basics about machine and assembly languages
2. content and organization of object files
5. macro processors
6. system calls and interrupts
7. input/output implementation and file system tools
8. memory management
9. debugging
10. virtual machines

### Analysis of Algorithms and Heuristic Problem Solving

What computers really can compute? Which problems can they solve? Which algorithms are practically useful? Shall we buy two (five?)  times faster computer to solve our problem in a reasonable time or we have to design a completely new algorithm? Is this possible?

The Analysis of Algorithms and Heuristic Problem Solving course first presents theoretical knowledge about the algorithmic complexity, teaches you to analyze programs and gives you the competence to answer the above questions.

You will learn that some of the practically interesting problems are too difficult for today's computers. Well, we want to solve them anyway, at least some of them and at least approximately. "Heureka! (I have found!)" yelled the Archimedes, when stepping into a bath he suddenly understood that the volume of water displaced must be equal to the volume of the part of his body he had submerged (and in his enthusiasm ran naked through the streets). Heuristic methods are (probably for that reason) approaches which give us useful approximate solutions to difficult problems, mostly without theoretical background. Some of these approaches have at least a guarantee about the quality of the solution, for example, approximation algorithms. Other methods, like the operational research tools, local and stochastic search are today standard optimization approaches for scientific, technical, and business problems.

The aim of the course is to offer practical knowledge about algorithm analysis and present standard and novel heuristic methods, so that a student facing a new difficult problem is able to decide which approach to use and can solve it using one of the optimization libraries.

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 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.

### Development of Intelligent Systems

»Hi Tina
Maze! Where are you hiding your skis?«. Aha, under the blue cylinder. I already
saw it, when I was delivering his hamlet to Peter Prevc. I should return to it;
I have to find the right path. It will be better to turn left, because I will
arrive at the goal faster, and I will avoid obstacles better. I have to deliver
the skies to Tina, and then I’m done for today with my job as a DeliveryBot.

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!

### Intelligent Systems

Humans have always been interested in the idea of intelligent machines. Yet, what is intelligence? Is the computer which beats the world champion in chess really intelligent? Or the robot which independently researches the Mars' surface? What about the computer program which diagnoses cancer more accurately than physicians? Do some characters in computer games act intelligently? Form the very beginning of computer era there are philosophical and scientific discussions about possibility to create an artificial system which will act intelligently. The research in the area of artificial intelligence has, besides clarifying the basic questions about intelligence, brought a series of tools and approaches for solving problems, which are difficult or even impossible to solve with other methods. In the Intelligent Systems course, you shall learn some of the most useful techniques. A robot or an agent has to reason about an unknown environment. It has to search through different possibilities. It has to analyze data obtained  from different sensors. It has to learn from its successes and failures. Techniques which enable such intelligent behavior are often based on the ideas that stem from nature, such as neural networks and evolutionary learning, but use also the discoveries from statistics, modeling, decision theory, natural language processing, and cognitive modeling. The focus of the course is to prepare students for practical use of theoretical knowledge and application of learned techniques in practical scientific and business problems.

Practical part of the course is in the form of programming assignments, solving problems, and web quizzes. Assistant is available for consultations. The grade of practical work is a summary of assignment grades, where each assignment has 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.

### Machine Perception

Machine perception is a rapidly developing exciting field with a wealth
of applications available as well as those still to come. This course
will cover in depth the mathematics and basic techniques of computer
vision which are widely used in a broad spectrum of modern applications.
If you have ever wondered what kind of methods devices like Google
glasses, Robotic vehicles, Panorama stitching, Photo editing software,
etc., use, this course will address that curiosity and more. At the end
of this course, the student is expected to have a grasp in the following
topics: (i) Basic image processing techniques, (ii) Image derivatives
and edges, (iii) Model fitting, (iv) Local descriptors, (v) Stereo
vision, (vi) Subspace methods for recognition, (vii) Object detection,
(viii) Object recognition, (ix) Basics of motion. The course is composed
of (i) the lectures in which we will cover the relevant theory and (ii)
exercises in which the students will implement the basic techniques and
solidify the theory.

### Introduction to Graphics Design

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.

### Multimedia Systems

Multimedia systems are an indispensable part of modern information technologies. Students will in the context of this course gain the knowledge and skills necessary for the use and development of multimedia systems. Particular attention will be paid to the basics of manipulation, record, degradation and query multimedia databases with an emphasis on static images, animations and videos. We will discuss the basic techniques and methodology necessary to produce a system for augmented reality using an existing interactive multimedia system.

### Computer Graphics and Game Technology

In the subject, students will get to know the foundation of computer graphics and game technologies. The focus is on 3D graphics, which is an integral part of computer games, as well as film and TV production, product and graphics design, architectural plans etc. Creating and changing images with computers, either rendering an avatar in WoW, a person on board of Titanic or red eye removal are all interesting computer graphic problems.

The subject will focus on computer representation of 3D models, their transformation, rendering and animation. We will describe how to achieve realism in rendered images, as well as how to focus on speed needed for interactive rendering in computer games. We will decompose the graphics pipeline, and explain the process of game design.

The lab exercises will introduce game programming through the use of low-level (OpenGL), as well as high-level (Unity) environments. In seminars, students will develop their own games.

### Computer Science in Practice I

Within the Computer Science in Practice you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### Computer Science Skills: Functional Programming for the Web

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.

### Computer Science in Practice II

Within the Computer Science in Practice you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### IPRI: Analysis of Networks

Selected Topics in Computer and Information Science: Analysis of Networks (ASI)

World Wide Web, blogging platforms, instant messaging and Facebook can be characterized by the interplay between rich information content, the millions of individuals and organizations who create and use it, and the technology that supports it. The course will cover recent research on the structure and analysis of such large social and information networks and on models and algorithms that abstract their basic properties. Class will explore how to practically analyze large scale network data and how to reason about it through models for network structure and evolution. Topics include methods for link analysis and network community detection, diffusion and information propagation on the web, virus outbreak detection in networks, and connections with work in the social sciences and economics.

This course is based on the course CS224W offered by Stanford University and serves as a continuation of the course Topical Research Themes I: Introduction to Network Analysis (INA). The course will precisely follow the CS224W schedule, material, coursework, grading policy etc. Lectures will be held in English, while practice will be in either English or Slovene.

The course is offered in the winter semester starting on September 24th, 2018 and lasts for ten weeks.

For more see eUcilnica.

### Computer Science Skills: Computer Vision in Practise

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.

### Splošne teme (VSŠ)

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.

### Introduction to Probability and Statistics

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.

### Operating Systems

An operating system serves as the layer between our applications and hardware. It is a program that creates processes, schedules execution of processes, manages memory and i/o. We will look into the algorithms of all of these tasks in order to understand the concepts of operating systems and their interconnections.

### Computer Communications

Today,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.

### Programming 1

The course provides an introduction to programming. It starts from scratch (expressions, flow control...) to mastering some built-in data structures, like lists and dictionaries. The course is taught in Python. No pre-knowledge is expected.

### Databases

Did you ever search through your room for a missing item, a discharged mobile phone, keys, or something similar? Can you imagine, what a bank would look like if for each customer's request they had to search through unsorted bank statements and papers? Chaos incarnate! Since the vast majority of events in modern business world (shopping in a store, airplane ticket reservation, bank transfer, mobile phone call) is stored in computers, technologies for dealing with vast amounts of acquired data are needed - database management  technologies. Software products for dealing with databases are called database management systems (DBMS).  Their primary task is enabling users for quick, efficient, simple and safe data storage and manipulation. In the Databases course we will introduce basic principles and techniques used within databases, explore the structure of databases and database management systems, discuss different roles of different user profiles, review some important commercial and open-source DBMS, and master their practical usage.

### Programming 2

The aim of this course is to present in detail  a  modern, general purpose, fast, secure, robust, object-oriented programming language Java in details.  In addition to the concepts related to specific programming elements (data types, variables, expressions, operators, memory access,  ...), students will learn programming techniques used in practice and ways of solving problems. They will learn about files, exceptions, collections, and GUI programming.

This course is 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.

### Discrete Structures

Discrete structures are a core subject presenting the necessary mathematical topics that are needed to build on in computer science and engineering. It is highly probable that most of the topics will be new to a typical high school graduate, and also the familiar concepts will be studied in a new setting.

Topics include:
• Formal logic: reasoning, formal proofs in propositional logic, predicates.
• Set theory: naive approach, basics of counting.
• Functions and relations: composition of functions, equivalence relations.
• Number theory: basics, Diophantine equations.
• Permutations: a primer of an algebraic structure.
• Graph theory: basics, walks, paths and connectedness, bipartite graphs, trees, Euler and Hamilton graphs, coloring.
• Recurrence relations.

Coursework consists of weekly homework assignments, midterms and a final exam.

### Mathematics

Mathematics in computer science is similar to gears in a car - you can do without them, in the first and only gear,  but you will move slowly. The more gears you have the faster and further you can get.

For example, computers compute and computations are done by numbers. But what exactly are numbers? How do we tell a computer to use the square root of 2? Computers also draw curves but what exactly are curves and how do we use them to make a computer animation? Computers assist us in handling huge amounts of data. How do we represent the crucial data in a reasonable way? For that we have all sorts of mathematical models and tricks.

We cannot promise you all the answers. However, together we will definitely make a step forward. The course is divided onto 6 chapters: Sequences and series, Functions, Derivatives with applications, Integrals, Vectors, Matrices.

### Introduction to Computer Science

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.

### Computer Architecture

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.

### Algorithms and Data Structures I

Programmingwithout 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."

### Algorithms and Data Structures 2

When the future programmer passes the first two programming courses is in a similar situation as student who mastered alphabet and grammar of a language to the level, that (s)he can manage to write an essay without mistakes. Unfortunatelly, this is not sufficient to write a good essay and get a good mark. What is the problem? The main problem is the content and the form of the essay. To improve this one needs to read a lot. Now, since there are way too many beautiful books and essays around, one needs to prepare a selection of texts.

Similarly is when one wants to write not only beautiful, but also efficient programs. In the core of this course is exactly the same, learning great data structures and algorithms to understand the mastermind and principles behind them, which will make you better programmers. In this course a special emphasis is given to the challenge how to store and organize data that their manipulation will be more efficient. Hence we will learn about stacks, heaps, strangely coloured trees, cuckoo nests and other strange creatures. However, the emphasis will not be given on learning how the algorithms work, but rather why do they work and what are their limitations. Exactly, what differentiates an average computer scientist from a good and successful one.

None

### Industrial Practice

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

### Databases 2

are witnessing an exponential growth in amount of data. Knowledge of modern
technologies in the field of databases and knowledge of approaches of database
design is therefore crucial for understanding the operation of modern
information systems as well as for successful professional work in IT industry.

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.

### Information Systems

systems are present literally at every step. We use information systems at
shops, bus stations, cinemas ... not to mention various information systems
accessible via the Internet. Behind a more or less friendly user interfaces there
are complex information systems that collect, process, store and distribute
data. Information systems play a key role also in enterprises. Not only that
enterprises use information technologies to support their existing business
processes, but more importantly the introduction of information technologies
allows for significant improvements of these business processes and even introduction
of a completely new business models that result in a significant competitive

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
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

### Graphic Design

They say the pen is mightier than the sword. They also say a picture is worth a thousand words. I am positive that you have already heard this two statements; some of you, I believe, have even taken a moment to think about it. But have you already heard that by reducing the number of used colours you can express more than if you used many of them? That with their appropriate use you can evoke in the user a sense of tranquillity, or make them feel anxious? What about typography? You still swear by Times New Roman and Arial? Or Cambria and Calibri, for those of you that have been “ribbonized.” Have you ever thought that something so static as a typography can be used to express feelings? Yes, you can (and you will have to). If you are perhaps already wondering if this is not the Faculty of Computer Science, let me reassure you. Even though the norm is treating form and function as separate (at least in software development, ask around if you are in doubt) this course will show you that there are occasions when one needs to treat them jointly. Form not on the expense of function, but form that supports function. By applying principles of graphic design a simple chart can be made such that the user will easily read the most important data; it can be made such that the user will discover new knowledge; it can also be made such that will on purpose lead the user to a false conclusion. The same is true for user interfaces. What is the secret of the iOS? Why in Windows 8.1 only the close button is red? Does this invite us to close them? Why in OSX the minimize, maximize and close buttons are green, yellow and red respectively? Believe me, by the end of the semester the world will seem different.

### Communications Protocols and Network Security

Students already learned about basic principles of communications and operating systems. In this course we will learn in a greater detail about some more important protocols and in the second part about the about the principles of ensuring protection and security of (more general) ICT systems. The goal of the course is learn practical issues. However, the theoretical background is presented at the necessary level.

### Computer Organisation

The ultimate aim is an in-depth look into the structure and function of the computer and its components. First of all, we introduce the simplest building blocks of digital integrated circuits, which are assembled into more complex components of modern processing units; we study their structure, implementation and operation. Among the practical examples we present microcontrollers from ARM family and the latest models of Intel processors (e.g. Core i7). In large part, we focus on the speedup of computer systems by means of parallel computation on the instruction level within a single processing unit (pipeline) and then also at the level of aggregation of multiple units in a system (multi-core processors, multi-processors, multi-computers). We explain the reasons why the development runs primarily in the direction of parallelization of the systems and explain the consequences from the perspective of a programmer and a designer of computer systems. In this context, we also study the structure of the most powerful computers with a large number of processing units. In all these systems, powerful interconnection paths for data transfers are very important and also presented (e.g. PCI, USB, PCI Express). Then we explain the operation of some commonly used input and output devices - hard drives, flash memory and adequate data transfer types (e.g. Interrupts, DMA, I/O processors). In the context of laboratory work, we consolidate and deepen our knowledge with the programming and use of the actual embedded system with ARM microcontroller – “FRI-SMS” (during semester, you can borrow system for home use). We switch on and off light emitting diodes (LEDs), program input output devices and assemble simpler applications.  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.

### Digital Circuits

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.

### Computer Graphics

There is no hero among you who can pledge that they have never used their computer for playing games. Some of you have been drawn into the study of computer science precisely due to that wish to develop computer games. The history of computer games goes as far back as 1950s, when academics began designing simple games and simulations as part of their computer science research. The current trend of ubiquitous computing and availability of mobile devices puts the entertainment industry at the top of profitability.

In the Computer Graphics course we will make the first steps in visual representation. We will learn how to explain to a computer, which in its essence relies on zeroes and ones, what a triangle is. How it can by using linear algebra and matrix multiplication create such a representation of the triangle that will give us a sense of space, regardless if the screen on which it is displayed is flat. How to turn on lights and shade the triangle accordingly to emphasize the feeling of space. We will take a trip down the graphics pipeline and discover the approaches that enable current games the display of millions of triangles at interactive speeds. We will also make the first steps in the world of animation, where we will learn about the twelve principles of animation which make animated films so lifelike. Basically we will play a lot.

### Artificial Intelligence

Do you like movies? Science fiction? Did you watch the Matrix, Terminator, 2001: A Space Odyssey, Artificial Intelligence, Lara Croft? Then you probably think you know what artificial intelligence is. Ever since the creation of the first computers, heated scientific and philosophical debates are taking place whether it is possible to create an artificial system which will act intelligently.

Nowadays programs help physicians diagnose illnesses, discover insurance and stock exchange fraud and they even decide on which shelf to place items in the supermarket. Who (or better: which) is the world's strongest chess player? How the human genome analysis is taking place? An intelligent system is a capable and useful system, and many of today's programs are capable and useful, but they are highly specialised and capable to solve problems in limited domains.

There is no intelligence without learning, so we have to prepare computers to start learning, not just memorizing, because a true knowledge is the key to practical intelligence and efficient solving of problems. In Artificial Intelligence course you will learn enough of technology background to realize why there is such a big gap between public expectations and reality, what intelligence really is and how we simulate it with computers. You will get an overview of successful problem solving techniques based on artificial intelligence like machine learning. The contents includes knowledge representations, neural networks, natural language processing, and heuristic search. You will learn that artificial intelligence uses evolutionary methods and agents.

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 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.

### User Interfaces

User interfaces in applications are intended for easy and transparent transmission of information from the application to a user and vice versa. Even a very good application can't be successful without a good user interface. The user is usually not familiar with algorithms, data structures and other programming solutions, which are responsible that the application works exactly as is expected of it. But the user sees the user interface and its every error or deficiency. The most important criterion when deciding which application to use (from several similar,  which perform more or less similar tasks), is frequently precisely adequacy and simplicity of the user interface. In this course you will learn, what are the characteristics of the modern user interfaces and  what principles are hidden behind their implementation. You will also learn how to create good user interfaces for desktop applications as well as web applications.

### Compilers and Virtual Machines

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.

### Testing and Quality

What is the first thing the cook does when
he finishes preparing a dish? He tastes it and (maybe) adds some salt or pepper.
He can be confident the dish is tasteful as he strictly followed the same
recipe as many times in his long cooking career.

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!

### Information Systems Development

The
development of modern information systems is a complex process that must consider
not only the complex technological challenges, but also a variety of
organizational factors, which often fatally impact the success of the development
projects. Rapid changes in information technology and business environment
additionally increases the complexity of the development process. Development
teams must be prepared to continuously integrate changes and new requirements.
Furthermore, they must be able to cooperate in large project teams involving
several different organizations. Participation and/or management of such teams
requires a lot of knowledge and experience. Even an excellent programmer is unable
to properly cooperate in a project team, if he doesn’t understand the meaning
and content of requirements and design documentation. Moreover, he also needs
to understand his role in the context of other development procedures such as requirements
acquisition, testing, etc.

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
development teams as a part of your professional work.

### Multimedia Content Production

The
course aims at familiarizing the students with different aspects of multimedia
content production. The emphasis is on learning about the entire production
cycle, on creative work with modern technologies and tools for recording,
editing and delivering of multimedia, as well as understanding of specific
expressive and communication possibilities in new media.

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.

### Digital Signal Processing

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.

### Web Technologies

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?

### Input-Output Systems

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

### Digital Logic Design

Students
enrolled in the course are already familiar with the fundamental approaches used
in digital circuits design. However, several computational digital circuits design
tools allow us to design more complex logic circuits more straightforwardly. These
tools support the designer to describe the behaviour of a circuit with various
hardware description languages, such as VHDL (Very high speed integrated circuit Hardware Description Language).
Students will try to implement selected devices in FPGA (Field-programmable Gate Array) chips. Our challenges will be
implementation of different controllers (e.g. ATA disk, Sound Codec AC97,
Ethernet, VGA card) or maybe your own microprocessor?

### Data Mining

The purpose of the course is to teach students how to mine data. After completing the course, the students should be able to use the data for extraction of patterns and hypothesis that should be potentially useful for the data owner.

### Computer Science Skills: Containers, Kubernetes and DevOps practises

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.

### Computer Science Skills 2

The students will learn how to program x86 compatible personal computers in assembler.

## Startup management

The purpose of the course is to introduce business and management of a startup, from initial idea to everything needed to run a business.

We’ll discuss the tools and skills that turn an engineer into a successful entrepreneur. Students will learn about business, marketing, product management, planning, markets, financial management, crowd funding, fundraising, managing of mobile apps, HW management, social app, etc.

During the course we will run a business incubator where teams of students will be able to transition from an idea into a business and learn everything needed for successful market entry.

### Software Engineering

The field of software development is not as young as you might thing – it is much older than you; actually, it is even much older than the majority of the professors at our faculty. Therefore, it is also quite heterogeneous and covers the development from specialized drivers to extensive banking information systems. The technologies in this field, as well as in the computer science in general, are changing fast, striving for new and better solutions, although prospective solutions and good practices survive these technological changes and often even reincarnate in the new technologies; similarly to jeans and The Beatles that are trendy almost from their first appearance. There are some "general truths" in the software development that every programmer should be familiar with. The subject Software engineering offers these useful practices and practical knowledge to the students.

The student is first put in the role of a project manager in the development of a software system, which requires many months of development, will have numerous functionalities and might be used by thousands of users. The expertise in software development is therefore very important, as well as familiarity with various approaches to software development and related activities, such as user requirements analysis, design, implementation, and also software maintenance, where the best practices, accumulated through many years in software engineering, are irreplaceable.

A special emphasis is given to good programming practices for computer programmers. As we need high quality ingredients and chef's precise execution of the recipe to prepare an excellent cake, there is only one way leading to the excellent program: carefully designed and accurately performed steps of program development. And what is the most important in the process? For cake, it is definitely the chef; and for software, it is the programmer. The cake tastes so good because the chef puts in her experience of many years and the knowledge of generations. What about the programmer?

The course requires solid knowledge in programming (especially in Java language), algorithms and data structures, and databases. Beside lectures and laboratory exercises, it includes also project work in teams, covering everything from project preparation to its realization and presentation.

### IT Governance

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

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

### Multimedia Technologies

Different kinds of media are ubiquitous in everyday life, as music, images, movies, TV and web follow us everywhere. In the subject, students 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.

### Parallel and Distributed Systems and Algorithms

The
statement "Let’s buy a four-core processor to carry out the work four
times faster" is ridiculous and misleading. This is common knowledge toanyone
who understands how to build parallel systems, integrate cores, processors, and
computers in a working system and program a system in such a way that the
programs perform in a more efficient way. To make you one of them, during this
course we will familiarize you with multi-threaded programming, the programming
of general purpose graphics processing units with the Open CL library, with MPI
standard for programming distributed system, with grid computing, and cloud
computing.

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.

### System Software

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.

### Process Automation

Automation
is playing an increasingly important role in the global economy. Engineers
strive to automate all sorts of devices and integrate them into complex
computer systems to help people as much as possible in their activities.

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.

### Embedded Systems

Š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.

### Robotics and Machine Perception

Scenario No. 1: Dan
steps at the platform above the production line in his company. Below he sees a
number of tireless robots on the conveyor belt assembling newly produced cars.
Day by day, hour by hour, minute by minute. They don't care about anything else;
they just do their job. Their perception and skills are developed to perform
specific tasks or to control if a specific task has been done properly. And
they perform their job excellently! They detect even the smallest
irregularities on the produced components with a great accuracy, they can
estimate the distance and shape of the object using 3D vision, they can
manipulate them with the robot arms. Everything is in place. The car production
is running smoothly.

Scenario No. 2: Dan
withdrew in the last moment from a missile fired by the robot XG68. In the
morning Dan rebelled against the robot’s order and now a platoon of humanoid
robots, a special division for dehumanization of disobedient people, is chasing
him. He will be punished for civil disobedience. In a society ruled by the
robots, people are obliged to strictly comply with their commands!

During this course
we will deal with the scenario No. 1. You will learn how such robot systems
work, what are they compound of, what methods do they use. You will understand
the basic principles of machine perception and robotics. In particular, we will
deal with different methods of robot vision, which will be used for processing
images, edge and corner detection as well as detection of other shapes. We will
learn how to segment an object from the background and how to process and
describe the corresponding segmented region. We will learn the basics of
three-dimensional vision and the basics of robotics as well as the set up
and  the operation principles of the
robot manipulator. You will master the principles and methods in theory and in
practice.

We will not deal
with the robots from the second scenario. And you don’t have to worry about
them. People will forever remain the robots’ masters. We shall, however, learn
how to use them for our good as much as possible.

### Game Technology and Virtual Reality

The course will take you on the journey from the game concept document to sprite atlas, sprite batch, animation, i/o control, physics, gameplay, artificial intelligence and further on to sound, architecture, scene representation, serialization etc.

The focus at lectures is on game pipeline, while at labs the focus is on implementing presented concepts in your own game and its publication on the AppStore.

### Decision Systems

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.

### Numerical Methods

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.

### Physical education

Physical
education

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)

### IP A (Social and Information Network Analysis)

Selected Topics in Computer and Information Science: Analysis of Networks (ASI)

World Wide Web, blogging platforms, instant messaging and Facebook can be characterized by the interplay between rich information content, the millions of individuals and organizations who create and use it, and the technology that supports it. The course will cover recent research on the structure and analysis of such large social and information networks and on models and algorithms that abstract their basic properties. Class will explore how to practically analyze large scale network data and how to reason about it through models for network structure and evolution. Topics include methods for link analysis and network community detection, diffusion and information propagation on the web, virus outbreak detection in networks, and connections with work in the social sciences and economics.

This course is based on the course CS224W offered by Stanford University and serves as a continuation of the course Topical Research Themes I: Introduction to Network Analysis (INA). The course will precisely follow the CS224W schedule, material, coursework, grading policy etc. Lectures will be held in English, while practice will be in either English or Slovene.

The course is offered in the winter semester starting on September 24th, 2018 and lasts for ten weeks.

For more see eUcilnica.

### Computer Science in Practice I

Within the Computer Science in Practice you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### Computer Science in Practice II

Within the Computer Science in Practice you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### Splošne teme (MAG)

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.

### Web Information Extraction and Retrieval

Web is almost an unlimited source of information. Using search engines such as Google, Bing and similar we can easily find web pages with possibly relevant information. The number of returned pages would usually however be very large which does not allow for manual processing. The solution to this are computer programs that are able to find and extract relevant information from possibly very large number of non-structured or semi-structured documents and return results in structured form.

COURSE GOAL

The main objective of this course is to teach students about how to develop programs for web search (including surface web and deep web search) and for extraction of structural data from both, static and dynamic web pages. Beside basic concepts of the web search and retrieval, students will learn about relevant techniques and approaches. After the course, if successful, students will be able to develop programs for automatic web search and structured data extraction from web pages (including search and extraction from on-line social media).

COURSE CONTENT

The main topics that will be addressed within the course are:

• Information Retrieval and Web Search (Basic Concepts of Information Retrieval, Information Retrieval Models, Relevance Feedback, Evaluation Measures, Text and Web Page Pre-Processing, Inverted Index and Its Compression, Latent Semantic Indexing, Web Search, Meta-Search...)
• Web Crawling (A Basic Crawler Algorithm, Implementation Issues, Universal Crawlers, Focused Crawlers, Topical Crawlers, Structured Data Extraction, Wrapper Induction, Instance-Based Wrapper Learning, Automatic Wrapper Generation, String Matching and Tree Matching, Multiple Alignment, Building DOM Trees, Extraction Based on a Single List Page or Multiple Pages...)
• Information Integration (Schema-Level Matching, Domain and Instance-Level Matching, 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.

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) .

### Human-Computer Interaction

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.

### Mathematics II

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, functions of several variables and vector analysis).

### Mathematics II

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).

### Functional programming

Every programmer should gather insight into programming techniques that are different from the well-known procedural and object-oriented approaches. Lately, the functional programming paradigm is gaining popularity and allows decomposition of programs into independent functions, that can be executed in parallel.

In the Programming course we will study functional programming in programming languages ML and Racket. We will talk about: language typing, lexical and dynamic scopes, function closures, and also develop an interpreter for a custom programming language. Our goal will be to gain deeper understanding of  programming languages' and mastery of programming.

Prerequisites for taking this course are basic programming skills in procedural programming languages (such as Java, C++, Python) and understanding of recursion.

The course consists of lectures, laboratory exercises and homeworks.

### Functional programming

Every programmer should gather insight into programming techniques
that are different from the well-known procedural and object-oriented
approaches. Lately, the functional programming paradigm is gaining
popularity and allows decomposition of programs into independent
functions, that can be executed in parallel.

In the
Programming course we will study functional programming in programming
languages ML and Racket. We will talk about: language typing, lexical
and dynamic scopes, function closures, and also develop an interpreter
for a custom programming language. Our goal will be to gain deeper
understanding of  programming languages' and mastery of programming.

Prerequisites
for taking this course are basic programming skills in procedural
programming languages (such as Java, C++, Python) and understanding of
recursion.

The course consists of lectures, laboratory exercises and homeworks.

### Algorithms

To survive in the brave new digital world students have to get acquainted with the programming toolbox and make at least a byte shovel. The word is about algorithms
and data structures, which in computer science are basic tools to transfer
ideas and dreams into reality.

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.

### Algorithms

This masters level algorithms course aims to refine the algorithmic thinking of a student, moving her/him from an algorithm consumer to an algorithm designer. The project-oriented course structure is tailored to facilitate the transition. The first part of the course focuses on the analysis of algorithm complexity and correctness, amortised and probabilistic analysis, while we later discuss advanced data structures, approximation algorithms, heuristic methods and biologically-inspired computing. The course also introduces computational geometry and parallel algorithms.

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.

### Computer Systems

This course is about computer hardware. We will not deal
with processors and RAM, which you presumably already know from previous
courses, but rather with "the rest". The input/output or peripheral
devices are the most visible part of any computer system, however, they are not
really part of the computer in the strict sense. They are connected to the
computer in order to extend its functionality. Through many of them humans can
communicate with the computer. These include input devices such as keyboard,
mouse, scanner, output devices, such as video adapter, monitor, sound card,
speakers, and data storage devices such as hard drives, USB flash drives, CD,
DVD, Blu- ray, magnetic tapes, etc.

Closely connected with the peripheral devices are also
certain types of computer buses used for connecting these devices, for example.
PCI and USB. As computer buses are examples of electric transmission lines, we
will look at the basic characteristics thereof, for example, phenomena such as
reflections and crosstalk. We will also mention some of the older standards,
for example, RS-232. We will review certain cases of drivers, i.e., programs
that allow communication with peripheral devices, on an ARM-Cortex
microcontroller.

### Computer Systems

The course presents a holistic view on computer systems. The
principles of operation, data input/output and processing components
of resource-constrained computer systems are examined. The course goes
beyond a single computing device and considers systems composed of
cyber-physical systems, namely, the integration of computing,
communication processes and physical-world sensing/actuating. We
present the fundamental aspects and the key trade-offs that govern
these processes. We then delve into the workings of micro-controller
platforms and inspect how different peripheral and data processing
components interplay. We pay a particular attention to the software
modules intended to control different hardware components within a
system, and to the overall orchestration of components via real-time
operating systems for embedded devices. Component minimisation and
falling hardware prices facilitate pervasive deployment of low-cost
computing devices, thus, we study the means of distributed
computation, communication and interaction among heterogeneous
embedded devices. Finally, we look into real-world applications of
wireless-enabled computing systems.

### Human-Computer Interaction

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.

### Image based biometry

---
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.

### Approximation and randomized algorithms

The course will offer the following themes:

•    Introduction
    Computational complexity of decision and optimization problems
    NP-complete and NP-hard problems
    Heuristic algorithms, quality  of  suboptimal solutions,  (non)existence of a guarantee of quality
•    Approximate solving of  NP-hard problems
    Approximation algorithms
    Quality of approximate solutions
    The class APX
    Gap technique
    Approximation schemes
    The classes PTAS and FPTAS
    Limits of approximate solving
•    The design of  approximation algorithms
    Greedy method
    Focusing on subproblems
    Iterative partitioning
    Dynamic programming
•    Randomized solving of NP-hard problems
    Las Vegas and Monte Carlo algorithms
    The classes RP, co-RP, ZPP, PP, BPP
•    The design of randomized algorithm
    Random sampling
    Establishing abundance of witnesses
    Random reordering
    Hashing

### ARP I (A) (Introduction to Network Analysis)

Topical Research Themes 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.

### TRT I: Algorithm Engineering

We will learn the field of algorithm engineering which
guiding principle is to bridge the gap between theory and practice. There
are many well-known cases where classical theory of algorithms
inadequately describes behavior of algorithm in practice such as
simplex algorithm, quicksort, graph planarity, graph minor etc.
Consequently it is of great importance to obtain good implementation
and to experimentally examine the algorithm. During the course we
will look at the algorithm engineering process and its phases:
realistic models of computation, algorithm design, algorithm
implementation, beyond worst-case analysis, experiments, generating
realistic inputs, and creating algorithmic libraries.

### TRT I: Mobile and Ubiquitous Computing

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.

### ARP II (A) (Software Radio for Smart Wireless Systems)

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

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
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
(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.

### TRT II: Applied Bayesian statistics

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..

### Wireless Sensors networks

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.

### Digital signal processing

Would you like to know how to transform a computer into a tool for processing music, speech, picture, telecommunication, navigation and medical signals? Often without any additional hardware, simply by using knowledge. Do you know that you cell phone is in fact a computer which executes signal processing software? Or that several hundred million additions and multiplications are performed every second when an ADSL modem or a digital television is used? Answering questions like how is this possible and what knowledge is needed is the purpose of Digital signal processing course.

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.

### Digital marketing

Due to the rapid changes the course content will accommodate the development in this area:

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

### Discrete Mathematics

Do not be scared by the mathematics word in the title. Discrete mathematics is the region of mathematics planet that works best with computers. In mathematics we are often satisfied with a single solution to the problem, in computer science this is almost never the case. Among all possible solutions we shall look for the one that can be rewritten as an efficient algorithm (or, not equivalent, can be efficiently rewritten as an algorithm).

Mostly we shall work on problems in graph theory. Let me pin out a pair of problems that we shall keep running into: graph coloring and the problem of disjoint paths. In general, graph coloring problems are hard (in the theoretical sense). Yet if we only consider a subclass of graphs, planar graphs for example, even graph coloring problems become easy enough to work on. The problem of disjoint paths can be generalized into several directions, directed or undirected graphs, vertex- or edge- disjoint, separate terminals or not, looking for bottlenecks, maximizing flows.

Most of the problems we shall work with will become easy on a restricted set of graphs having the property, that a small collection of cops can catch a fast robber, which will lead us to the land of graph decompositions.

Finally we shall dig into a collection of problems from computational geometry: segment intersections, polygon triangulations, Voronoi diagrams and Delaunay triangulations.

The students are required to have sufficient knowledge in the area of algorithms and data structures and have a command on time and space complexity of algorithms.

Student work includes weekly homework assignments and a final exam.

### E-Learning

What is E-Learning
Learning theories
Learning models with focus on E-Learning
Educational games
Videoconferences in education
WEB technologies in education
Computer supported animations and simulations in education
Reusable learning objects
Learning Management Systems (LMS)
Standards for E-courseware
Packaging od E-contents, software tools
Effective E-Learning
Electronic interaction
Remote laboratories
Mobile Learning
Writing eLearning courseware
Quality assessment of E-courseware
Digital libraries

### Information Security and Privacy

Do you want to know how encrypted data can be processed correctly so that a processor is “not aware” of their content? Would you like to know how BitCoin works and be able to make a similar solution on your own? Are you interested in becoming a (chief) security officer, information systems security auditor, or a specialist in cyber-security operations? If yes, welcome to Information Systems Security and Privacy course.

Information systems security and privacy is one among key focuses in contemporary information systems, ranging from business environments, public environments to private environments, and even to the level of states security. Students will get a knowledge (theoretical and practically applicable) about security and privacy provisioning ranging from ordinary information systems to internet of things and cloud computing. The goal of the course is to provide students with appropriate knowledge to a such extent that they will be able to pursue careers as developers, system administrators, managers (like chief security officers) and consultants.

The course will start with an overview of historical development of this field and key standardization organizations and bodies (ISO, ITU-T, ANSI, IETF, W3C, OASIS, OMG,...). Next, risk management will be discussed, followed by security mechanisms and services (principles and practical applications). Next, public key infrastructure, privilege infrastructure and Authentication, Authorization and Accounting infrastructures will be covered (time base synchronization, Radius, etc.). Afterward, security will be covered along the IP stack, layer by layer, from physical to application layer (protocols will include WEP, WPA, WPA2, IPSec, TLS, S/MIME, SET, XMLSec, XAML, XACML, and WS-*). Development and verification of security and privacy systems strongly depends on formal methods, therefore hese methods will be presented with some key representatives (e.g., Rueppel's formal method). Last but not least, we will focus on specifics of cloud security, privacy in the Internet of things and digital currencies (BitCoin).

The main thread of this course will be complemented by hands-on laboratory works. But also lectures are going to be "refreshed" by including practical work on selected, special topics like security simulations, documents security within operational PKI, etc. This course assumes familiarity with the basics of Computer communications and / or Computer protocols courses, and Wireless mobile ommunications course, because it extends significantly the basics given in these courses. The course will be in English, while in case of only Slovene speaking students it may be conducted in Slovene.

### Interaction and Information Design

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.

None

### Cryptography and Computer Security

Information/Computer  Security  describes  all   preventiv  measures,  procedures  and  means  to  ensure  access  to  Information  Systems  and  their contents  in  order  to  prevent  their  unauthorized  use.  Cryptography  provides  maximum  security  while  at  the  same  time  preserves  the flexibility of  digital media.  It  forms  the  foundation  of  Information  Society  (objectives: privacy,  data  integrity,  digital  authentication/signatures, digital  cash, and  other  cryptographic  protocols;  it  covers  Mathematics,  Computer  Science,  Electrical  Engineering,  Finances, Policy,  Defense,  etc.).    In this  course  will  cover  the  some basic of  Symmetric  Cryptography,   Public‐key  cryptography      (Asymmetric  Cryptography)  and Computer  and  Information  Security  .

### Management of production and service processes

The aim of
the course is to learn the development of process applications - applications
that directly support business processes in enterprises. They are also known as
composite applications. The development of process applications is becoming
increasingly important as organizations and companies want IT support of processes
as a whole and not just individual activities. Process applications are developed
in Executable BPMN or BPEL (Business Process Execution Language). In this
course we will learn two important aspects: 1) The design and development of process
applications and 2) SOA - service oriented architecture, which provides the
basis for the implementation of process applications. In addition to the
concepts and approaches, we realized that the process applications significantly
change the development mode, which is based on the process modeling, composition
of services, implementation and monitoring.

Many
experts believe that the development of process applications is the future of

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.

Lectures:

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.

### Advanced topics in computer vision

The course will include selected advanced topics in motion perception using computer vision. Concrete topics will change each year according to trends in this fast developing field.
in computer science and industry. Potential topics will include:
1.    Overview of the field motion estimation and applications.
2.    Optical flow estimation using least-squares.
3.    Variational optical flow estimation.
4.    Parametric template tracking using Lucas-Kanade.
5.    Histogram-based tracking using Mean Shift
6.    Tracking as stochastic optimization using cross entropy.
7.    Recursive Bayes filter for online state estimation.
8.    Tracking by Kalman filter.
9.    Tracking by particle filters.
10.    Tracking deformable objects by constelation models.
11.    Methodologies of tracker comparison.
12.    Tracking by classification.
13.    Long-term tracking by detection.

### Unconventional information processing methods and platforms

Capabilities of information processing platforms have been rapidly increasing in the last four decades in the meaning of their speed and sizes. We are starting to reach the limits of possible capabilities of technologies on which current platforms are based. With their continuous minimization reliability of their behavior is questionable while quantum level will be reached. There are also many other problems that current technologies are facing, for example energy consumption, relatively high prices etc. These problems obstruct the evolution of computers from an era of desktop computing to an era of ubiquitous computing. Ever since humans have been using their “tools” as labor saving devices mainly top-down approach strategies have been employed, which means that tools are used in order to manipulate materials in manufacturing processes. Manufacturing processes employ big material and energy consumption and have a side effect of by-products which are unfit for use. Many great thinkers of our time point out that top-down approach is obsolete and that transition to synthetic approach (bottom-up approach) has to be established, which means that product will be built from basic entities using automatized procedures. Such development brings many new possible applications to information processing on the fields such as pharmacy, medicine, construction engineering, good production, etc. In order to solve the problems of current information processing technologies alternative processing platforms and methods are being intensively investigated and developed in the last years. During this course currently present alternative information processing platforms will be presented, such as quantum dot cellular automata, DNA based information processing platforms, nanotubes, optical information processing platforms etc. Moreover methods they employ will also be investigated, such as quantum processing, reversible processing, processing with more than two logical states, amorphous computing etc.

### Numerical Mathematics

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.

### Biomedical Signal and image Processing

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.

### Natural language processing

The syllabus is based on a selection of modern statistical natural learning techniques and their practical use. The lectures introduce the main tasks and techniques, explain their operation and theoretical background. During practical sessions and seminars the gained knowledge is applied to language practical task using open source tools. Student investigate and solve assignments, based on real-world research and commercial problems form English and Slovene languages.

1.    Introduction to natural language processing: motivation, language understanding, Turing test, traditional and statistical approaches.
2.    Language resources: corpuses, dictionaries, thesauruses, networks and semantic data bases, overview of tools.
3.    Linguistics: phonology and morphology, syntactical analysis, formal grammars.
4.    Using automata and grammars: automata and algorithms for searching strings, syntax parsing, dependency parsing.
5.    Part-of-speech tagging: types of tags, lemmatization, ngrams, Hidden Markov model, rule-based tagging.
6.    Computational and lexical semantics: semantic representations, rule-to-rule approaches, semantic role labelling.
7.    Clustering words and text similarity measures: cosine distance, language networks and graphs, WordNet, vector representation, vector weighting, sematic correlation.
8.    Text mining: adaptation of classification methods to the specifics of text, support vector machines for language, feature selection.
9.    Deep networks for text: document representations for deep neural networks, autoencoders, recurrent neural networks.
10.    Text summarization: text representations, matrix factorization, multi-document summarization, extractive methods, query based methods.
11.    Machine translation: language model, translation model, alignment model, challenges in machine translation.
12.    Augmenting text with other data sources: heterogeneous networks, word2vec representation, heterogeneous ensembles of classifiers, link analysis.
13.    Methodology and evaluation in NLP.

### IT Governance

Enterprise architecture (EA):
•    Challenges of modern enterprises and the role of ICT
•    Stakeholders and their interests in business renovations
•    The existing approaches, the role of strategic IS/IT planning
•    The role of enterprise architecture in the development of business and information systems,
•    Identification and definition of EA (EA metamodel, business, application and technology layer),
•    Views and viewpoints of different stakeholders,
•    Enterprise Architecture Methods,
•    The process of EA development,
•    Organizing the architecture function for development and maintenance of EA,
•    EA frameworks, methodologies and tools (Zachman, Archimate, TOGAF ...)
IT Governance:
•    IT processes
•    Service support
•    Acquiring of  services
•    Service Management
•    Security management
•    Infrastructure management
•    Applications management
•    Risk Management
•    Change management
IT Management

### Data Mining

This is a practical course on data mining. Typically, we would consider picking up a data mining challenge at Kaggle, and then during a course learn about challenge-related methods through theory and practical implementations. Implementations would most often use Python and related data analytics libraries that include numpy, scikit-learn, Orange and libraries for data visualization such as matplotlib and NetworkX.

The course involves homeworks, which are due every two weeks and where you are expected to complete a mini-project and report about the implementation and results. In the first half of the course, mini projects help us to get familiar with the data mining methods and techniques, and in the second part help us to get started with a chosen challenge and then dig into it to improve on challenge results.

Homeworks are at the first half of the course individual, and towards the end of the course carried out in smaller groups of two to three students. The homeworks replace written exam and the course grade entirely depends on their quality. There's no oral exam.

Typical data mining techniques that we got familiar to during the previous installments of this course include assessment of similarity, clustering, methods for classification (logistic regression, neural nets, random forests), feature subset selection techniques, and techniques for recommendation systems.

None

### Digital Forensics

Probably one of the biggest charms of Computer Science is, that it appears so frequntly connected to other disciplines. Digital forensics is yet another of this areas. It is a branch of forensic science, which deals with acquisition and analysis of data related to digital equipment. The later are often connected to computer crime. The course is split into two parts. In the first one we will look into basics of digital forensics that need to be respected when performing forensic activity, that its outcomes are acceptable in the court of law. In the second, larger part, we will look at various operating systems and communication technologies. In detail, we will look at various technological procedures that are necessary to make collected data admissible in a court of law.

Student duties consists of assignments (quizes), two lab assignments where they simulate a criminal investigation, and an essay where they meet the most contemporary research in the area.

### Computer Based Sound Production

So you want to develop new sound effects or be able to create completely new sounds? Or you are interested in producing a musical piece to the point, when you sell it on iTunes or Amazon.com? You want to develop a new audio application for your mobile platform and offer it on Google markets? Or you want to know more about how humans perceive music and do some research in this area? Then you are welcome to Computer sound production course.

Beside visual component contemporary e-media heavily depend on sound component. The goal of this course is that students with engineering (and also other) backgrounds acquire theoretical and practical knowledge in this domain for studio production, software development (engineering), or creative applications like multimedia, video, simulations, virtual reality and computer gaming. After the introduction and historical overview, physics basics will be given, followed by mathematical themes (from Fourier analysis and synthesis to Gabor's acoustical quantum). Next come physiological facts, i.e., psychoacoustics and hearing perception as it is constituted in the brain. In the core of the course computing and networking themes will be covered: analog and digital signals and their conversions, quantization noise, bandwidth, dynamic range, amplification, attenuation and filtering, distortion, sound recording, etc. This will be followed by computer sound generation principles (synthesis, sampling), sound acquiring and recording devices (microphones, samplers and direct-to-dics recording). We will address standard studio equipment like mixing consoles, limiters, compressors, reverberators, equalizers. In the second part the protocols and formats in this domain will be covered: MIDI, IEC-60958 (AES / EBU), S/PDIF, AC-3, WAV, MP3, and synchronization mechanisms MTC and SMPTE for video and movies production. Next come program standards (APIs) like VST / Steinberg and DirectX / MS, and streaming media enabling protocols like RTP, RTCP and RTSP. Digital audio workstations ranging from professional ones (like Cubase / Steinberg and Sonar / Twelve Tone Systems) to quality open source solutions (like Rosegarden) will be covered as well. The last topic will be sound synthesis theory and optionally sound visualization or computer based sound creation. The lectures will be ended by professional video lectures in the area of sound production (from recording to mixing and final production).

Practical laboratory work will be aligned with the lectures through hands-on projects. But also the lectures will be conceptually reworked so some special topics will be covered with hands-on work also during the lecturing. This includes theoretical concepts learning by using packages a'la Mathamatica or Mathlab, generation of sound fonts for MIDI sequencers, music pieces creation and their recording and mixing, etc. Finally, this course does not have specific requirements as to previously attended lectures. It is assumed only that students have finished the engineering level mathematics course(s). The course will be in English, while in case of only Slovene speaking students it may be conducted in Slovene.

### Cloud Computing

The aim of the course is to gain knowledge of the development of innovative cloud computing and cloud applications. Cloud computing is changing the way applications are developed. We will become familiar with concepts, architectures and cloud technologies - the cloud-native architecture.
In addition to gaining in-depth knowledge of cloud computing and all levels of service orientation (XaaS; Iaas, PaaS and SaaS), we will learn in detail the architectural model, patterns and best practices for the development of cloud-native applications, which includes a multitude of concepts.
We will begin with the microservice architecture and learn about the development patterns for microservice. We will combine this with Docker (and others) containers and micro-kernels. We will get familiar with container orchestration tools, especially Kubernetes (and others).
We will continue to explore the concepts of cloud-native architecture: services, asynchronous patterns of calling services, circuit breakers, reactive microservice development models, event streaming aka Apache Kafka, configuration, service discovery, health check, metrics, security, fault tolerance, and others.
The goal will be to understand and develop cloud applications that run on resilient and elastic cloud infrastructure and platforms and understand how these applications work and how to deploy them on different cloud services providers (Amazon AWS, Google AppEngine, Microsoft Azure, Cloud Foundry and others). As part of the course, we will get to know the most popular PaaS platforms. We will get familiar with the concepts of private, public and hybrid clouds. We will also set up our own private / hybrid computer cloud.
At the same time, we will become familiar with the DevOps practices that are essential for the development of cloud solutions and learn about the concepts and projects of the CNCF (Cloud Native Computing Foundation) such as Kubernetes, Prometheus, OpenTracing, Fluentd, Istio, Linkerd, gRPC and others. The course is practically oriented. Within the exercises, students in teams will develop innovative cloud solutions using framework such as Spring Boot, KumuluzEE, Node.js, Docker, Kubernetes, Prometheus and AWS, AppEngine, Azure clouds, and others. They will understand the importance of innovation in the cloud.
The best students will be able to participate in innovative projects.

### Computer-based process control

•    Systems and the system theory
•    Principles of control and the control theory
•    Hierarchy of the control systems
•    Industrial sensors
•    Actuators
•    Interfaces and signal connections
•    Industrial communication protocols
•    Programmable logic controllers
•    Programming languages for programmable logic controllers
•    Process control: basics, PID controller
•    Modern process control: fuzzy logic, intelligent control
•    Human machine interfaces
•    The OPC standard
•    The purpose and functions of the Management Execution Systems (MES)
•    Safety
•    Documentation

### Collective Behaviour

Computer scientists seek inspiration for solving current problems from various sources. Many times, they find it in nature, as through evolution living organisms have discovered simple and elegant solutions to common problems. A number of known algorithms uses biomimicry. For example, there is an algorithm that in order to find the shortest path to a destination copies the approach of ants, and an algorithm that in order for a fast wireless network setup emulates the flocking of birds. The goal of the course is to present to students the use of the emulation of nature’s time-tested patterns and strategies in order to create products, processes, computer systems and algorithms. Besides the specific knowledge, the students will gain an insight into the theoretical background by means of which they will be able to adapt more easily to the fast changes in current computer and information science. The acquired competences are transferrable as most of the covered topics are applicable to a wide variety of applications.

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.

A great deal of software projects (60% to 80%) overrun the initial budget and time estimates, and offer fewer features and functions than originally specified.  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.

### Machine Learning

Machine learning is used in industry, medicine, economy etc. for data analysis and knowledge discovery from databases, data mining, for generating knowledge bases for expert systems, for learning predictions and recognitions, playing games, understanding natural language, hand-writing, speech, images etc. A basic principle of machine learning is decribing (modelling) of phenomena from data. The result of learning are rules, functions, relations, equations, and probabilistic distributions. The trained models try to explain data and can be used for decision making during the observation of the modelled process in future. The goal of the course is to present the teoretical basics and basic priciples of machine learning methods, basic machine learning algorithms and their usage in practice for knowledge discovery from data and for learning classification and regression models. Students will apply the theoretical knowledge on real world problems from science and economy.

Overview of course contents:
What
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.

### Artificial Intelligence

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.

### Introduction to Bioinformatics

How similar are living organisms? Have human indeed descended from Neanderthals? How did various species adapt to living environments? Which genes are responsible for susceptibility to common disseases? Why do we need a different flu vaccine each year?

The answers to these and similar questions can be found through the studies of biomedical data. The discipline that does this is called bioinformatics. Bioinformatitians develop tools to find interesting data patterns and supoort understanding of biological processes. They analyze and compare protein sequences, search for genes, assemble genomes, compare species based on their genetic material, forecast protein structures and find active parts of proteins, analyze gene expression, and inverse engineer genetic networks. They can relate the genome to its phenotype and can trace evolution back to its roots to find adaptations and changes in the organisms.

The course is intended for students in computer science. No prior knowledge in molecular biology is required. We will introduce essential concepts from molecular biology and genetics as these are required to understand associated computational tools. We will learn about sequence alignment, hidden Markov models, clustering, phylogenetic analysis, statistical testing and some machine learning. The course will be practical, and will include up to eight homeworks on analysis of real mlecular biology data. Students are expected to have background in essential probability, statistics, and programming. We will use Python as a programming language.

### Data mining and visualization

In the 21st
century our civilization is getting one global data based society. Large
quantities of data are collected everywhere, from traditional fields like
factories, medicine, and science to completely new areas like farming, personal
health, home sensors, kitchen appliances, traffic, cars, and of course internet
with vast collections of numeric and textual data. Yet, data itself means
nothing. We are interested in the patterns and knowledge hidden in it, which
enable us to comprehend trends and decide wisely.

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.

### Computer science and society I

Within the Extracurricular Professional Activity you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### IP (A) (Tools for Large Database Analysis)

Mining Massive Data Sets

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.

### Computer science and society II

Within the Extracurricular Professional Activity you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

### IP (A) (Business Intelligence and Data Science Aspects in Practice)

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

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

### Programming

• 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.

### Introduction to machine learning

Prediction: linear regression, logistic regression, LDA/QDA, nearest neighbors, evaluating goodness of fit.

Feature and model selection: cross-validation, bootstrap, filter methods, wrapper methods.

Advanced prediction: basis expansions, splines, regularization, decision trees, generalized additive models, local regression.

Combining models: bagging, boosting, random forests, ensemble learning.

Support Vector Machines: for classification, for regression, optimization, duality, RKHS (reproducing kernel Hilbert spaces).

Neural networks: fitting neural networks, overfitting and other computational challenges.

### General topics (III)

Splošne teme (III)

### Seminar I

Each doctoral student prepares a review of related research within computer and information science on a topic, which should be aligned with the planned topic of research work and forthcoming Ph.D. thesis. Each student is expected to read and summarize at least 30 scientific papers from the narrower and broader scope of research related to the topic, prepare a review seminar, and present it orally in front of peers.

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.

### Seminar II

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.

### Seminar III

Students prepare an in-depth review of related research on the topic of the planned doctoral thesis. Students are expected to read at least 30 scientific papers, which may differ from those presented for Seminar 1. The papers should be summarized in condensed manner. More emphasis should be on the comparison of related methods and results with methods and results obtained by students in their research work. The review seminar is presented orally in front of peers.

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

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.

### Scientific Skills I

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

### Scientific Skills 2

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 in Software Development 1

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.

### Research Work 2

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

### Selected Topics in Computer Systems 1

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.

### Selected Topics in Computer Systems 1

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 Software Development 1

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.

### Selected Topics in Computer and Information Science

Security Studies and Ethical Hacking

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).

### Selected Topics in Informatics 1 (Information System Integration Methods)

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.

### Izbrana poglavja iz arhitektur in algoritmov 1 (Contemporary Approaches to Algorithm Design)

The subject explains the main contemporary approaches to
the design of algorithms. These approaches include various analysis techniques, design methods and computation models. We describe how we can:

• 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.

### Selected Topics in Computer Systems 1 (Network Measurements and Traffic Monitoring)

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.

### Izbrana poglavja iz umetne inteligence 1 (Incremental Learning from Data Streams)

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 2 (Advanced Topics in Network Science)

Selected Topics in Artificial Intelligence 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.

### Izbrana poglavja iz umetne inteligence 2 (Predictive Analytics for Structured Data)

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.

### Selected Topics in Artificial Intelligence 1

Machine Learning for Natural Language Processing

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.

### Selected Topics in Artificial Intelligence 2

Deep Learning for Computer Vision

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.

### Izbrana poglavja iz matematičnih metod v računalništvu 1 (Selected topics on Cryptography and Computer Security)

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 (Die-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)

### Izbrana poglavja iz umetne inteligence 1 (Big Data)

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.

### Šport in rekreacija za študente

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

### Mobile and Wireless Computing Journal Club

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.

### ŠS FRI

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.

### Help for Moodle users

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.

### Use of IT for study

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.

### Uvod v študij računalništva

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.

### Python 2

Napredne teme iz Pythona

Uganka

### Programiranje za vsakogar

Delavnica Programiranje za vsakogar v okviru Tedna programiranja 2014

### Computer Science in Practice

Within the Computer Science in Practice you can achieve credit points by collaborating within different organized activities at FRI, which are related to pedagogical work (e.g. tutoring) or to computer science in general. Examples of such activities are:

• course tutoring or tutoring for foreign students,
• teaching computer science to interest groups at secondary schools,
• organizing competition in computer science,
• collaborating within challenges from industry,
• providing help with FRI information systems,
• performing professional work within laboratories at the faculty.

The list of possible activities is being continuously updated and is given at: https://ucilnica.fri.uni-lj.si/RVP-OSD.

The course is graded with "pass" / "fail".

### Use of IT for study

-          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

Zemantin programerski izziv 2017

### NIL-ov programerski izziv 2016

NIL-ov programerski izziv 2016

### Celtrin programerski izziv

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

Tukaj bodo objavljene vse novice in potrebni materiali.

### Data Mining (HSE)

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

### Teden programiranja: osnove programiranja v pythonu

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.

### Robo liga FRI 2019

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