Software engineers create and maintain software applications, using the best techniques from computer science, project management, engineering, applications, and other IT fields. Software engineering is related to process and quality management, to creativity and innovation, to standards, to individual skills, but also to the ability of teamwork and the application of rules and experience from professional practice.
Students will learn how to apply the latest techniques and methodologies to develop high-quality software according to professional standards.
Competent, formally educated software engineers are in great demand. The continuous growth of new technologies and mobile applications in industry, commerce and the public sector increases the demand for experts who can design, implement and maintain complex software systems. The goal of this master’s programme is that students acquire advanced practical skills in software engineering. After completing their master’s studies, students increase their competitiveness on the labor market and open the possibility for career advancement.
Master’s degree in software engineering holders most often work as software engineers, web developers, computer programmers, business analysts, system development managers, etc. Upon successful completion of the program, students are able to understand the methods, techniques and tools that are available for the specification, design, implementation and management of software systems.
These skills enable them to:
DESCRIPTION OF THE PROGRAMME
Software engineering is a discipline that deals with the development and maintenance of reliable and efficient software systems. The importance of software engineering has risen with the growing demands for developing secure applications, i.e. secure software systems, and with greater importance of large and expensive software systems. Software engineering differs from all other engineering disciplines because of the non-physical nature of software (it does not exist in space and is not tangible). Software engineering attempts to integrate computer science and engineering principles that are applied to the development of tangible creations with distinct physical properties. Software engineering is related to process and quality management, to creativity and innovation, to standards, to individual skills, but also to the ability of teamwork and the application of rules and experience from professional practice. The study programme MAS Intelligent and Advanced Software Systems educates students to work on the development of professional software of industrial quality.
Software engineering, as a master’s programme, aims to educate master software engineers, for whom there is a great need in the labor market. The study programme ensures the acquisition of competencies that are socially justifiable and useful and are in line with the tasks and goals of the University, where the study programme is conducted. The purpose of the study programme is the ability to rationally and professionally perform various practical jobs and tasks related to the profession, the outcome of which is the determination of needs and requirements, the satisfaction of which ensures the functionality of the software, along with defining all software modules and components with the design of the software system.
The MAS Intelligent and Advanced Software Systems study programme was developed in accordance with the recommendations and suggestions of American professional associations: IEEE Computer Society, ACM:
Curriculum Guidelines for Graduate Degree Programs in Software Engineering (2009)
Computing Competencies for Data Science Curricula (2021)
LEARNING OUTCOMES OF THE STUDY PROGRAMME
The Intelligent and Advanced Software Systems master’s study programme has defined goals that are in line with the basic tasks and goals of Belgrade Metropolitan University, which are socially justified as well:
- Ensuring the transfer of scientific, professional knowledge and skills, development of the profession of software engineer, improvement of application and creativity in software engineering.
- Education of highly professional staff who have comprehensive academic education and integrated knowledge of software development in accordance with the expectations and needs of companies that professionally engage in software development.
- Enabling the student to participate in the development or lead the development of more complex software products, using the most modern methods and techniques applied in software engineering.
- Instructing students to respect all ethical principles, as good practice of the profession and to spread their application in their environment.
- Developing teamwork skills in software development.
INTELLIGENT AND ADVANCED SOFTWARE SYSTEMS
Sem | RB | INTELLIGENT AND ADVANCED SOFTWARE SYSTEMS (60 ESPB), CURRICULUM AND PROGRAMME 2024/25. |
ESPB |
---|---|---|---|
1 | 1 | CS515 Principles and Techniques of Artificial Intelligence | 6 |
2 | SE515 Software Architecture | 6 | |
3 | ELECTIVE SUBJECT 1 | 6 | |
4 | ELECTIVE SUBJECT 2 | 6 | |
5 | ELECTIVE SUBJECT 3 | 6 | |
2 | 6 | SE585 Software Development Project | 6 |
7 | SE590 Professional practice | 3 | |
8 | SE595 Research paper | 15 | |
9 | SE596 Thesis | 6 | |
ELECTIVE SUBJECTS 1, 2 and 3 | |||
1 | 3,4,5 | CS565 Machine Learning | 6 |
CS520 Applied Deep Learning | 6 | ||
SE535 Intelligent agents | 6 | ||
CS525 Computer Vision | 6 | ||
SE560 Semantic Web Technologies | 6 | ||
CS541 Intelligent e-learning systems | 6 | ||
SE520 Applied distributed systems | 6 | ||
SE525 DevOps Software Development and Evolution | 6 | ||
SE540 Development of IoT applications | 6 | ||
SE545 Agile methods of software development | 6 | ||
SE575 Software quality assurance | 6 | ||
SE570 Software and Systems Requirements Engineering | 6 | ||
SE580 Scalable software systems | 6 | ||
SE573 Designing Application Programming Interfaces (APIs) | 6 | ||
SE565 Software Development Project Management | 6 | ||
OM545 Entrepreneurship and Innovation | 6 |
INTELLIGENT AND ADVANCED SOFTWARE SYSTEMS
CS515 Principles and Techniques of Artificial Intelligence
The aim of the course is to familiarize students with the basic ideas, challenges, techniques, applications and problems of artificial intelligence which are used in the development of intelligent software systems. Students will study search techniques, knowledge presentation, ways of reasoning and planning, as well as basic machine learning techniques. Students will be able to choose different artificial intelligence techniques for specific types of problems. After passing the exam, the student will be able to: Solve problems related to searching in complex environments, as well as constraint conditions; Understand the role of logical agents, knowledge presentation methods and automatic planning; Apply methods and techniques of presenting uncertain knowledge and reasoning which are necessary for decision-making; Understand basic machine learning methods, such as probabilistic models, deep learning, and support learning methods.
SE515 Software Architecture
The primary goal of the course is to help students develop skills in the design, development and adoption of sound software architectures for enterprise-level software-intensive systems, while also taking into account both the functional and non-functional requirements, as well as contextual system environments. Core topics include: Overview of software architecture, micro-architectural patterns (design patterns) and macro-architectural patterns (modern patterns), service-oriented architecture, architectural modeling, views and perspectives, architectural analysis techniques, architectural tactics, and some advanced topics. As a result of completing the course, the student will be able to: Clearly define architectural problems in terms of quality attributes, scenarios, trade-offs, stakeholders and concerns; Understand important architectural models (e.g., multi-tier model, service-oriented architecture) along with their advantages and disadvantages; Identify architectural tactics relevant to specific architectural problems; Design architectural models using existing architectural templates; Evaluate architectures in terms of their risks and trade-offs and how well they meet the requirements of attributes of quality, as well as how well they solve stakeholder problems.
ELECTIVE SUBJECTS 1, 2 AND 3
CS565 Machine Learning
The goal of the course is to help students master the application of machine learning techniques by using the Python programming language and the specialized code library ThensorFlow in a simple way. The course was created for students who are involved in programming and software development, and who want to learn how to develop software using machine learning methods. Therefore, the course does not delve deeper into the mathematical interpretation of applied machine learning concepts which is more difficult for them to understand. In the first part of the course, the focus is on the applications of Python without using specialized libraries, which will allow students to better understand the essence of the concepts behind machine learning methods. The second part uses the specialized TensorFlow library, which enables faster and easier development of intelligent software systems. After passing the exam in this subject, the student will be able to: Understand how single-layer and multi-layer neural networks work; Apply the Python programming language without specialized libraries with the goal of having a better understanding of how neural networks work, i.e., understanding the essence of learning methods and deep learning; Apply the TensorFlow library in Python when developing more complex intelligent software systems that utilize single-layer or multi-layer neural networks and use it in the areas of image classification, face detection and recognition in images, object and pose detection, natural language processing, and data analysis; Choose techniques based on the type, nature, and complexity of the real-world problem, implement the appropriate technique using the Python programming language and the TensorFlow library, and thus solve the observed problem, or draw conclusions about the phenomenon in question that corresponds with real conditions in the industry.
CS520 Applied Deep Learning
The development of intelligent software systems that apply the so-called deep learning models has recently been experiencing rapid development and application in various fields, such as: Visual recognition of objects, natural language processing, information processing for the purpose of intelligent system learning, autonomous vehicle management, etc. The goal of this course is to introduce students to deep learning methods using the TensorFlow library of Python routines, the use of which greatly facilitates the understanding and application of various deep learning methods. These methods will be studied through examples throughout the course. Therefore, the use of complex mathematical apparatus, which is often used in textbooks and in papers on deep learning, has been reduced to a minimum, and in this way the course is adapted to the needs of software engineering and IT students. Upon completion of the course, the student will be able to: Apply Python and TensorFlow in the development of intelligent software that applies deep learning methods; Understand and use methods of convolutional neural networks to recognize objects, images, etc.; Understand and use Recurrent Neural Networks (RNN) and Convolutional Neural Networks (CNN) in order to process and understand natural language; Understand and use autoencoder and Generative Adversarial Networks (GAN); Understand the application of deep learning methods, which are applied in the driving of autonomous vehicles..
SE535 Intelligent agents
Agents are autonomous computer programs, robots, humans, etc. Agents operate in an environment that they can observe and in which they can achieve goals by performing certain actions. This course studies the problem of optimal operation of the software agent in order to realize its set goals. The goal of the course is to provide students with a broad introduction to the new and rapidly growing field of agent-based computing. The course introduces students to key concepts and models in this field and deals both with individual agents and their interactions. The topics covered in the course are: Agent to agent communication, automated negotiation and argumentation in cooperative and competitive environments, learning and planning with multiple agents, automated decision-making based on mechanisms such as voting and auction, and systems development and engineering based on agents. Upon successful completion of this course, the student will be able to demonstrate knowledge and understanding of: The main agent models used today and their foundation in artificial intelligence research; Motivation for appropriate use of agent-based computing; Main frameworks for agent decision-making for cooperative and competitive environments; Subject-specific intellectual and research skills. After successful completion of this course, the student will be able to: Analyze and criticize the performance of the deployed agent, place the agent in a simulated environment, in accordance with the given task.
CS525 Computer Vision
The aim of the course is to introduce students with the principles, methods of implementation and application of convolutional neural networks for visual recognition. Computer vision has become ubiquitous in our society with applications for browsing, image classification, mapping, and is applied in the piloting of drones and autonomous vehicles. The basis of these applications are visual recognition tasks such as image classification, localization and detection. In this course, special emphasis will be placed on deep learning for computer vision. Students will be able to solve visual recognition problems using convolutional neural networks in the Python programming language using the TensorFlow library. Upon completion of the course, students will be able to: Understand, implement and apply convolutional neural networks for visual recognition; Understand the latest research in visual recognition and computer vision; Implement and develop their own neural networks; Understand and apply known solutions to real-world computer vision problems.
SE560 Semantic Web Technologies
The subject discusses the Semantic Web technologies recommended by the W3C consortium and which are already being applied for the development of innovative multilingual products and services in the public sector, bioinformatics, energy, transport, etc. The goal is to introduce students to innovative methods of data presentation and processing, tools for the development of semantic web services and the current state of semantic web research. After the course, students will fully understand the principle of the Semantic Web and have the ability to apply standard W3C vocabularies and existing free and open-source tools. Additionally, they will master techniques for designing and developing semantic web solutions (XML/RDF/OWL/SPARQL).
CS541 Intelligent e-learning systems
The goal of the course is to enable the student to be able to design an intelligent system for electronic learning and to be able to apply such a system in the creation of an online course on a suitable platform for e-learning. An intelligent e-learning system here refers to a system capable of adapting to the specific needs and abilities of each individual student, thereby ensuring their satisfaction and enhancing the effectiveness of the teaching process by applying the principles of personalized learning. This approach provides students with instruction and learning “tailored to their needs,” i.e., aligned with their interests and abilities. The course program includes the application of intelligent agents, and especially the development of intelligent tutors that provide the student with personalized teaching materials and an appropriate learning style. After successful completion of this course, the student will be able to: Understand various methods and techniques of personalized e-learning; Develop, with the help of a suitable development platform, a prototype of an e-learning system that uses a tutor system.
SE520 Applied distributed systems
The goal of the course is to provide a high level of understanding and application of advanced concepts of distributed computing systems. The course provides a comprehensive set of thematic topics: Heterogeneity, security, transparency, competitiveness, fault tolerance; Principles of networking; Request-response protocol; Remote procedure calls; Distributed objects; Middleware architectures; Security and authentication protocols; Distributed file system; Naming services; Global states in distributed systems; Coordination and agreement; Control of transactions and competition; Distributed transactions; Replication. These topics form a solid basis for further advancements and applications aligned with the further development of the application of distributed systems, which are more specifically studied in other subjects within the study program. Upon completing course, students will be able to: Understand, design and develop architectures for basic distributed systems and applications; Apply the basic principles of distributed systems development; Understand and use object-oriented distributed systems based on middleware and corresponding technological platforms; Understand, use and develop advanced API services for distributed systems; Detect issues, perform load balancing, recover from failures, and monitor metrics in distributed systems; Understand the properties of common elements used in the design of distributed systems; Understand the complexities of developing distributed systems, such as computer and network failures, competitiveness, consistency, failures, etc.
SE525 DevOps Software Development and Evolution
In the first part of the course, if they were not familiarized with it beforehand, students will be introduced to the basics of the infrastructure important for using DevOps tools (virtualization, networking, cloud and security infrastructures). In the second part of the course, students will learn the theory of basic DevOps concepts, such as: Infrastructure as code, configuration management, the implementation process, microservice architecture, configuration parameter management, what happens after service deployment, disaster recovery and development-oriented security. Several case studies related to specialized forms of DevOps are also analyzed: Machine learning and application of the main DevOps tools. Upon completion of the course, the student will be able to: Explain the basic concepts of cloud infrastructure and security infrastructure, state and explain the basic theory of DevOps, explain the basic classes of DevOps tools, use the Internet to learn how to install and use of the necessary tools.
SE540 Development of IoT applications
The goal of this course is to teach students the skills and tools for developing IoT applications and to take full advantage of IoT capabilities. The course introduces students to basic IoT concepts from a software development perspective. The course outlines the basic full-stack architecture for IoT, describes the various development technologies in each IoT layer, explains the application of machine learning models in Edge, describes machine learning and artificial intelligence models in IoT applications, presents Internet of Things (IoT) use cases from the agriculture sector, healthcare, mobile industry. It also explains the development of IoT solutions from a product management perspective, and extensively covers security and applicable threat models as part of the IoT stack. Upon completion of the course, students will have knowledge that allows them to: Acquire working knowledge of wireless sensor networks (WSN), including topologies, sensor data, and wireless technologies used in sensor nodes; Learn how to build a system around a sensor-based IoT device; Learn how to use MQTT as a sensor data recording component from the start; The applications of machine learning in Edge, as well as neural networks for sound classification, design, and implementation of fuzzy logic and support learning.
SE545 Agile methods of software development:
Agile development methods refer to the numerous software development approaches that do not apply the so-called plan-driven software development, such as the waterfall method. These methods focus on software development and not documentation, so new software versions are delivered at intervals of 3-4 weeks without project documentation. First, this course will introduce students to the principles of the so-called lean software development, and then with three well-known agile methods: Extreme programming, Scrum, and Kanban. After completing the course, students will be able to: Understand the principles of lean software development; apply the guidelines for implementing Extreme Programming methods; implement the core concepts of the Scrum agile software development method; and carry out all activities within a Kanban project for software development.
SE575 Software quality assurance
This course is about software quality assurance and control. The course introduces students to various quality assurance tools and techniques. The goal of this course is for students to understand that a high value of software quality is not achieved without the inclusion of other components, such as security, reliability, software inspection and auditing. The challenges of quality assurance of software systems of the future are also discussed. These are: Testing in the digital age, autonomous systems testing, artificial intelligence testing, DevOps testing, next-generation software testers, the future of testing, etc. Upon completion of the course, students will be able to: Understand software quality, that is, how to define, analyze and measure it; Choose the appropriate analytical tool/technique for the given situation and explore how to analyze the results; Understand the strengths and weaknesses of various quality assurance techniques, such as software testing, static analysis, code review, and demonstration; Learn to collect, manage and evaluate quality metrics; Analyze and verify various software properties including security, reliability and performance; Gain hands-on experience with real-world quality assurance tools including static analysis tools, software testing frameworks, and software quality measurement tools.
SE570 Software and Systems Requirements Engineering
OThis course aims to provide a comprehensive look at the theoretical and practical aspects of discovery, analysis, modeling, validation, testing and writing requirements for systems of all types, with a deliberate focus on software-intensive systems. This course also explores different formal methods, social models and contemporary requirements, as well as techniques for writing requirements that can be useful to the practicing engineer. Systematic determination of requirements is required in the case of large or critical software and information systems, which are most often developed with the so-called plan-driven development methods (e.g. waterfall method). Upon completing the course, students will be able to: Communicate with potential users to gather data about work contexts; analyze marketing and user data and incorporate it into system design solutions; identify requirement conflicts and resolve them using functional alternatives.
SE580 Scalable software systems
This course covers the design principles and strategies needed to design and implement scalable data-intensive distributed systems. In this field, engineers not only need to know how to design systems that are inherently scalable, but to do so in a way that also supports high availability, reliability, and performance. Given the highly distributed nature of these systems, the basic concepts of distributed systems such as consistency, timing, and synchronization are also important. These systems generally run around the clock, have components running on different nodes and platforms, therefore, the course will emphasize deployment and operational issues. Upon completion of the course, students will be able to: Upon completing the course, students will be able to: Apply HTTP services that are native to the cloud, with event-driven asynchronous communication and SQL and NoSQL data storage, through the development of systems with increasing expectations; Understand what is required to design system properties in data-intensive distributed systems, focusing on interoperability, scalability, availability, reliability, loose coupling, mutability, and distributed data, and effectively balance these aspects by applying various design patterns and technologies; Design and implement scalable data-intensive distributed systems.
SE573 Designing Application Programming Interfaces (APIs)
Application programming interfaces (APIs) are important components of modern software systems because they connect all their components as well as provide communication with system users. This course covers all the aspects of designing and developing software interfaces, from receiving the design requirements to delivering them to users. The goal of this course is to teach students how to design, implement, and later modify application programming interfaces (APIs). The lectures focus on designing programming interfaces, while the tutorials focus on their implementation in Java. Due to an increasing number of program interfaces in modern software systems which contain an increasing number of components being used, the job of a software designer who specializes in the design of program interfaces is becoming more and more in demand. This course is intended for students who want to become designers of programming interfaces, which are increasingly in demand on the market. Upon completion of the course, students will be able to: Understand the importance, need and requirement for programming interfaces; Design, test and implement applied programming interfaces (APIs); Refine and change existing programming interfaces in accordance with changes in the software system.
SE565 Software Development Project Management
Large-scale software development requires the ability to manage resources (human and computer) through development process control. This course has a wide scope, designed to help technically trained software engineers acquire the knowledge and skills necessary to lead a project team, understand the relationship between software development and overall project engineering, estimate time and cost, and understand the software process. The nature of software development is unique enough to require specialized management techniques, particularly in the areas of estimating and scheduling. The specificity of this course lies in its intention to cover not only the management of projects developed using classical methods, i.e., plan-driven approaches, but also the management of projects developed using agile methods. Upon completing the course, students will be able to: Analyze the elements of a software project to extract comprehensive project objectives; Use inherent and derived items extracted from project artifacts to create effective project plans; Acquire the skill of applying various project management techniques in the context of a software project.
OM545 Entrepreneurship and Innovation
Creating new businesses, conquering new markets, and increasing organizational effectiveness happens through innovation, process transformation – or both. New technologies, processes, market competition, and globalization force entrepreneurs and existing firms to distance themselves from what is familiar and foster innovation and agility. This course examines the successful strategies, business models, frameworks, financing, barriers and risks for introducing innovative products and services. Topics include business model innovation, strategic leadership, people-centered and design-based innovation, knowledge and change management. Upon completing the course, students will be able to: Develop skills and insights for evaluating, articulating, refining, and presenting a new product or service, either as a start-up business or as a new initiative within an existing company and apply the knowledge necessary to introduce new technology to the market.
SE585 Software Development Project
The goal of this course is to enable the student to develop software in accordance with a project assignment aligned with the subjects studied in the first semester. In this way, the student is expected to practically apply the knowledge acquired in software development. It is also possible for the project assignment to be aligned with the final thesis or work during an internship. In such cases, the project assignment, which defines the goals and scope of the software development project, should be taken into account. Upon completing the course, the student will be able to demonstrate the ability to develop a software system in accordance with the given project assignment.
SE590 Professional practice
The goal of professional practice is to prepare students for independent research and professional work in identifying and solving specific tasks within the field of the study program in real practice conditions and/or in research laboratories and centers. The program tasks are oriented toward involving students in projects of various types, scopes, and purposes, whether in their initial, developmental, or final stages. By observing the work environment and engaging in specific activities, students are expected to acquire new knowledge, build confidence in their work, and integrate the knowledge and skills gained during their studies, within a total of 90 hours. Upon completing the professional practice, students will gain experience and master the skills needed to use, deepen, and expand their theoretical and practical knowledge to identify and address specific issues and tasks encountered in real-world systems.
SE595 Research paper
SE596 Thesis
The goal of the final thesis is to demonstrate the knowledge and skills necessary for independent work and solving practical problems. Proof of competence involves the student presenting their work in a concise and engaging manner during the presentation and defending their arguments while addressing questions and critiques during the defense. The knowledge acquired during studies serves as a solid foundation for successfully preparing and defending the final thesis, enabling the student to competently apply their knowledge in the workplace after completing and defending the thesis.
The final thesis is prepared independently by the student, in accordance with the defined content and structure outlined in the approved thesis topic proposal, based on the mentor’s suggestions and the guidelines for the technical preparation of the thesis. During the thesis preparation process, the mentor and assistant are obligated to provide the student with the necessary support in the form of consultations, reviewing partial results, offering guidance for solving problems, and, if necessary, refining and adjusting the assigned task.
JOIN BELGRADE METROPOLITAN UNIVERSITY AND BUILD THE FOUNDATION FOR A SUCCESSFUL INTERNATIONAL CAREER!
Annual tuition
STUDY PROGRAM | Annual tuition | |||||
---|---|---|---|---|---|---|
Faculty of Information Technology | ||||||
Information Technology and Systems | 2.990 € | |||||
Inteligent and Advanced Software Systems | 2.990 € | |||||
Faculty of Management | ||||||
Digital Business | 2.490 € | |||||
Faculty of Digital Arts | ||||||
Visual Communication | 3.690 € |
*Tuition can be paid in multiple monthly installments.