Goals of Master academic studies in Software Engineering are:
(i) providing academic and professional knowledge and skills, advancement of the position of software developer, improvement of implementation and creativity in software development,
(ii) education of highly professional engineers, with thorough academic education and integrated knowledge of software development in line with the expectations and demand of companies which deal with software development professionally,
(iii) enabling students to participate in software development or manage the development of complex software products through state of the art methods and techniques implemented in software engineering,
(iv) teaching students to follow all ethical principles and rules of good practice, and to implement them in their environment,
(v) developing team spirit in software development.
By completion of the study program, students acquire general and subject-specific competences. Students learn to use development environments for programming, and to implement software solutions using state of the art methodologies and techniques of software engineering, using contemporary programming languages.
Students who complete master academic studies in software engineering are able to work on the development of professional software of industrial quality. These include:
- Determining the needs and demands of software users and their transfer into engineering requirements whose fulfillment enables full software functionality, as well as professional quality of software;
- Setting of software system architecture, defining software modules and components, as well as their mutual interfaces;
- Software system design, e. design of object-oriented (OO) system, on the basis of the set OO model, and use of UML language for OO system modelling;
- Programming, e. implementation of project solution through software design in one of the programming languages;
- Assurance of software quality and software testing, as well as software configuration, in line with the set architecture of software system;
- Software development project management, etc.
Students who have completed the study program in Software Engineering are able to:
- Use state of the art software design tools
- Use development environment for programming
- Implement software solutions using adequate programming languages
- Implement traditional and contemporary methods of software development
- Develop software for intelligent software systems
- Define requests for software design
- Based on these requests, design software solutions
- Create all necessary documentation in the software development process
- Define and conduct the plan of verification and validation of software solution using adequate methods and techniques
- Plan and perform software testing
- Manage requests for change of software and maintain software on this basis
Implement the principles and steps of software project management and estimate the necessary resources.
|Sem.||NO.||MASTER ACADEMIC PROGRAM
|1||1||SE440 Development of Large Software Systems||8||2||3||0|
|2||SE436 Software Analysis and Evaluation||8||2||3||0|
|3||SE445 Agile Methods in Software Development||8||2||3||0|
|4||CS385 Software Development for Embedded Systems||8||2||3||0|
|2||5||SE455 Intelligent Software Systems||6||3||2||0|
|8||SE595 Master thesis||10||0||0||0|
|6||CS540 Advanced eLearning Systems||8||2||3||0|
|CS560 Semantic Web Technologies||8||3||3||0|
|SE510 Secure Software Engineering||8||3||2||0|
This course deals with theory and practice of large software systems, with their design and development and deployment. Project management, advanced UML, software development process UP (Unified process), reversible engineering, software requirements, testing, software architecture, modelling and performance analysis of such systems. Also, a set of examples of large software systems, their refactoring, concepts and techniques used for these systems. The objective is to familijarize students with large software systems, and methods and tools and techniques for development of these systems. A practical project and theoretical assignment are the parts of this exam. Course topics: О.o. design, UML sequential diagrams, architecture of large systems, estimating project costs , planning and management of large projects, use-case modelling, UP process, ICONIX process, UML activity diagrams, testing strategies, software formal models.
Course objective is to master basic and advanced techniques and principles of software engineering measurement in Software Engineering. Knowledge of application software measurement and assessment. Course outcomes: Mastering the application of software measurement to make decisions on the project; Training for planning measurements in order to improve the quality of software on the project and the software organization. Course topics: Objectives of measurement in software engineering; Software project management based on measurement; Definition and description of software measures and measurement; Process of software measurement and metrics; Integration of measurement in the software development process; Establishment of a metrics program; Standards of software process and product measurement in software engineering.
The objective of the course is to teach students about analysis of modern technologies and methodologies for software development. As an outcome student needs to understand agile principle of software development, trainings, methodologies and to apply these principles to examples in software development. Course topics: Problems in software development. The challenges of modern software development . Methods for software development. Iterative and incremental software development methods. Spiral methods of software development. Software development based on the prototype. Research in the field of agile software development. Agile software development principles. Magnification learning. Decide what later. Deliver as soon as possible. Strengthening of teamwork. Installation integrity. Insight into the whole. Collaboration, co-ordination and communication. Agile methods of software development. Overview of agile methods. Extreme programming. Scrum. Crystal methodology. The development of managed properties. RUP-Rational unified process. Method development of dynamic systems. Adaptive Software Development. Driven agile development model. Comparison of agile methods. Limitations of agile methods. Software development tools. Tools for managing projects. Collaboration Tools. Development environment and infrastructure. Teamwork in agile software development. Planning development and software architecture. The planning and execution of the project development. The state and directions for further research. Implementation of Scrum software development method. Application of Extreme Programming in the development of J2EE applications. Application scarce architecture in agile software development. Learning to agile software development
The course presents an overview and a detailed breakdown of the most important themes of design and software development of real time computer systems. The aim is to provide students with a balanced view of the theory and practice of programming real-time systems. This course allows students to: recognize and classify, formulate requirements for this type of computer system, to choose appropriate hardware and software architecture, to choose the appropriate operating system and programming language, to solve the problem of communication in real time and to simulate operation of the system. Course outcome: Training to define the software requirements, software design, develop and test computer systems for real-time control, and making the accompanying documentation. Course topics: Definition of the system to operate in real-time (RT); RT Classification and RT system terminology; RT system Examples; Concurrency and processes; Concurrent programming; Process definition; Presentation of the process; Interaction between processes; Multi-process and multithreaded programs running on a monolithic multiprocessor hardware; Models of the software development process of embedded systems; Conceptual model of RT system; Machine state Model; Multi-tasking design; Real Time Operating systems; Real Time System Design; The concept of synergy of hardware-software; Synchronization and communication to prevent data corruption (e.g. using shared variables); Mutual exclusion and conditional synchronization (when accessing shared data, when performing a common task); The task engagement holding; Scoreboards; Conditional critical regions; Traffic lights techniques; Concurrent cooperating tasks; Implementation of synchronization primitives; Synchronization and communication using messages; Specifics of RT programming; Realtime scheduling; Languages for Modeling System (GPSS, MATLAB-Simulink), programming languages (ADA, Java, C ++); The softvare development life cycle; System Simulation ( Avoiding performance bottlenecks – digital and hybrid); Testing the performance and reliability of hardware, software and integrated systems; Project documentation; Real-time control system case study for ( Flight management system in an aircraft, Air traffic management, Automotive control systems).
This course presents theory and practice of intelligent software systems. The objective is to educate students for solving problems of intelligent software systems, and to use methods of artificial intelligence. Students will become familiar with intelligent software systems and methods and tools and techniques of artificial intelligence. The course includes a practical project and a theoretical assignment.
The course objective is to enable students to design and apply an online clourse or more courses at an appropriate e-learning platform.
The course introduces students to principles which enable them to design and develop successful and effective online courses with the application of modern information technologies for e-learning.
It is expected that upon course completion students will be able to work in organization and preparation for e-learning systems in organizations, to select adequate technologies for preparation of teaching material for e-learning, to select and apply some of the e-learning systems, to select and configure infrastructure for e-learning and organize the work of e-learning centers. Furthermore, students get adequate foundation for research in e-learning.
The course introduces Semantic Web technologies recommended by the W3C consortium that have been widely adopted for development of innovative multilingual products and services in the public sector, bioinformatics, energy, transport, and other domains. It aims at familiarizing the master students with the foundations of the Semantic Web and teaching them how to use innovative methods for data/knowledge representation and processing. Students will gain knowledge and insight into the state-of-the-art tools for development of semantic web solutions, as well as the current research trends in the field. Course outcome: Understanding the principles of the Semantic Web; Abilities for using standard W3C vocabularies; Ability to find and use available open-source tools; Ability to design and development semantic web solutions r based on XML / RDF / OWL / SPARQL technologies. Ability to carry out research work independently. Course topics: Introduction to Semantic Web aims at informing the students and newcomers in the Semantic Web field about the Semantic Web vision, the process of evolution of the Web towards the Semantic Web, the building blocks of the Semantic Web and the reasons for doing research in Semantic Web field. This module introduces also the Semantic Web technologies recommended by the W3C consortium; Semantic Web Languages describes the Linked Data concept and examines the elements of semantic technologies (RDF, OWL, SPARQL) through illustrative examples of their use in practice; Knowledge representation and Ontology Engineering presents methods and methodologies for building and testing configurations of ontologies and RDF graphs. Additionally, it describes the links of the Semantic Web field to other scientific domains such as “Knowledge management” and “Artificial intelligence”. Additionally, it explains the role of AI methods and algorithms in ontology engineering, especially in knowledge extraction and ontology creation, ontology maintenance, ontology validation, as well as in ontology mapping and integration; Semantic Web tools discusses the main functionality of the semantic tools (semantic modeling & development, management & semantic data integration, connecting / interlinking, semantic search and retrieval of data). It is designed for researchers and practitioners (technology architects and information technology advisors) to provide them with valuable information about the readiness of the commercial and the free open-source SW tools and technologies for Semantic Web; Maturity and Applicability Assessment of Semantic Web Technologies gives an updated picture of Semantic Web research activities within the European projects from the Sixth, Seven and Horizon 2020 program concerning semantic technologies in the public sector. The aim is to analyze the benefits of semantic technology (based on available Case Studies), as well as to forecast future needs and development trends.
This course prepares students for further studies within the field of software applications, computer systems and networks security. It also prepares highly qualified personnel for the problems of design and audit of system and application software safety. The course provides a detailed explanation of common programming errors in Java and .NET environments and describes how these errors can lead to system software vulnerabilities that hackers can exploit. The course also focuses on security issues in programming languages and associated libraries. Students will acquire the necessary knowledge and skills to analyze the vulnerability of system and application software on hacker attacks as well as to design defense mechanisms against such attacks. Students will also be able to audit the security of dangerous structural defects and installation of large software systems, and then to produce a document of recommendation on the redesign and upgrading of application modules. It consists of the following units: Security concepts overview, Software and security, Software engineering and security, Attacks, threats, vulnerabilities, and buffer overflow, Security requirements misuse cases; selecting technologies, Open and close software, Guiding principles for software security, Database security and client-side security, Security and auditing software, Password authentication, Deployment, trust management and data input validation, .NET security fundamentals, Introduction to Java security, Cryptography.
The objective of the internship is to prepare students for individual research and professional work in recognizing and solving tasks in the field of the study programme, in real life situations and-or research laboratories and centers. The tasks are oriented to involving students in various projects, with different scope, type and purpose, at their initial, development or final stage. By observing the work space environment and specific work related tasks, students acquire new knowledge, security in work and possibility of integration of acquired knowledge and skills from their studies with 120 working hours.
Student works independently on their master thesis, under the mentorship of professor from the study program. The knowledge acquired during the master studies represent a basis for student’s successful work on master thesis. Through master thesis students demonstrate that they are capable of: conducting research and displaying the results in a manner that is consistent with accepted standards for the presentation of the results, relating and comparing the results with other works in the field, properly using relevant technical and scientific literature, properly using scientific terms, explaining the results and responding to the asked questions about the work.