Changes in the field of computer sciences and their application are very dynamic. The main challenge of the research and studies in this area is developing new advanced systems and technologies that will provide solutions in the area of information and communication technologies. Information and communication technologies have become the largest, the most important and the most developed sectors that are rapidly expanding in the European Union and the global market. In addition, the emergence of new markets for the software and telecommunications sector in Southeast Europe has led to increased demand for highly qualified and specialized professionals in this field. Graduate students can work as professional software engineers or as software architects in the development of software companies or in IT departments of various different enterprises. The high level of professional skills will enable graduate students to become successful leaders in the software industry. In addition, specialization in four majors such as Data Engineering, Web and Mobile Systems, Software Engineering and Information Systems, will enable graduate students to gain expertise in certain areas and be even more competitive in their workplaces.
The program will supply students with the necessary knowledge and skills so that they can contribute in all aspects of the software development process, including planning, collaboration, specifications, design, development, delivery and maintenance of software products. In addition, students will also acquire general skills, such as analytical and critical thinking, teamwork including multicultural environments, planning and organization. After finishing this program, the graduates will have career opportunities in a variety of industries, mainly fulfilling the needs for designing computer systems, developing software for mobile and Web applications, working as database engineers, managers of software projects and processes, etc. depending on the track the students will choose within this study program. The last semester of studies includes master thesis writing, enabling program graduates to continue their studies towards a doctoral degree in computer sciences.
Knowledge and understanding
Ability to develop and implement original and creative IT ideas to ensure the quality and design and managing applications related to telecommunications applications areas such as security and quality assurance;
Ability to apply IT skills and knowledge and demonstrate specialized competencies in computer sciences and information technologies in order to organize and connect telecommunications processes like a structure that is managed and monitored both in terms of data flow and in terms of creating user interfaces;
Having knowledge and understanding of areas such as computer sciences and engineering (programming, web technologies, databases, networks, computer and information systems and multimedia);
Having knowledge of one or more areas of the telecommunications industry that can upgrade students to expert s in the application of knowledge in a given area;
Applying knowledge and understanding
Ability to critically, independently and creatively solve problems in new and unfamiliar environments with no previous experience in telecommunications;
Planning, management and evaluation of independent research in the field of telecommunications as well as development and implementation of appropriate tools for testing, simulation and implementation;
Creativity and originality in the interpretation of the knowledge in informatics to solve problems related to the objectives of the industrial production area of telecommunications;
Making judgement
Ability for creative integration and synthesis of knowledge from several areas in the telecommunications field, and administration processes and systems using IT tools designed and created for a specific issue.
Creating educational processes using computer tools and techniques;
Ability to deal with complex situations associated with specific processes resulting in real-time telecoms space;
Ability to identify appropriate specialized instances and make sound judgments in situations of lack of complete information or data based on personal, social and ethical principles and responsibilities associated with the application of knowledge and understanding;
Communication skills
Ability to share findings and proposals with rational argument and reliance both with professionals and with unskilled people, clearly and unambiguously;
Taking considerable responsibility in shared outcomes, running and initiating activities, etc.
Learning skills
Ability to take responsibility for continued private study in specialized areas of business and information within the networked economy;
Ability to take responsibility for further professional development and training;
Semester 1
-
[MCS-103]
[6 ECTS]
Advanced Software Engineering
The aim of this course is to provide students with knowledge and understanding of advanced software engineering concepts. Initially the students will be introduced to the construction of a clear specification. In addition, the aim is to answer the following advanced aspects of software engineering: What key technical activities are conducted during the clean room software engineering process? How is component-based software engineering used to create systems from reusable components? How does the client/server architecture affect the way in which software is engineered? Are software engineering concepts and principles applicable for Web-based applications and products?
-
[MCS-201]
[6 ECTS]
Advanced Data Structures and Algorithms
This course builds on previous knowledge in the area of algorithms and data structures. The goal of the course is to acquaint students with efficient advanced algorithms and adequate data structures that are used to organize, search and optimize data. It also includes the theoretical efficiency of algorithms and its practical determination with in order to be able to compare different algorithms. During the course, students will be introduced to several well-known algorithms, particularly search and optimization in complex nonlinear structures such as trees and graphs.
-
[CM197]
[6 ECTS]
Logic and Functional Programming
This course aims to introduce logic programming paradigm through Prolog language. The subject focuses on syntax and the semantics of Prolog, the working of a Prolog interpreter and various applications of Prolog. In particular, its application database querying, parsing, meta-programming, and problem solving in Artificial Intelligence (AI).
-
[6 ECTS]
General elective course
-
[MFE11] Project Management
On successful completion of the course, students will be able to:
- plan the activities necessary to implement the project, identify their interdependencies, their duration and costs;
- prepare the necessary reports and perform all the required communication between the project and the client, as well as among the team members and the other stakeholders.
- structure the project to its constituent activities;
- prepare a Gantt-chart and a network plan for the project and identify the shortest time needed to complete the project;
- use MS Project as a tool in the process of planning, implementation and review of the project;
- define the project, identify its scope and objectives and develop project specification;
-
[?F?12] Optimization Methods
The aim of this course is to present techniques of modeling and optimization in order to prepare students for developing their ability to prepare models for solving real problems in the field of computer science. The course explore the importance of matrix factorizations as an important tool which offers modality for optimizing the solutions of different numerical algorithms which are of basic interest for problem solving in the area computer sciences. The course introduces optimization theory and approach to find the optimum. The different methods of optimization will be analyzed such as the simplex method, duality problem and sensitivity of the problems of linear programming. The aim is to explore a computer implementation for each of the problems followed by the proposal of the corresponding model for optimization.
-
[MFE15] IT Applications for Preparing a Scientific Paper
The aim of this subject is:
- To display the technical elements, the structure of the text and design of a scientific research.
- To enable students to acquire advanced knowledge and skills from selected advanced chapters of IT applications that will be needed in preparing the scientific and research paper.
- Practical application of these objectives in preparing student’s individual research paper.
-
[MFE04] Selected Advanced Topics in Applications for Statistical Data Processing
The aim of this subject is:
- To display the technical elements in the field of statistics: organizing, processing, comparing through analysis and publication of data.
- To enable students to acquire advanced knowledge and skills from selected advanced chapters of the applications for statistical data processing.
- Practical application of these objectives in statistical processing of data obtained from questionnaires, reports, scientific studies and other documents.
-
-
[ECS3060] IT Professional Ethics
Aims of the course program:
- to develop an understanding of the relationship between computing, technological change and society;
- to emphasize the powerful role that computers and computer professionals play in a technological society;
- to provide an understanding of ethical concepts that are important to computer users and professionals;
- to provide experience in the consideration of ethical matters and the resolution of ethical dilemmas.
-
[ECS-507] Numerical Computations
This course is designed to equip students with concepts and methods of numerical calculations. The primary intent is to provide students with a sound introduction for the numerical methods. They have big application in solving different problems which can be solved just by using the computers, therefore, solving numerical problems will help students not just to apply them in different other areas, but simply it will help them to become better computer scientists. After e brief look at the ways numbers are placed and manipulated in computers we will deal with fundamental computational problems, such are solving the equations, system of equations followed by an approximation theory. We will deal with the accuracy of numerical solutions and also the aim is to evaluate the functions, numerical differentiation and integration.
-
[CCS-804] Information Security
Lënda mëson parimet e sigurisë kompjuterike nga një pikëpamje e aplikuar dhe siguron përvojë direkte me kërcënimet e sigurisë dhe kundërmasat. Gjithashtu lënda përfshinë parime dhe shkathtësi të dobishme për marrjen e vendimeve të sigurisë te bazuar ne informata, dhe për të kuptuar se si siguria ndërvepron me botën rreth saj. Temat e aplikuara përfshijnë kriptografinë, kontrollin e autorizimit, sigurinë e sistemeve operative dhe sigurinë e ueb-it dhe rrjetit. Tema të tjera përfshijnë parimet e përgjithshme të sigurisë, faktorët njerëzorë siç janë besimi dhe inxhinieria sociale, siguria e sistemeve komplekse dhe ekonomia e sigurisë. Lëndai synon të balancojë teorinë dhe praktikën.
Предметот ги објаснува принципите на компјутерска безбедност од применета гледна точка и обезбедува искуство со безбедносни закани и контрамерки. Предметот дополнително ги опфаќа принципите и вештините кои се корисни за донесување одлуки на безбедноста и за разбирање на безбедноста во интеракција со светот околу неа. Применетите теми вклучуваат криптографија, овластување за контрола, оперативни системи за безбедност, веб и мрежна безбедност. Други теми ги вклучуваат општите принципи за безбедност, човечки фактори како доверба и социјален инженеринг, безбедноста на комплексни системи, и на економијата на безбедноста. Предметот има за цел да ја балансира теоријата и праксата.
This course teaches principles of computer security from an applied viewpoint and provides hands on experience with security threats and countermeasures. The course additionally covers principles and skills useful for making informed security decisions and for understanding how security interacts with the world around it. Applied topics include cryptography, authorization control, operating systems security, and web and network security. Other topics include general security principles, human factors such as trust and social engineering, the security of complex systems, and the economics of security. The course aims to balance theory and practice.
-
[EM479] Technologies for Big Data
Recent technological advances decreasing hardware costs and the Internet of things has led to a rapid explosion in the amount of data generated in a variety of domains, including data-driven science, telecommunications, social media, large-scale e-commerce, medical records and e-health. Big data refers to the ability of exploiting these massive amounts of extremely heterogeneous in structure and content data that are routinely generated at an unprecedented scale from an ever-expanding variety of data sources. Business and industry used their big data to extract a better understanding of customers’ needs and behavior, to develop targeted new products and to cut operational costs. The competitive advantages and productivity gain that big data brought led to a great number of a big data projects and a shortage of people with the required skills. This course is aimed to introduce students into this rapidly expanding and exciting area; it has been designed to build the knowledge and understanding of big data systems architectures and to equip by the core technologies utilized in big data projects.
-
[6 ECTS]
Professional elective course
-
[ECSSE-01] Software Project Management
The aim of this course is to give students knowledge on how to develop a software project management plan for software intensive systems; how to set up monitoring and control mechanisms; how to allocate and reallocate project resources; how to track schedule, budget, quality, productivity, and progress; frameworks and how to plan for the installation and support phase of the system life cycle. They will understand the importance project structure, resource planning and execution, and progress measures of a project. In addition, they will understand the relationships among quality assurance, configuration management, verification and validation, and test and evaluation. They will also gain an understanding of the key issues in costing and pricing units of effort, motivation of workers, leading project teams, and total quality management.
-
[ECSSE-02] Software Testing and Analysis
Software plays an important role in our daily activities, often providing critical services to end users. It is important to ensure that these systems function as they are intended with a high degree of quality. Software testing and program analysis are two techniques that are widely used to ensure the software quality. These techniques are used by developers in order to validate, verify, and evaluate the quality of software produced during the software engineering process. This course aims to provide students with advanced knowledge of the techniques used in software testing and program analysis. Students will gain an understanding of the concepts and theories that underlie these techniques. Students will also learn to use existing popular tools that support testing and analysis tasks and will be exposed to new research in the area.
-
[ECSSE-03] Requirements Engineering
The course covers concepts for systematically establishing, defining and managing software requirements for large, complex, changing and software-intensive systems. The process is covered from technical, organizational and management perspectives, discussing past, present and future paradigms and methodologies in requirements engineering. The course covers informal, semi-formal and formal approaches, while keeping the balance between theory and practice. It involves building models of both requirement engineering process and requirements engineering product, concerning both functional and non-functional goals/requirements/specifications, using a systematic decision-making process.
-
[ECSSE-04] Agile Software Development
The course aim is to introduce the fundamental principles and practices associated with each of the agile development methods: Lean, Scrum, eXtreme Programming (XP), Feature-driven Development (FDD), Kanban, and Dynamic Systems Development Method (DSDM).
-
[ECSSE-05] Model-Driven Software Development
Model Driven Software Development is an emerging area in academic software engineering research and in industry practice. The aim of this module is to expose students to model – driven engineering by teaching them how to choose coherent modeling formalism to produce complete and consistent analysis and design models, and in which order the different models should be produced, and finally how models from one development phase are used as input/transformed into models at the next development phase. At the end of the course student will not only be able to analyze, specify and design, but also to implement applications using model – driven development and specific technologies.
-
[ECSSE-06] Software Quality Assurance and Risk Management
As software becomes more complex, and in order to ensure a higher quality, it is necessary to establish clear processes and methodologies. Doing so will ensure that the end-product has been exposed to intensive and rigorous industry-wide verification and validation techniques and procedures. Additionally, it is necessary to provide good management of risks in order to ensure reliable processes. This will translate into a high degree of assurance that a software system passes the test for correctness and reliability. The aim of this course is to provide theoretical and practical knowledge about both the quality assurance processes and risk management.
-
[ECS4060] Human - Computer Interaction
This course aims to enable students with knowledge of the theory and practice in software development related to the communication between humans and computers, with the goal of creating usable application interfaces. The course deals with the psycho-motor aspects that influence the way people communicate with machines. Through concrete examples of user interfaces, students should understand the principles and be able to apply them while designing their applications.
-
[EMCS-01] Service Oriented Architectures
The aim of this course is to establish an in-depth study of Service Oriented Architectures (SOA) from three main perspectives: business, architectural and technological point of view. From business perspective, adopting SOA is essential to delivering business agility; therefore, the importance of SOA in industry will be explained. The architectural perspective will discuss different architectural models of software development, with focus on SOA design and design patterns. The technology perspective will provide students with the opportunity to gain the required experience to implement and deploy SOA solutions that will meet different functional and non – functional requirements.
-
[EMCS-03] Web Engineering
The Web has become a major delivery platform for resources. The aim of this course is to address concepts, methods, technologies and techniques to developing high quality, reliable and usable web applications. The course explores the approaches, methodologies, techniques and tools that support their design, development, evolution and evaluation. Students will be able to learn Web engineering methods and techniques that incorporate unique aspects of the problem domain such as: document oriented delivery, fine-grained lifecycles, user-centric development, client-server legacy system integration and diverse end user skill levels that ensure proper operability, maintenance and security of a web application.
-
[EM480] Multi-Paradigm Programming
The aim of this course is to introduce principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional). This course seeks to prepare students for roles as software designers and programmers in the future workplace. In the future, most expert programmers will need to be familiar with programming in multiple paradigms. Most languages are evolving to include features drawn from multiple paradigms-imperative, functional, object-oriented, concurrency, etc. The course also seeks to prepare graduate students to conduct research on related software engineering and programming language topics.
-
[EM481] Distribution Systems Software Engineering
Emerging computer networks and communication technology provide a new technological foundation for designing software systems. The course combines a set of new approaches to software engineering for distributed applications. It provides students with state-of-the-art knowledge of the field and develops their practical skills to meet current industrial requirements, as well as enhancing their ability to adapt to the new developments of tomorrow’s technology.
Semester 2
-
[MCS-101]
[6 ECTS]
Advanced Databases
The course aims are to continue with an in-depth study of databases. The course is a continuation of the same course from the first study cycle; it starts with some revision of the conceptual database design models (a well-known entity relationship model) and continues with the enhanced entity relationship model. The concept of normalization and normal forms is introduced and is used for database design. The course continues with data storage methods, representing data elements, database system architecture, query processing and optimization, transaction processing concepts, concurrency control techniques, database recovery techniques and database security and authorization.
-
[MCS-302]
[6 ECTS]
Advanced Data Engineering
The aim of this course is to provide students with knowledge and understanding of advanced software engineering concepts. Initially the students will be introduced to the construction of a clear specification. In addition, the aim is to answer the following advanced aspects of software engineering: What key technical activities are conducted during the clean room software engineering process? How is component-based software engineering used to create systems from reusable components? How does the client/server architecture affect the way in which software is engineered?
-
[CM131]
[6 ECTS]
Microservices Development
The aim of this course is:
Identify the characteristics microservices and the benefits they provide;
Learn how to use the different platforms and frameworks to build truly reactive microservices;
Learn how to develop microservices that are maintainable, testable, and scalable;
Learn how to use tools such as postman to test microservices;
Learn how to design and implement effective tests for microservices;
Monitor and maintain microservices in large ecosystems and in the cloud.
-
[6 ECTS]
General elective course
-
[MFE11] Project Management
On successful completion of the course, students will be able to:
- plan the activities necessary to implement the project, identify their interdependencies, their duration and costs;
- prepare the necessary reports and perform all the required communication between the project and the client, as well as among the team members and the other stakeholders.
- structure the project to its constituent activities;
- prepare a Gantt-chart and a network plan for the project and identify the shortest time needed to complete the project;
- use MS Project as a tool in the process of planning, implementation and review of the project;
- define the project, identify its scope and objectives and develop project specification;
-
[?F?12] Optimization Methods
The aim of this course is to present techniques of modeling and optimization in order to prepare students for developing their ability to prepare models for solving real problems in the field of computer science. The course explore the importance of matrix factorizations as an important tool which offers modality for optimizing the solutions of different numerical algorithms which are of basic interest for problem solving in the area computer sciences. The course introduces optimization theory and approach to find the optimum. The different methods of optimization will be analyzed such as the simplex method, duality problem and sensitivity of the problems of linear programming. The aim is to explore a computer implementation for each of the problems followed by the proposal of the corresponding model for optimization.
-
[MFE15] IT Applications for Preparing a Scientific Paper
The aim of this subject is:
- To display the technical elements, the structure of the text and design of a scientific research.
- To enable students to acquire advanced knowledge and skills from selected advanced chapters of IT applications that will be needed in preparing the scientific and research paper.
- Practical application of these objectives in preparing student’s individual research paper.
-
[MFE04] Selected Advanced Topics in Applications for Statistical Data Processing
The aim of this subject is:
- To display the technical elements in the field of statistics: organizing, processing, comparing through analysis and publication of data.
- To enable students to acquire advanced knowledge and skills from selected advanced chapters of the applications for statistical data processing.
- Practical application of these objectives in statistical processing of data obtained from questionnaires, reports, scientific studies and other documents.
-
-
[ECS3060] IT Professional Ethics
Aims of the course program:
- to develop an understanding of the relationship between computing, technological change and society;
- to emphasize the powerful role that computers and computer professionals play in a technological society;
- to provide an understanding of ethical concepts that are important to computer users and professionals;
- to provide experience in the consideration of ethical matters and the resolution of ethical dilemmas.
-
[ECS-507] Numerical Computations
This course is designed to equip students with concepts and methods of numerical calculations. The primary intent is to provide students with a sound introduction for the numerical methods. They have big application in solving different problems which can be solved just by using the computers, therefore, solving numerical problems will help students not just to apply them in different other areas, but simply it will help them to become better computer scientists. After e brief look at the ways numbers are placed and manipulated in computers we will deal with fundamental computational problems, such are solving the equations, system of equations followed by an approximation theory. We will deal with the accuracy of numerical solutions and also the aim is to evaluate the functions, numerical differentiation and integration.
-
[CCS-804] Information Security
Lënda mëson parimet e sigurisë kompjuterike nga një pikëpamje e aplikuar dhe siguron përvojë direkte me kërcënimet e sigurisë dhe kundërmasat. Gjithashtu lënda përfshinë parime dhe shkathtësi të dobishme për marrjen e vendimeve të sigurisë te bazuar ne informata, dhe për të kuptuar se si siguria ndërvepron me botën rreth saj. Temat e aplikuara përfshijnë kriptografinë, kontrollin e autorizimit, sigurinë e sistemeve operative dhe sigurinë e ueb-it dhe rrjetit. Tema të tjera përfshijnë parimet e përgjithshme të sigurisë, faktorët njerëzorë siç janë besimi dhe inxhinieria sociale, siguria e sistemeve komplekse dhe ekonomia e sigurisë. Lëndai synon të balancojë teorinë dhe praktikën.
Предметот ги објаснува принципите на компјутерска безбедност од применета гледна точка и обезбедува искуство со безбедносни закани и контрамерки. Предметот дополнително ги опфаќа принципите и вештините кои се корисни за донесување одлуки на безбедноста и за разбирање на безбедноста во интеракција со светот околу неа. Применетите теми вклучуваат криптографија, овластување за контрола, оперативни системи за безбедност, веб и мрежна безбедност. Други теми ги вклучуваат општите принципи за безбедност, човечки фактори како доверба и социјален инженеринг, безбедноста на комплексни системи, и на економијата на безбедноста. Предметот има за цел да ја балансира теоријата и праксата.
This course teaches principles of computer security from an applied viewpoint and provides hands on experience with security threats and countermeasures. The course additionally covers principles and skills useful for making informed security decisions and for understanding how security interacts with the world around it. Applied topics include cryptography, authorization control, operating systems security, and web and network security. Other topics include general security principles, human factors such as trust and social engineering, the security of complex systems, and the economics of security. The course aims to balance theory and practice.
-
[EM479] Technologies for Big Data
Recent technological advances decreasing hardware costs and the Internet of things has led to a rapid explosion in the amount of data generated in a variety of domains, including data-driven science, telecommunications, social media, large-scale e-commerce, medical records and e-health. Big data refers to the ability of exploiting these massive amounts of extremely heterogeneous in structure and content data that are routinely generated at an unprecedented scale from an ever-expanding variety of data sources. Business and industry used their big data to extract a better understanding of customers’ needs and behavior, to develop targeted new products and to cut operational costs. The competitive advantages and productivity gain that big data brought led to a great number of a big data projects and a shortage of people with the required skills. This course is aimed to introduce students into this rapidly expanding and exciting area; it has been designed to build the knowledge and understanding of big data systems architectures and to equip by the core technologies utilized in big data projects.
-
[6 ECTS]
Professional elective course
-
[ECSSE-01] Software Project Management
The aim of this course is to give students knowledge on how to develop a software project management plan for software intensive systems; how to set up monitoring and control mechanisms; how to allocate and reallocate project resources; how to track schedule, budget, quality, productivity, and progress; frameworks and how to plan for the installation and support phase of the system life cycle. They will understand the importance project structure, resource planning and execution, and progress measures of a project. In addition, they will understand the relationships among quality assurance, configuration management, verification and validation, and test and evaluation. They will also gain an understanding of the key issues in costing and pricing units of effort, motivation of workers, leading project teams, and total quality management.
-
[ECSSE-02] Software Testing and Analysis
Software plays an important role in our daily activities, often providing critical services to end users. It is important to ensure that these systems function as they are intended with a high degree of quality. Software testing and program analysis are two techniques that are widely used to ensure the software quality. These techniques are used by developers in order to validate, verify, and evaluate the quality of software produced during the software engineering process. This course aims to provide students with advanced knowledge of the techniques used in software testing and program analysis. Students will gain an understanding of the concepts and theories that underlie these techniques. Students will also learn to use existing popular tools that support testing and analysis tasks and will be exposed to new research in the area.
-
[ECSSE-03] Requirements Engineering
The course covers concepts for systematically establishing, defining and managing software requirements for large, complex, changing and software-intensive systems. The process is covered from technical, organizational and management perspectives, discussing past, present and future paradigms and methodologies in requirements engineering. The course covers informal, semi-formal and formal approaches, while keeping the balance between theory and practice. It involves building models of both requirement engineering process and requirements engineering product, concerning both functional and non-functional goals/requirements/specifications, using a systematic decision-making process.
-
[ECSSE-04] Agile Software Development
The course aim is to introduce the fundamental principles and practices associated with each of the agile development methods: Lean, Scrum, eXtreme Programming (XP), Feature-driven Development (FDD), Kanban, and Dynamic Systems Development Method (DSDM).
-
[ECSSE-05] Model-Driven Software Development
Model Driven Software Development is an emerging area in academic software engineering research and in industry practice. The aim of this module is to expose students to model – driven engineering by teaching them how to choose coherent modeling formalism to produce complete and consistent analysis and design models, and in which order the different models should be produced, and finally how models from one development phase are used as input/transformed into models at the next development phase. At the end of the course student will not only be able to analyze, specify and design, but also to implement applications using model – driven development and specific technologies.
-
[ECSSE-06] Software Quality Assurance and Risk Management
As software becomes more complex, and in order to ensure a higher quality, it is necessary to establish clear processes and methodologies. Doing so will ensure that the end-product has been exposed to intensive and rigorous industry-wide verification and validation techniques and procedures. Additionally, it is necessary to provide good management of risks in order to ensure reliable processes. This will translate into a high degree of assurance that a software system passes the test for correctness and reliability. The aim of this course is to provide theoretical and practical knowledge about both the quality assurance processes and risk management.
-
[ECS4060] Human - Computer Interaction
This course aims to enable students with knowledge of the theory and practice in software development related to the communication between humans and computers, with the goal of creating usable application interfaces. The course deals with the psycho-motor aspects that influence the way people communicate with machines. Through concrete examples of user interfaces, students should understand the principles and be able to apply them while designing their applications.
-
[EMCS-01] Service Oriented Architectures
The aim of this course is to establish an in-depth study of Service Oriented Architectures (SOA) from three main perspectives: business, architectural and technological point of view. From business perspective, adopting SOA is essential to delivering business agility; therefore, the importance of SOA in industry will be explained. The architectural perspective will discuss different architectural models of software development, with focus on SOA design and design patterns. The technology perspective will provide students with the opportunity to gain the required experience to implement and deploy SOA solutions that will meet different functional and non – functional requirements.
-
[EMCS-03] Web Engineering
The Web has become a major delivery platform for resources. The aim of this course is to address concepts, methods, technologies and techniques to developing high quality, reliable and usable web applications. The course explores the approaches, methodologies, techniques and tools that support their design, development, evolution and evaluation. Students will be able to learn Web engineering methods and techniques that incorporate unique aspects of the problem domain such as: document oriented delivery, fine-grained lifecycles, user-centric development, client-server legacy system integration and diverse end user skill levels that ensure proper operability, maintenance and security of a web application.
-
[EM480] Multi-Paradigm Programming
The aim of this course is to introduce principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional). This course seeks to prepare students for roles as software designers and programmers in the future workplace. In the future, most expert programmers will need to be familiar with programming in multiple paradigms. Most languages are evolving to include features drawn from multiple paradigms-imperative, functional, object-oriented, concurrency, etc. The course also seeks to prepare graduate students to conduct research on related software engineering and programming language topics.
-
[EM481] Distribution Systems Software Engineering
Emerging computer networks and communication technology provide a new technological foundation for designing software systems. The course combines a set of new approaches to software engineering for distributed applications. It provides students with state-of-the-art knowledge of the field and develops their practical skills to meet current industrial requirements, as well as enhancing their ability to adapt to the new developments of tomorrow’s technology.
Semester 3
-
[MCS-303]
[6 ECTS]
Research Methodologies
The purpose of this course is to provide students with knowledge and understanding of different scientific theories and methodologies. Initially the student will be introduced to the conceptual, theoretical definitions and examples of all existing methods of research, hypothesis, direct and indirect variables, validation of the results, the conclusions BIAS and scientific qualitative and quantitative methodologies, "ground research" methodology and other methodological approaches. In each chapter the student will work on practical assignments. After completing the course the student will be able to explain thoroughly and understand the importance of basic scientific concepts, effectively search and find information-relevant literature, identify, describe and formulate scientific problems, make a careful choice of alternative research approaches, thoroughly described, compare and explain the advantages and disadvantages of different scientific methods for collecting quantitative and qualitative data, apply basic scientific methods to analyze quantitative and qualitative data, understand different frameworks for building theory and review and evaluate scientific publications.
-
[MCS-203]
[6 ECTS]
Distributed Computing
This subject introduces graduate students to the advanced topics in distributed computing models, algorithms, and software systems. In particular, the course will emphasize recent techniques used by real-world distributed systems such as distributed file systems, lock services, enterprise data centers, cloud computing, wireless sensor networks and pervasive applications. Case studies on real distributed systems will be conducted, and recent research literature in the subject area will be reviewed.
-
[CM132]
[6 ECTS]
Software Development for Web and Mobile Devices
This course aims to provide students with knowledge of the technologies used to build web and mobile applications. In addition to general aspects of specific technologies on different platforms, the focus will be on software development that can run on multiple platforms simultaneously, technologies that are typically based around the JavaScript programming language. In addition to the techniques for developing, publishing and maintaining this type of software, the course will cover the benefits and limitations or difficulties we encounter in developing such software.
-
[6 ECTS]
Professional elective course
-
[ECSSE-01] Software Project Management
The aim of this course is to give students knowledge on how to develop a software project management plan for software intensive systems; how to set up monitoring and control mechanisms; how to allocate and reallocate project resources; how to track schedule, budget, quality, productivity, and progress; frameworks and how to plan for the installation and support phase of the system life cycle. They will understand the importance project structure, resource planning and execution, and progress measures of a project. In addition, they will understand the relationships among quality assurance, configuration management, verification and validation, and test and evaluation. They will also gain an understanding of the key issues in costing and pricing units of effort, motivation of workers, leading project teams, and total quality management.
-
[ECSSE-02] Software Testing and Analysis
Software plays an important role in our daily activities, often providing critical services to end users. It is important to ensure that these systems function as they are intended with a high degree of quality. Software testing and program analysis are two techniques that are widely used to ensure the software quality. These techniques are used by developers in order to validate, verify, and evaluate the quality of software produced during the software engineering process. This course aims to provide students with advanced knowledge of the techniques used in software testing and program analysis. Students will gain an understanding of the concepts and theories that underlie these techniques. Students will also learn to use existing popular tools that support testing and analysis tasks and will be exposed to new research in the area.
-
[ECSSE-03] Requirements Engineering
The course covers concepts for systematically establishing, defining and managing software requirements for large, complex, changing and software-intensive systems. The process is covered from technical, organizational and management perspectives, discussing past, present and future paradigms and methodologies in requirements engineering. The course covers informal, semi-formal and formal approaches, while keeping the balance between theory and practice. It involves building models of both requirement engineering process and requirements engineering product, concerning both functional and non-functional goals/requirements/specifications, using a systematic decision-making process.
-
[ECSSE-04] Agile Software Development
The course aim is to introduce the fundamental principles and practices associated with each of the agile development methods: Lean, Scrum, eXtreme Programming (XP), Feature-driven Development (FDD), Kanban, and Dynamic Systems Development Method (DSDM).
-
[ECSSE-05] Model-Driven Software Development
Model Driven Software Development is an emerging area in academic software engineering research and in industry practice. The aim of this module is to expose students to model – driven engineering by teaching them how to choose coherent modeling formalism to produce complete and consistent analysis and design models, and in which order the different models should be produced, and finally how models from one development phase are used as input/transformed into models at the next development phase. At the end of the course student will not only be able to analyze, specify and design, but also to implement applications using model – driven development and specific technologies.
-
[ECSSE-06] Software Quality Assurance and Risk Management
As software becomes more complex, and in order to ensure a higher quality, it is necessary to establish clear processes and methodologies. Doing so will ensure that the end-product has been exposed to intensive and rigorous industry-wide verification and validation techniques and procedures. Additionally, it is necessary to provide good management of risks in order to ensure reliable processes. This will translate into a high degree of assurance that a software system passes the test for correctness and reliability. The aim of this course is to provide theoretical and practical knowledge about both the quality assurance processes and risk management.
-
[ECS4060] Human - Computer Interaction
This course aims to enable students with knowledge of the theory and practice in software development related to the communication between humans and computers, with the goal of creating usable application interfaces. The course deals with the psycho-motor aspects that influence the way people communicate with machines. Through concrete examples of user interfaces, students should understand the principles and be able to apply them while designing their applications.
-
[EMCS-01] Service Oriented Architectures
The aim of this course is to establish an in-depth study of Service Oriented Architectures (SOA) from three main perspectives: business, architectural and technological point of view. From business perspective, adopting SOA is essential to delivering business agility; therefore, the importance of SOA in industry will be explained. The architectural perspective will discuss different architectural models of software development, with focus on SOA design and design patterns. The technology perspective will provide students with the opportunity to gain the required experience to implement and deploy SOA solutions that will meet different functional and non – functional requirements.
-
[EMCS-03] Web Engineering
The Web has become a major delivery platform for resources. The aim of this course is to address concepts, methods, technologies and techniques to developing high quality, reliable and usable web applications. The course explores the approaches, methodologies, techniques and tools that support their design, development, evolution and evaluation. Students will be able to learn Web engineering methods and techniques that incorporate unique aspects of the problem domain such as: document oriented delivery, fine-grained lifecycles, user-centric development, client-server legacy system integration and diverse end user skill levels that ensure proper operability, maintenance and security of a web application.
-
[EM480] Multi-Paradigm Programming
The aim of this course is to introduce principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional). This course seeks to prepare students for roles as software designers and programmers in the future workplace. In the future, most expert programmers will need to be familiar with programming in multiple paradigms. Most languages are evolving to include features drawn from multiple paradigms-imperative, functional, object-oriented, concurrency, etc. The course also seeks to prepare graduate students to conduct research on related software engineering and programming language topics.
-
[EM481] Distribution Systems Software Engineering
Emerging computer networks and communication technology provide a new technological foundation for designing software systems. The course combines a set of new approaches to software engineering for distributed applications. It provides students with state-of-the-art knowledge of the field and develops their practical skills to meet current industrial requirements, as well as enhancing their ability to adapt to the new developments of tomorrow’s technology.
-
[6 ECTS]
Professional elective course
-
[ECSSE-01] Software Project Management
The aim of this course is to give students knowledge on how to develop a software project management plan for software intensive systems; how to set up monitoring and control mechanisms; how to allocate and reallocate project resources; how to track schedule, budget, quality, productivity, and progress; frameworks and how to plan for the installation and support phase of the system life cycle. They will understand the importance project structure, resource planning and execution, and progress measures of a project. In addition, they will understand the relationships among quality assurance, configuration management, verification and validation, and test and evaluation. They will also gain an understanding of the key issues in costing and pricing units of effort, motivation of workers, leading project teams, and total quality management.
-
[ECSSE-02] Software Testing and Analysis
Software plays an important role in our daily activities, often providing critical services to end users. It is important to ensure that these systems function as they are intended with a high degree of quality. Software testing and program analysis are two techniques that are widely used to ensure the software quality. These techniques are used by developers in order to validate, verify, and evaluate the quality of software produced during the software engineering process. This course aims to provide students with advanced knowledge of the techniques used in software testing and program analysis. Students will gain an understanding of the concepts and theories that underlie these techniques. Students will also learn to use existing popular tools that support testing and analysis tasks and will be exposed to new research in the area.
-
[ECSSE-03] Requirements Engineering
The course covers concepts for systematically establishing, defining and managing software requirements for large, complex, changing and software-intensive systems. The process is covered from technical, organizational and management perspectives, discussing past, present and future paradigms and methodologies in requirements engineering. The course covers informal, semi-formal and formal approaches, while keeping the balance between theory and practice. It involves building models of both requirement engineering process and requirements engineering product, concerning both functional and non-functional goals/requirements/specifications, using a systematic decision-making process.
-
[ECSSE-04] Agile Software Development
The course aim is to introduce the fundamental principles and practices associated with each of the agile development methods: Lean, Scrum, eXtreme Programming (XP), Feature-driven Development (FDD), Kanban, and Dynamic Systems Development Method (DSDM).
-
[ECSSE-05] Model-Driven Software Development
Model Driven Software Development is an emerging area in academic software engineering research and in industry practice. The aim of this module is to expose students to model – driven engineering by teaching them how to choose coherent modeling formalism to produce complete and consistent analysis and design models, and in which order the different models should be produced, and finally how models from one development phase are used as input/transformed into models at the next development phase. At the end of the course student will not only be able to analyze, specify and design, but also to implement applications using model – driven development and specific technologies.
-
[ECSSE-06] Software Quality Assurance and Risk Management
As software becomes more complex, and in order to ensure a higher quality, it is necessary to establish clear processes and methodologies. Doing so will ensure that the end-product has been exposed to intensive and rigorous industry-wide verification and validation techniques and procedures. Additionally, it is necessary to provide good management of risks in order to ensure reliable processes. This will translate into a high degree of assurance that a software system passes the test for correctness and reliability. The aim of this course is to provide theoretical and practical knowledge about both the quality assurance processes and risk management.
-
[EM560] Human - Computer Interaction
This course aims to enable students with knowledge of the theory and practice in software development related to the communication between humans and computers, with the goal of creating usable application interfaces. The course deals with the psycho-motor aspects that influence the way people communicate with machines. Through concrete examples of user interfaces, students should understand the principles and be able to apply them while designing their applications.
-
[EMCS-01] Service Oriented Architectures
The aim of this course is to establish an in-depth study of Service Oriented Architectures (SOA) from three main perspectives: business, architectural and technological point of view. From business perspective, adopting SOA is essential to delivering business agility; therefore, the importance of SOA in industry will be explained. The architectural perspective will discuss different architectural models of software development, with focus on SOA design and design patterns. The technology perspective will provide students with the opportunity to gain the required experience to implement and deploy SOA solutions that will meet different functional and non – functional requirements.
-
[EMCS-03] Web Engineering
The Web has become a major delivery platform for resources. The aim of this course is to address concepts, methods, technologies and techniques to developing high quality, reliable and usable web applications. The course explores the approaches, methodologies, techniques and tools that support their design, development, evolution and evaluation. Students will be able to learn Web engineering methods and techniques that incorporate unique aspects of the problem domain such as: document oriented delivery, fine-grained lifecycles, user-centric development, client-server legacy system integration and diverse end user skill levels that ensure proper operability, maintenance and security of a web application.
-
[EM480] Multi-Paradigm Programming
The aim of this course is to introduce principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional). This course seeks to prepare students for roles as software designers and programmers in the future workplace. In the future, most expert programmers will need to be familiar with programming in multiple paradigms. Most languages are evolving to include features drawn from multiple paradigms-imperative, functional, object-oriented, concurrency, etc. The course also seeks to prepare graduate students to conduct research on related software engineering and programming language topics.
-
[EM481] Distribution Systems Software Engineering
Emerging computer networks and communication technology provide a new technological foundation for designing software systems. The course combines a set of new approaches to software engineering for distributed applications. It provides students with state-of-the-art knowledge of the field and develops their practical skills to meet current industrial requirements, as well as enhancing their ability to adapt to the new developments of tomorrow’s technology.
Semester 4
-
[30 ECTS]
Master Thesis
This module enables students to transfer their skills and knowledge to research and carry out more complex tasks related to their master thesis. The module is designed to be fully practical and students to acquire the necessary knowledge and skills to approach writing the thesis. The module has unique return result-to enable students to write the master thesis with minimal difficulties, and with maximum efficiency. The course aims to improve research techniques and style of writing the paper, taking into account the prevention of the usage of illegal means, such as plagiarism and infringement of copyright, which are prohibited by the Statute of SEEU.