Teaching

  • Development of Software Applications

    This course elaborates software engineering concepts, principles and techniques. The course studies approaches to the development of end user applications, including requirements analysis and specification, design and construction of software components, programming techniques, documentation, implementation and maintenance of applications.

  • Development of Information Systems

    This course elaborates software engineering concepts, principles and techniques. The course studies approaches to the development of end user applications, including requirements analysis and specification, design and construction of software components, programming techniques, documentation, implementation and maintenance of applications.

  • Protection and Security of Information Systems

    Information security principles. Risk, vulnerability and threats to information systems. Procedures for risk assessment, management and control. Mathematical models of information security. Models for secure data and process workflow. Cryptography, cryptography protocols, techniques and algorithms. Digital identification procedures.Database security. Security of operating systems. Network and distributed systems security. Trusted information systems design and implementation. Information systems security standards and evaluation. Legal and ethical aspects of security.

  • Algorithms and Data Structures

    Building on the knowledge obtained in Programming and software engineering, basic data structures and algorithms are introduced. After the topic of dynamic memory allocation, function calling mechanism is presented. Computational complexity of algorithms is introduced. Search methods are presented, followed by recursion. Algorithms for sorting are explained and illustrated. Dynamic data structures are introduced: singly and multiply linked lists. Basic data structures, stack and queue, are presented followed by hashing, binary trees, and heap. Heap sort illustrates priority queue application.

  • Operations Research

    History and development of operational research. Mathematical modelling. Linear programming. Linear programming models. Graphical solution and sensitivity analysis. Simplex method. Duality. Dual simplex method. Multiphase production. Business aspects of production planning. The role of variable and fixed costs, contribution. Optimum mix. Assignment problem. Transportation problem. Branch and bound algorithms. Mixed integer programming, solving strategies and applications. Separable programming. Production scheduling. Network planning. Optimisation of stocks. Renewal and selection of equipment. Dynamic programming. Allocation of investment. Nonlinear programming using steepest ascent method. Practical work: Solution and analysis of prepared problems by using available software.

  • Human Factors in Computing

    The term human factors (or ergonomics) in computing is defined and relevant norms are elaborated. Possible health hazards introduced by using computing equipment are explained and preventive measures are suggested. Ergonomics of computerised working environment is elaborated analysing the impact of visual displays, input and output devices, interior arrangements, microclimate, noise and illumination on workplace design. Appropriate practical solutions are presented. Regarding the software ergonomics, fundamental principles of human-computer interaction are explained, with emphasis on user interface design for desktop, web and mobile applications.

  • Management in Engineering

    Within the scope of this subject students have to gain knowledge on business, legal, and project engineering environment. Main topics: engineering profession, engineering ethics, intellectual property, engineering approach to problem solving, teamwork, projects and project management, project planning, risks in projects, management and managers, organizing, and leadership.

  • Advanced Databases

    The goal of the course is to familiarize students with key concepts and issues related to emerging database technologies, object-oriented , object relational, temporal, spatial and NoSQL databases. Course focuses on advanced applications based on semistructured and spatio-temporal data.

  • Programming Paradigms and Languages

    The course gives an overview of programming paradigms. It deals with the concepts common in various imperative programming languages. Furthermore, object-oriented programming is thaught. The fundamentals of declarative programming paradigm and its use in modern programming languages are illustrated as well. The final course topic covers the use of parallelism.

  • Application development using C# programming language

    The goal of this course is to introduce students to the world of modern software development using C# programming language. Students will be familiarized with the world of applications starting form application types and core programming fundamentals. The first part will focus on storage and fetching of data with the emphasis on the specifics of Microsoft technologies. The second part is devoted for development of backend part of the application through web services and complementing technologies (AJAX, SignalR, Web API etc.). The third part of the course will be focused on implementation of client part of the application (frontend) working with various client technologies (HTML, JavaScript and XAML). The last part is reserved for hosting of server part of the application and new cloud computing paradigm.

  • Databases

    The goal of the course is to familiarize students with key concepts and issues related to database management systems, relational data model and relational databases. Course focuses on the skills needed to design relational databases and database design using the entity-relationship data model; on the relational algebra, relational query language SQL and the fundamentals of the data protection.

  • Business Intelligence

    The goal of the course is to familiarize students with key concepts and issues related to bussiness intelligences and decision support systems. Course focuses on data warehouses, design methods (dimension modelling), data extracting, transforming and loading processes and OLAP systems. Lectures are accompanied with seven homework assignements intended to validate the presented concepts.

  • Programming and Software Engineering

    Basic concepts of procedural programming are introduced. Data structures, control structures, functions, arrays and files are explained. Basic concepts of software engineering are explained, such as problem algorithmization, subtasking, documenting and software development cycle.

  • Database Systems

    Overview of physical data organization. Storage organization in database management systems. Transaction concept. Serializability theory. Concurrency-control schemes. Database recovery. Principles of query optimization. Distributed databases, global transactions, atomic commitment, serializability, distributed deadlock, distributed query optimization. Data replication, replication protocols, serializability, availability and consistency in replicated databases.

  • Telecommunication Network Reliability

    Within the scope of this subject students gain knowledge on system and telecommunication network reliability, availability and security as well as on system fault, error and outcome. Main topics are: Definitions of system reliability, availability and security. System failure, fault, error and outcome. Redundancy structures and calculation of complex system reliability: analytical methods, Monte Carlo simulation. Modelling of dependant failures. Telecommunication network reliability. Topological parameters of network reliability. Failure diagnosis in digital systems. Self-diagnosis systems. Markov reliability and availability models. Fault-tolerant systems. Reliability sensitivity and optimization. Network protection and restoration. Study cases in telecommunication networks. Availability data. Software reliability: models and evaluation methods

  • Object-oriented programming

    Introduction. Basic principles of object-oriented programming and design. Modelling. Reusability. Frameworks for program development. Java programming language. Java as a machine independent platform. Programming tools. Command line tools. Coding conventions. Refactoring. Abstraction. Encapsulation. Classes and objects. Static members. Access modifiers. Constructors. Class relationships. Memory management and garbage collectors. Inheritance. Polymorphism. Abstract classes. Interfaces. Introduction to design patterns. Exceptions. Files and streams. Collections. General collection algorithms. Simple and complex comparators. Generics. Multithreading and multithreaded applications. Events. Development of applications with graphical user interface. Simple and complex graphical components. Development of custom graphical components. Program testing.