The goal of module Computing Science and Informatics is to ensure student's competency for analysis, development, design, and maintenance of complex computer systems, as well as their participation in software projects. Concretely, the goals of this module are related to gaining knowledge oriented to the application of a wide spectrum of information technologies, with which students will be able to design high-quality system and applicative software by using modern software design techniques and methods. Students are trained to develop software in a systematic way, by using a good theoretical basis, using modern methods in programming, and to efficiently use computer systems infrastructure. They acquire key knowledge in the field of software engineering, computer system security, data engineering, and design of information systems using modern information technologies.
COURSES
The first year of Bachelor Studies at the Faculty of Electronics in Nis is common to all modules. The list of all courses in the first year of studies (first and second semester) can be found on the Basic Academic Studies page.
The module differentiation starts from the second year of study (third semester). The list of all courses on the Computing Science and Informatics module, as well as a brief description of each of the course, can be found below:
2. year
III Semester
The name of the course: Discrete Mathematics
Code: 3OER3O01
The number of classes per week:
- Lectures: 3
- Exercises: 2
- Other classes: 0
ECTS: 6
Course outline:
Mathematical logics. Propositional calculus. Propositional functions. Coexistency and logical consequences. Normal forms. Sets. Representations. Operations on sets. Principle of sum. Principle of inclusion-exclusion. Partitive sets. Cartesian product. Principle of product. Relations. Matrix representations. Oredring relations. Equivalence relations.Lexicographical ordering. Functions. Principles of injection, surjection, bijection and complemet. Dirichlet principle. Sequences. Generatrisa functions. Recurrent sequences. Solving linear recurrente relations. Fibonacchi, Catalan and Stirling numbers. Finite differences and summs. Permanent. Computation and properties. Permanent matrix in special form. Sistems of different representatives. Integers. Divisibility. GCD. Euclid algorithm. Diophantine equations. Modular equations. Chinese remider theorem. Euler funtion. Litttle Ferma theorem. Modular arithmetics. Number sequences. Functional sequences. Fourier sequences. Power sequences.
The name of the course: Databases
Code: 3OER3O02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
1. Introduction to databases: basic concepts (data, information, database, database management system, database system, database applications), conventional processing and processing based on databases, database users.2. Data models: levels of abstraction in DBMSs, the concept of data model and its components, process of database design using data models.3. Conceptual design of databases, concepts of (E)ER data model, database design using (E)ER model, exaples of (E)ER database design.4. Relational model: concepts of the relational model, structural and integrity component, relation scheme, relation entity, relation key, constraint specification, SQL DDL commands, mapping (E)ER to relational model.5. Relational algebra: relational algebra, relational algebra operations, relational algebra queries, examples of queries, copmaprision of SQL and relational algebra queries.6. Functional dependencies: definition of a functional dependency, rules of derivation for functional dependencies, closure of a set of functional dependencies.7. Relation schema analysis: analysis process and the quality of the designed database, anomalies in poorly designed databases, relation decomposition in normalization and properties.8. Normalization: the purpose of normalization and normal forms, normal forms definitions and testing (first, second, third and Boyce-Codd's normal form), normalization process.9, Introduction to transactional processing: the concept of transaction, ACID properties of transactions, DBMS level transactions.10. Database system architecture, overview: monolithic systems, multiuser systems, client-server systems, two- and three-layer architectures, parallel/distributed server database, data fragmentation.The name of the course: Object Oriented Programming
Code: 3OER3O03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Programming techniques overview. Problem definition process. Classes. Objects. Using classes in problem solving. Class definition. Class member access. Scope. The separation of interface and implementation. Inline functions. Constructors. Destructors. The call order of constructors and destructors. Copy constructors. Friend classes. Friend functions. Operator overloading. Side effects and connections between operators. Choosing return values for operators. Implementation, inheritance, specialization, generalization. Definition of inherited class. Access modifiers. Types of the inheritance. Constructors and destructors of inherited classes. Pointers and references. Polymorphism. Virtual functions. Pure virtual functions. Abstract classes. Virtual destructors. Arrays and derived classes. Multiple inheritance. Constructors and destructors in multiple inheritance. Multiple derived objects. Virtual base classes. generic mechanism - templates. Template functions. Template classes. Exception handling. Exception throwing. Exception catching. Uncaught exceptions. Input and output streams. Standard streams. Input stream classes. Input stream objects construction. Input stream operations. Extraction operator overloading. Output streams. Stream insertion operator. Output formatting. Output stream operations. Stream insertion operator overloading. Standard library. Namespaces. Container classes (vectors, lists, stack, queues, maps, sets, ...). Iterators, Algorithms, class String
The name of the course: Computer Architecture and Organization I
Code: 3OER3O04
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Review of the basic components of computer systems. Processor instruction set. Addressing modes. Design of a hypothetical processor starting from the instruction set. The structure of the processor and its functions. Register set. Fetch and execution of instructions. Microprocessor programming model. Macros. Procedures and parameter passing. Bus. Memory subsystem. Interrupt procedures. Organization of inputs / outputs. Interrupt-driven I/O. DMA.
Elective Block RA (6 ECTS minimum)
The name of the course: Logic Design
Code: 3OER3A01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Introduction to logic design, the basics of VHDL language for describing logical networks, combinatorial logic networks, combinatoril logic design in VHDL, MSI combinatorial logic networks, MSI combinatorial logic design in VHDL, sequential networks, sequential logic design in VHDL, memory, programmable logic, arithmetic logic circuits, introduction to design of computer systems.
The name of the course: Digital Electronics
Code: 3OER3A02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Logic gates and combinational logic networks: logic levels and digital signals, basic logic gates, logic expressions and combinational networks, Boolean algebra, and algebraic manipulation of Boolean expressions. Implementation technologies: MOSFET as switch, CMOS inverter, CMOS logic gates, programmable logic devices (PLA, PAL, and ROM). Combinational building blocks: decoder, multiplexer, encoder, priority encoder, demultiplexer. Arithmetic circuits: half-adder, full-adder, ripple-carry adder, carry look-ahead adder, ripple carry multiplier, array multiplier. Modeling of combinational digital circuits in hardware description language (VHDL). Letches and flip-flops: SR and D latch, master-slave flip-flops, edge triggered flip-flops. Registers: storage register, shift registers, asynchronous and synchronous counters. Sequential circuits: analysis and synthesis of sequential circuits, algorithmic state machine. Modeling of sequential digital circuits in hardware description language. Memory components: RAM (SRAM and DRAM), and ROM. Data conversion: characteristics of data converters, basic architectures of D/A and A/D converters.
IV Semester
The name of the course: Object Oriented Design
Code: 3OER4O01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Review of methods and techniques for OO design. Object-oriented design using UML unified modeling language. Identification of the elements of the project. Identification of project mechanisms. Description of run-time architecture. Designing Use-Case diagrams. Subsystems design. Designing class: class structure, modeling the states, relations between classes. Design Patterns. The implementation model. Designing components. Distributing applications through Web services. The advantage of components with simpler classes. Decomposition of the system across processors, tasks and threads. Mapping project in a concurent system. OO project example of the real system.
The name of the course: Data Structures
Code: 3OER4O02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline: 1. Introduction: Definition and overview of data structures; data structures in software engineering; pseudocod; complexity of algorithms2. Arrays: array definition, array operations, string data types, sequential and binary search, sorting.3. String and string data type. Definitions of string, operations, searching in strings and text serch algorithms.4. Linked lists: structure definition, linked lists' types - single linked, double linked, cyclical; operations (traversal, addition, deletion), statical and dynamical linked lists' implementation5. Queue, Steck, Deck: structure definiton, statical and dynamical implementation of queue, steck and deck, basic operations (traversal, addition, deletion) 6. Hash tables: structure definiton, term definitions (hash function, collision, synonims), collision resolution (open addressing, linking synonims), hash table implementation, basic operations 7. Trees: basic terms, general and binary trees, basic operations (traversal, addition, deletion), ordered binary trees, statical and dynamical implementation, Heap, search trees, B, B*, B++ trees.8. Graphs: term definitions, statical (adjacency matrix and incidence matrix) and dynamical graph representation (linked structures), operations for statical and dynamical implementation, graph traversals: depth-first search and breadth-first search, shortest path in graph 9. Datafiles: sequential, index-sequential, index-unsequential, multiple keys datafiles.
The name of the course: Programming Languages
Code: 3OER4O03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline: Evolution of programming languages. Compilers and interpreters. Formal description of programming languages. Data types. Static and dynamic typing. Strong and weak typed languages. Imperative programming languages and control structures. Subprograms, parameter passing methods. Object-oriented programming languages. Exception handling. Concurent programming. Functional programming languages. Logical programming languages. Languages for web programming: markup languages and script languages.
The name of the course: Computer Architecture and Organization II
Code: 3OER4O04
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline: Memory hierarchy. Cache memory. Main memory. Virtual memory. Discs. Computer arithmetics. Integer addition/substraction, multiplication and division. Floating point addition, multiplication, division. Rounding errors. Control unit design. Hardware CU. Microprogrammed CU. CISC vs RISC. Instruction pipelining. Pipelining hazards. Overcomming data hazards. Scoreboard. Tomasulo algorithm. Overcomming control hazards. Delayed branh. Dynamic branch prediction. Speculation. Extending instruction pipeline for floating point operations.
Elective Block MP (6 ECTS minimum)
The name of the course: Matrix Computing
Code: 3OER4A01
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline: Partitioned matrices. Special type matrices: orthogonal, unitary, symmetric, hermitian, banded, positive definite, non negative, stohastic matrices. Matrix decompositions and applications: LU, QR, spectral, SVD. Data fitting, FFT, transformations. Eigenvalues computing. Perron-Frobenius theory. Markov chains.
Specification for the book of courses
The name of the course: Graph Theory
Code: 3OER4A02
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline: Definitions. Node degree. Representations. Diameter, excentriciy, radius, cener. Graph sequences.Paths in graph. Connectivity. Components of connectivity. Shortest paths. Bipartite graphs. Graph isomorphism. Spectar of graph. Euler' s graphs. Hamilton's graphs. The sailsman problem. Euler theorem. Trees. Spanning trees. Minimal spannig trees. Prim, Crucal, and Max-Plotkin algorithms. Transformations of spanning trees. Three coding. Internal and external stability of graphs. Covering and matching. Logical permanent. Fundamental cycles and intersections. Graph coloring.
Specification for the book of courses
The name of the course: Numerical Algorithms
Code: 3OER4A03
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline:
Arithmetic of finite length and numerical processes. Nonlinear equations and systems. Newton method. Secant method. Bisection method. Algebraic equations solving. Newton-Kantorovich method for systems of nonlinear equations. Approximation of functions. Lagrange and Hermite interpolation. Leastsquare approximation. Numerical differentiation and integration. Symbolic computation and algorithms. Introduction to software packages Mathematic a .
Specification for the book of courses
The name of the course: Probability and Statistics
Code: 3OER4A04
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline: Random events. Definition of probability. Conditional probability and independence of events. Total probability rule and Bayes' formula. Random variables. Distribution function. Numerical characteristics of random variables. Mathematical expectation, moments, dispersion, standard deviation. Chebyshev's inequality and the rule of "three sigma". Characteristic functions and properties. Distribution of discrete and continuous random variables. Central limit theorem. Basic concepts of statistics. Population and random sample, Central Statistics Theorem. Displaying statistical data from a sample. Statistical distributions. Parameter estimation and efficiency ratings. Confidence intervals.Linear regression and correlation.
Specification for the book of courses
The name of the course: Geometric methods with applications
Code: 3OER4A05
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline:
Types of Errors, accuracy, precision, conditioning and stability. Iterations. Univariate calculus: Function Approximation and data fitting using algebraic polynomials. Geometry of 3D: vector product and applications. Calculus in 3D: conic sections, curves, parametrized curves, regular curves. Calculus of vector valued functions. Linear and affine functions. Convex functions. Level curves and surfaces. Surfaces and tangent planes. Extrema. Approximation in 2D and 3D and applications. Multivariable interpolation: Nearest-Neighbor Interpolation. Barycentric Interpolation. Grid-Based Interpolation. Linear algebra of functions. Approximation via Piecewise Polynomials. Applications to root-finding, numerical differentiation and integration.
Specification for the book of courses
3. year
V Semester
The name of the course: English Language I
Code: 3OER5O01
The number of classes per week:
- Lectures: 2
- Exercises: 0
- Other classes: 0
ECTS: 3
Course outline:
Work on basic linguistic knowledge related to communicative situations in electrotechnology and computing, lexical and morphological knowledge, rhetorical strucutres. Representative models of spoken and written presentations in professional English.
Specification for the book of courses
The name of the course: Operating Systems
Code:
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Introduction and overview of operating systems. Process management. Threads and thread management. Concurrency, mutual exclusion, synchronization and communication of processes and threads. Deadlock and starvation of processes and threads. Process and thread scheduling. Memory management. Virtual memory. U/I management and disk scheduling. File management and file system. Operating system user interface. Security and privacy in operating systems. Architecture and implementation of modern operating systems: UNIX/Linux, MS Windows, Mac OS X, etc.
Specification for the book of courses
The name of the course: Computer Networks
Code: 3OER5O03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Introduction. Uses of computer networks (CN). Taxonomy of CN. The OSI reference model. Protocols and services. TCP/IP reference model. Network hardware and software. Data link layer. Design issues. Services providede to network layer. Framing. Error and flow control. Elementary data link protocols. Examples od data link protocols. HDLC. PPP. Local area networks. Media access sublayer. Channel alocation problem. Multiple access protocols (ALOHA, sloted ALOHA, CSMA/CD). Ethernet. Ethernet cabling. Frame format. Repeaters, hubs, bridges, switches, routers, gateways. The network layer. Virtual circuits and datagrams. Routing algorithms. Network layer in the INternet. IP protocol. IP addresses. Subnets. CIDR routing. Internet control protocols (ICMP, ARP, DHCP). Routing protocols (OSPF, RIP). The transport layer. transport services. Addressing. Connection establishment. Internet transport protocols. UDP. TCP. Socket programming. The application layer. DNS. e-mail. www.HTTP. Network security and kriptography. DES. Public key kriptography. Digital signatures.
Specification for the book of courses
The name of the course: Information Systems
Code: 3OER5O04
The number of classes per week:
- Lectures:
- Exercises:
- Other classes:
ECTS: 5
Course outline:
Introduction (A brief overview of the Information Systems usage, Informatics, Information Technologies, Computer Science). Basic Concepts of Information Systems (Information and Communication Technologies as a technical foundation of information systems. Organizational aspects of information systems. Technological aspects of information systems.) Analysis methods and information systems design (feasibility analysis and proposal of a systemic solution. Modeling and system analysis. System design. Implementation System .) Usage areas of information systems for the solutions with available open source code. (DMS - Information Systems for documents management and work, CMS - Information systems for content management, JMS - Java Messaging Service as an example of the communication infrastructure of information systems, information systems at the level of strategy, DSS - Information systems for decision support, information systems to support work with a large number of users - Customer Management systems, Information systems for knowledge management, Collaborative information systems.)
Specification for the book of courses
The name of the course: Web Programming
Code: 3OER5O05
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Web as Internet's multimedia service. Protocols. Basics of HTML 5 and CSS. EcmaScript 6+. Object oriented concepts of ES. Asynchronous programming and Ajax communication. Server technologies: ASP.NET Core, PHP. XML and JSON. REST and SOAP Web services. Web Sockets and push mechanism.
Specification for the book of courses
Elective Block RB (5 ECTS minimum)
The name of the course: Introduction to the Theory of Games
Code: 3OER5A01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction and general principles: The subject and goal of studying the theory of games. A brief overview of the history of game theory. Basic concepts and definitions of game theory. Terminology. Classification of games. Strategic thinking. The importance and definitions of the rules of the game. Rationality and common knowledge. The notion of equilibrium. Games with simultaneous moves (static games). Games with sequential moves (dynamic games). The concept of domination (forcing). Mixed strategies and unpredictability. Nash's equilibrium. Mixed games. General classes of games and strategies: Cooperative and non-cooperative games. Characteristic games. Strategic use of information. Strategic and tactical moves. Applications of game theory: in informatics, in economics, in political and military sciences. Application in computer logic games. Other applications.
Specification for the book of courses
The name of the course: Fundamentals of Signals and System Analyzes
Code: 3OER5A02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Concept of signal and system, categorization of signals and systems, basics of MATLAB language for description of signals and systems, Furie's analysis of signals in MATLAB, description of systems in the frequency domain in MATLAB, design of analog and digital filters in MATLAB.
Specification for the book of courses
The name of the course: Algorithm Design and Analysis
Code: 3OER5A03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
The role and the importance of algorithms. Algorithm efficiency and complexity. Algorithm generation paradigms (brute force, iterative algorithms, recursive algorithms, recursion elimination, divideconquer, backtracking, dynamic programming, linear programming). Algorithm classification (sorting algorithms, searching, string, graph, geometry algorithms, cryptographic algorithms, data compression, arithmetic algorithms, etc). Algorithms complexity calculation techniques. Algorithm complexity measures and criteria. Basic algorithm analysis: best, average and worst case; empirical. Proofing techniques overview. The role of probability. Data structures and operation complexity. Choosing data structure for algorithm implementation. String algorithms. Approximate matching. Suffix trees and suffix arrays. Dynamic programming. Greedy algorithms. FFT. NP problems. SAT.
Specification for the book of courses
VI Semester
The name of the course: English Language 2
Code: 3OEP6O01
The number of classes per week:
- Lectures: 2
- Exercises: 0
- Other classes: 0
ECTS: 3
Course outline:
Linguistic units related to the most relevant areas of electrotechnology and computing. Acquiring professional expert terminology, syntactic and morphological features of this domain language. Work on academic English language, rhetorical structures that are characteristic of the discourse of electrotechnology.
The name of the course: Software Engineering
Code: 3OER6O02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Introduction and the need for software engineering. Models of software development. Software processes. Agile software development. Basic activities in the management of software projects. Requirements engineering methods. Software Architectures. Software design. Principles of software development. Validation and verification. Systematic software testing. Software metrics. Software maintenance and evolution.
The name of the course: Parallel Systems
Code: 3OER6O03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Fundamentals: Computational model. Evolution of computer architecture, concurrent and parallel execution, types and levels of parallelism, classifications of parallel architectures. Relationships between languages and parallel architectures. Instruction-Level-Parallel Processors: Dependencies between instructions. Principles of Pipelining. Pipelined instruction processing. Superscalar pipeline design- structure, data dependencies, pipeline stalling, in-order issue, out of order issue. VLIW architecture. Branch handling- delayed branching, branch processing, multiway branching, guarded execution. Vector processors. Loop vectorization and parallelization. Processor arrays. Interconnection networks.
Shared-Memory MIMD architectures: Dynamic interconnection networks- shared path, switching networks- crossbar & multistage networks. Distributed memory MIMD architectures. Cache coherence problem, Hardware based cache coherence protocol-Snoopy cache protocol, directory scheme, scalable coherent interface, hierarchical cache coherence protocol. Multicore processors. Programming shared memory systems (OpenMP, CUDA ). Programming distributed memory systems (MPI, Ada). Case studies of recent machine.
Elective Block RC (15 ECTS minimum)
The name of the course: Internet of Things
Code: 3OER6A01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to the Internet of Things (IoT). IoT Ecosystem. IoT Architecture. Microcomputer System Architecture. Microcontrollers. Introduction to the Microcontroller Programming. I/O Devices, Sensors and Actuators. Communications and Information. Non-IP Based WPAN Communication. IP-Based WPAN and WLAN Communication. Long-Range Communication Systems. Infrastructural Devices. IoT Protocols. Cloud and Fog Technologies. Data Analysis and Machine Learning in the Cloud and in the Fog. IoT Security and Privacy. Designing the IoT system. IoT Applications. Philosophy of Information and Ethics of IoT Technologies.
The name of the course: Human-Computer Interaction
Code: 3OER6A02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Basic concepts and historical overview of the area. Objectives of human-computer interaction and relationship with interactive computer system applications. Psychological aspects. Mental models and interface design. Devices for human-computer interaction. Paradigm interactions. Analysis, design, and evaluation of the human-computer interface. Software life cycle and human-computer interaction. Standards and guidelines for the implementation of the user interface. User interface development tools. New paradigms for interaction: ubiquitous computing, virtual reality, extended reality, multimodal interfaces, hypertext.
The name of the course: Database Systems
Code: 3OER6A03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
1. Introduction: Short overview of the relational data model and relational query languages. Basic concepts and database system architectures. Modern challenges for database systems.
2. Advanced techniques of using SQL: different types of joins with SQL, working with dates in SQL, nested queries, data grouping and advanced techniques of grouping.
3. Database management systems: overview of architecture, basic modules and functions
4. Stored procedures, Triggers: concept, purpose and using of triggers, syntax of the trigger creation command, types of triggers and granularity, row-level triggers and expression-level triggers.
5. Processing and optimization of queries: the concept of query optimization, static and dynamic optimization, system catalogue, database statistics and optimization, index structures.
6. Database systems safety: the concept of safety in database systems, safety in database management systems (DBMS), user privileges - granting and revoking (GRANT and REVOKE commands), privilege propagation, safety on view level, DAC and MAC mechanisms of safety.
7. Database application architecture. Separating application data access logic - typical design patterns.
8. Object relational mappers: basic concept, concepts and typical architecture. Creating object-relational mappings for application development over databases. Mapping a relational database model to an object-oriented application data model. Advantages and disadvantages of object-relational mapping. Practical examples of different object-relational mappings.
9. Modern trends in database system technology.
The name of the course: Development of Web and Multiplatform Applications
Code: 3OER6A04
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to ECMAScript. Concept of classes in prototype based language. Lambda functions. ES Modules. Basics of functional programming. Asynchronous programming in ES. Basics of reactive programming. Domain driven design. Design patterns in enterprise Web apps.
The name of the course: Mobile Application and Service Development
Code: 3OER6A05
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to mobile systems, applications and services. Mobile computing/communication devices, wireless networks and protocols. Mobile operating systems, platforms and software environments for development of mobile applications and services. Architecture and design of mobile application and services. Mobile Web, hybrid and cross-platform applications. Mobile user interfaces and interaction with mobile application. Data management in mobile applications and mobile databases. Mobile positioning and location-based services. Sensor data processing and context-aware services. Privacy and security in mobile application and services. Mobile messaging and ad-hoc communication. Contemporary mobile applications and services: mobile commerce and business, mobile navigation systems, mobile tourist guides, mobile healthcare, mobile games, emergency and crisis management, etc
The name of the course: System Programming
Code: 3OER6A06
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to system programming. The executable file format. Program code portability. Compute programme debugging and troubleshooting. Profiling the program. Memory allocation, memory leaks and automatic memory management (garbage colllection). Linking and loading programming libraries. Version control systems. Development of system software using container environments. Concurrent programming: processes, threads and fibers (fibers). Race conditions, mutual exclusion and synchronization. Synchronization primitives in modern programming languages. Semafors and monitors. Message-based concurrent programming. Typical synchronization problems and their solutions. Deadlock and livelock. Concurrent programming with avoiding locking. Programming based on event processing. Synchronous and asynchronous input/output operations. Asynchronous task execution.
4. year
VII Semester
The name of the course: Artificial Intelligence
Code: 3OER7O01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
The notion of knowledge and artificial intelligence; the areas of artificial intelligence application (on real systems examples). Programming languages of artificial intelligence (Lisp and Prolog). Intelligent agents. Formal representation of problems. Solving problems and searching (uninformed, blind and informed, heuristic algorithms: by depth and breadth, searching with uniform price, first best, A*, min-max, alpha-beta cutoff, etc.). Constraint satisfaction problem. Definition and characteristics of knowledge; Representing knowledge: Logical models (first order logic, rules of derivation, logical axioms, resolution). Semantic networks. Production rules and production systems. Frames. Expert systems (architecture and implementation). Working in uncertain environment. Planning. Machine learning: introductory notes. Decision trees. Neural networks and their application. Genetic algorithms - description and implementation. Short overview of other areas through examples: Robotics, Speech and image recognition, Natural language processing, Games.
The name of the course: Computer Graphics
Code: 3OER7O02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to interactive computer graphics and computer graphics systems. Hardware for computer graphics. Raster graphics algorithms for drawing, clipping and filling 2D primitives (lines, circle ellipse). 2D and 3D geometric transformation. Composing transformations. Algorithms for the realistic visualization. Color models. Light and lighting models. Shading models. Algorithms for generating shadows. Modeling of curves and surfaces (Spline, Bezier and NURBS curves and surfaces). Tools and software for computer graphics. Graphics API (GDI, GDI+, OpenGL). An interactive graphical programming.
The name of the course: Compilers
Code: 3OER7O03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Formal languages and gramars. Lexical analisis. Top-down and bottom-up parsing algorithms. LL(k) grammars. Operator precedence grammars and precedence grammars. LR grammars. Semanic analysis and atribute grammars. Intermidiate codes. Machine dependent and machine independent code optimization. Code generation. Runtime memory management.
Elective Block RD (15 ECTS minimum)
The name of the course: Computer Networks Design
Code: 3OER7A01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Basic concepts of networking. Switching. Characteristics of passive and active network equipment. Network models, hierarchical model design. Resource planning, local and distributed services design and planing. Reliability. Requirements, identification and validation. Network design. Logical design, physical design, testing, optimization, and network documentation. The process of designing and implementing the network. Typical models for the implementation of small and medium-sized networks. Virtual Local Area Networks. Trunking. ISL and IEEE 802.1q protocols. VTP. Redundant topologies. Protocols for implementing redundant topologies on the second level of the OSI model. Spaning tree. Rapid spaning tree. Routing between virtual networks. Virtual interfaces. Basic concepts of Internet telephony. Wireless networks, standards, design principles, roaming services for mobile devices. Basic security considerations. Typical scenarios of attacks. Application of basic concepts to increase network security
The name of the course: Computer Hardware Design
Code: 3OER7A02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Design flow. Simulation and synthesis environments. Circuit verification. Designing arithmetic circuits. Design compromises. Design of complex computer components. Dataflow Model of Computation. Data driven computing. Design and implementation of dataflow processors. Design of process units. Design of control modules. Memory system design. Design of an input-output subsystem. Power management. Design of special-purpose processors.
The name of the course: Information Security
Code: 3OER7A03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Elements of cryptology, cryptography and cryptanalysis. Authorized access. Identification methods. Developing an Authorized Approach System. Symmetric cryptography. Public and secret key. Hash functions. Method of attack on the protected system. Certificates, maintenance and issuance of certificates. Basic security protocols. Types of malware programs.
The name of the course: Advanced Databases
Code: 3OER7A04
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introductory topics: traditional relational databases, transactions, ACID properties, recovery and concurrency control. Distributed databases, modern trends and problems, scalability and problems of ACID property realization in these systems. Object and object-relational databases - notion and basic principles. Databases as a part of modern Web applications. NoSQL databases: taxonomy and examples. Key-value databases: notion, basic principles and examples (Redis, Dynamo). Column store databases: notion, basic principles and examples (Google BigTable, Cassandra database). Document oriented databases: notion, basic principles and examples (MongoDB). Graph databases: notion, basic principles and examples (Neo4J). Interoperability and information integration. Mediators, data warehouses, federated databases. Semantic Web and databases - notion, basic concepts, ontologies.
The name of the course: Software Architecture and Design
Code: 3OER7A05
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to software architecture and design. Fundamental principles and methods of software architecture. Modularity of a software system, module coupling and cohesion. Quality attributes and software architecture. Architectural styles and patterns. Software components, middleware and application frameworks. Design, documenting and evaluation of software architecture. Service-oriented architecture and Web services. Model Driven Architecture (MDA) and software development. Basic principles and methods of software design. Software design using design patterns. Software design anti-patterns. Refactoring to design patterns. Software design and architecture patterns in contemporary information systems.
The name of the course: Software Testing and Quality
Code: 3OER7A06
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Basic concepts of testing and software quality assurance. The process of testing and software quality assurance. Standards, strategies, techniques and methods of testing and software quality assurance. Test case design. Component, integration, acceptance and systems testing. Testing the quality attributes. User interface testing. Web applications testing. Regression testing. Standards and tools for testing and software quality assurance. Planning, monitoring and documenting the testing process. Measurement and managing of testing process.
The name of the course: Technology Enhanced Learning
Code: 3OER7A07
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Modern learning support platforms; history of learning support technologies; technology enhanced learning concept. E-learning, m-learning, e-testing and personalized learning and testing. Learning paradigms and various learning support technologies. Organizational aspect of learnig support technology. Pedagogical, psychological and sociological aspects of e-learning. Open learning. Technology support for instructional design. Learning Management Systems (LMS), Virtual Learning Environments (VLE), multimedia and multimodal components for learning, intelligent tutoring systems. Computer games and gamification principles in learning.
The name of the course: Fundementals of Control Systems
Code: 3OER7A08
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
System approach to modelling of automatic control systems (ACS) components. Operations with structural block diagrams. Practical implementation of ACS in industry. Familiarising with MATLAB software tools. Theoretical and practical knowledge of PLC systems. Design of control systems based on PLC. Knowledge of the implementation of SCADA systems and solving practical problems in industry and distributed systems.
The name of the course: Computer Vision
Code: 3OER7A09
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to computer vision and historical context. Representation of images. Color spaces. Filtering images. Frequency domain. Morphological operations. Edge detection. Detection of lines and circles. Detection of characteristic (feature) points. Detection of corners. The pairing of characteristic points and finding transformation (SIFT descriptor, RANSAC algorithm). Recognition - generative approach (Eigenfaces method for face recognition). Recognition - discriminatory approach (Viola-Jones method for face recognition, HOG method). Bag of visual words method. Convolutional neural networks and deep learning. Camera model. Camera calibration. Epipolar geometry. Video processing (optical flow, background extraction, human pose estimation). Object tracking (Kalman filter, particle filter, central shift method).
VIII Semester
The name of the course: Distributed Systems
Code: 3OER8O01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 6
Course outline:
Introduction. Examples of Distributed Systems–Trends in Distributed Systems – Focus on resource sharing – Challenges. Case study: World Wide Web. Communication in distributed systems. System Model. Inter process Communication – the API for internet protocols. External data representation. Remote Method Invocation and Objects. Remote procedure call. Case study: Java RMI – Group communication. Publish-subscribe systems – Message queues. Synchronization and replication. Clock synchronization. Event ordering: Logical clocks, vector clocks. Group communication: message ordering and message delivery, multicasting. Distributed mutual exclusion. Election algorithms. Fault Tolerance Byzantine Fault Tolerance- Detecting and Correcting Local Faults. Logging and Crash Recovery. Peer-to-peer Systems. Napster and its legacy. Routing overlays. Overlay case studies: Pastry, Tapestry. DHT p2p systems. Distributed File Systems. File service architecture . NFS. AFS. Google File System (GFS), Hadoop Distributed File System (HDFS)
Elective Block PE (10 ECTS minimum)
The name of the course: Multimedia Systems
Code: 3OER8A01
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction and overview of the media. The requirements of multimedia processing. Network protocols for multimedia and streaming information. Formats for audio, text, and smooth moving picture. Methods for image, audio and video compression. The complete MPEG-4 standard for multimedia. Other MPEG standards. Protection of multimedia content and methods for wathermarking. Types of multimedia systems and applications (e.g. video conferencing, learning on demand, etc ...). Multimedia systems architecture. Performance of multimedia systems. Mobile multimedia systems. Perspectives on the development of multimedia systems.
The name of the course: Information Technologies and Systems
Code: 3OER8A02
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction (Overview of Information Systems applications, Informatics, Information Technologies). Information systems platforms (platform based development, Enterprise Service Bus, service orientation), Programming IT infrastructure (network services; services for processing and data storage, Messaging Services), Enterprise Service Bus application development based on Open Source solutions (System configuration, Message routing, Data messaging, Data trensformations). Implementation of advanced information management concepts based on enterprise service bus (Business process management, Data security, Transactions, Exceptions and reporting). Agile Methodologies (Scrum, Agile management), Information and data management (Working with massive data sets, Semantic systems) Software intensive systems (Collective Intelligence, System programming with massive users participation.)
The name of the course: Internet of Things and Services
Code: 3OER8A03
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Introduction to Internet of Things and service-oriented software systems. Internet of Things (IoT), Internet of Services, Internet of Everything (IoE), Web of Things (WoT) and services. Wireless networks and protocols for IoT. Service discovery and orchestration and reactive microservices in IoT. Software technologies and tools for creation and composition (mashup) IoT service. IoT platforms and services in cloud. Processing and analysis of Big Data in IoT systems and applications. Data fusion and analysis in IoT at edge and fog infrastructure. Concepts and technologies: Data as a Service, Security as a Service, Sensors as a Service, Analysis as a Service, Everything as a Service (XaaS). Security and privacy in IoT systems. Development of IoT software systems and applications in real-world applications and scenarios
The name of the course: Microcomputer Based Measurement Systems
Code: 3OER8A04
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Upon completion of this course, students will: have basic knowledge about analog and digital sensors, as well as the techniques for conditioning and converting data from analog to digital format; have knowledge about different types of measurement information transferring; be familiar with the "open source" Arduino platform and the Raspberry Pi microcomputer; be able to select adequate sensors (analogue or digital) for a particular application, select and realize data transmission type depending on the end user's requirements; be able to write programs in the C programming language to work with the "open source" Arduino development environment, as well as programs in C and Java object-oriented programming languages for the Raspberry Pi microcomputer platform, also using appropriate tools to optimize and correct errors; be trained to design and develop systems for real-time acquisition of measurement data based on Arduino and Raspberry Pi platforms; be trained to store and display data using Cloud services.
The name of the course: Data and Knowledge engineering
Code: 3OER8A05
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Basic concepts of data and knowledge engineering. Introduction to Data Science. Concepts, algorithms and techniques for data processing. Concepts, algorithms, techniques and systems for data storage and knowledge discovery. Traditional data warehouse models. Data Warehouse Architecture. Dimensional design. Data Warehouse implementation: data extraction, data celansing, transformation, data cube and data loading. OLAP query processing. Big Data. Big Data charactestics (4V). Modern Data Warehouse approaches. Lambda and Kappa architecture. Modern Data Warehouses models: Data Lake and Data Vault. Modern and traditional data warehouses comparison. Real time data processing (event based and micro batch processing). The Knowledge Discovery process. Knowledge discovery system architecture. Connection between Data Mining systems and Data Warehouses and OLAP systems. Data preprocessing. Data mining techniques. Classification and prediction. Regression. Cluster analysis. Data Mining Applications and modern approaches.
The name of the course: Machine Intelligence in Logic Games
Code: 3OER8A06
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Mathematical basis of logic games. Mathematical models of logic games - examples. A general class of logic games. Characteristic of logic games. Basics of logic game algorithms. The notion of complexity and combinatorial explosion. Methods to overcome complexity problems. Heuristic cutting method for forward pruning. Restricting the expansion of the tree. Basic algorithms for processing trees in logical games. Alfa-Beta, PVS, Null-move, NegaScout, MTD (f), Probe and Multu-Cut, Quiescence, MVV-LVA and SEE procedures. Auxiliary procedures and heuristics (Minimal Window Search, ETC, History, Futility, Contempt factor). Alternative logic game algorithms - Berliner algorithm. Parallel algorithms of logic games. Application of transposition bases in logic games. Evaluation functions. Parallel and distributed algorithms of logic games. Client-Server architecture as the basis for the implementation of logic games on the Internet. Examples and analysis of installed large systems for remote game logic games (facebook games, playchess server). Application of the principle of machine intelligence in logic games.
The name of the course: Information Retrieval
Code: 3OER8A07
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Information retrieval definition. The basic functions of the information retrieval system. The components of the information retrieval system. Inverted index as the main data structure for representing documents in information retrieval systems. Algorithms for inverted index generation. Boolean and vector retrieval model. Evaluation of information retrieval systems. Basics of web search. Web crawling. Link analysis, page rank and HITs algorithms.
The name of the course: Methods and Systems for Signal Processing
Code: 3OER8A08
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Correction of errors using: Reed-Solomon Code, Reed-Muller Code, CRC Code, Convolution Codes, Turbo Codes, LDPC Codes. Compression using: prefix coding, Shannon-Fano coding, Huffman coding, adaptive Huffman coding, LZ77 algorithm, arithmetic coding.
The name of the course: Mobile Communication Systems
Code: 3OER8A09
The number of classes per week:
- Lectures: 2
- Exercises: 2
- Other classes: 1
ECTS: 5
Course outline:
Evolution of the standards of mobile communication systems. Principles of mobile communications. Cellular approach. Antennas and propagation in mobile communications. User equipment. GSM, GPRS and UMTS systems. Multiple access, handover and roaming. Packet data transfer. Power control. HSPA and HSPA + systems. Architecture, functioning, characteristics and services of the LTE and LTE Advanced system. 5G systems and their role in IoT. Trends in the mobile communications market in Serbia and in the world. Testing the quality of services in mobile networks by measuring KPI parameters (key performance indicators).
Elective Block DP (3 ECTS minimum)
The name of the course: Project Management
Code: 3OER8B01
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline:
Management - features and functions. Management challenges in IT technology and engineering. Project life cycle, product life cycle. Project management in the context of an organization. Project management processes, standards, interactions in the process. Selection and establishment of the project. Management of engineering design, cost estimation of the project. Project scope management. Schedule management; activities - identification and scheduling, duration and resource estimation, schedule monitoring and change management. Human Resource Management; human resource planning, setting up, developing and managing the project team. Communication management in the project, communications planning, information distribution, internal and external reporting, collaboration and teamwork. Risk management, risk management planning, risk identification, qualitative and quantitative risk analysis, risk response planning, monitoring and control of risk. Technical support and maintenance. Trends in IT project management.
The name of the course: Social, Legal and Ethical Aspects of Computer Science
Code: 3OER8B02
The number of classes per week:
- Lectures: 2
- Exercises: 1
- Other classes: 0
ECTS: 3
Course outline:
Engineering ethics (IЕЕЕ ethical code). Domestic and foreign legislature. Copyright. Patents. Protection of products. Products lisencing. Techiques of protection. Guarantees. Closing deals. Procurement procedures. Informational crime. Computer expertise.
The name of the course: Business Communications
Code: 3OER8B03
The number of classes per week:
- Lectures: 2
- Exercises: 0
- Other classes: 0
ECTS: 3
Course outline:
Basic elements of communication. The structure of the communicative process. Types of communication. Communication aspects of business relationships. Basic rules and principles in business negotiations. Business Negotiation Technology. Basic features of business communication. Public Relations. Press conference. Leadership. Biography. Business etiquette. Internet and e-commerce. Forms of electronic business. Risk and security of e-business. The influence of the Internet on the design and development of contemporary society. European legal framework for electronic communications. Legal and ethical business problems on the Internet. Privacy protection.
The name of the course: Professional Practice
Code: 3OEZ8SP
ECTS: 3
Course outline:
Improving students' ability to get involved in the work process after completion of studies. Developing responsibility, professional approach to work, communication skills in the team. Complementing the theoretical knowledge acquired within the study program with practical knowledge of the issues that have been studied. Using the experience of professionals working in the enterprise where the practice is carried out to expand the practical knowledge and motivation of students. To gain a clear insight into the possibility of applying the acquired knowledge and skills covered by the study program in practice.
The name of the course: Final paper - Research Work
Code: 3OEZ8IR
ECTS: 4
Course outline:
Training students to independently apply previously acquired knowledge from different areas they have studied to examine the structure of the given problem and its systemic analysis in order to draw conclusions about possible directions of its resolution. Through self-use of literature, students expand their knowledge by studying various methods and papers related to similar issues. In this way, students develop the ability to conduct analyzes and identify problems within the given issues. Practical application of acquired knowledge among students develops the ability to see the place and role of engineers in the selected area, the need for cooperation with other professions and teamwork.
The name of the course: Final paper
Code: 3OEZ8ZR
ECTS: 8
Course outline:
The final paper represents an independent research, practical or theoretical methodological work of the student in accordance with the level of studies, in which he becomes acquainted with some narrow area through the literature review and adopts methodology of research or designing necessary for the production of the paper. By making the paper, the student applies the practical and theoretical knowledge acquired during the studies. In written form, as a rule, the paper contains an introductory chapter, a definition of the problem, an overview of areas and existing solutions, a proposal and a description of its own solution, a conclusion and literature. A public oral defense of the paper is organized in front of a commission of three members, one of which is a mentor of the paper. During the oral defense, the candidate explains the results of his paper, and then answers the questions of the members of the commission, whereby the candidate demonstrates the ability of the oral presentation of the project.