logo

Computer Science

Do you already have an academic bachelor in Computer Science and would you like to work towards an even deeper scientific understanding and knowledge? Then our master in Computer Science is the programme you’re looking for! The two-year programme has a broad scope, but also offers a wide variety of highly specialised elective courses. As such, it actively prepares students for positions in scientific research and in state-of-the-art development projects.

Strong embedding in ongoing research

Our courses and specialisations are strongly embedded in the ongoing activities of research groups that are each specialised in a particular domain of computer science. The groups publish in international journals and at international conferences, and participate in international research networks and projects. Master students carry out at least half of their studies within one of these groups. By being part of a professional research team, students have the best opportunities to learn and develop scientific skills, and to participate in world-class research. The groups also have experience in developing research trajectories with societal and economic impact. They have implemented an active policy in technology and knowledge transfer, patenting, spin-off creation, industrial collaboration, and innovation.

This master's programme is jointly organised by two departments, the Department of Computer Science at the Faculty of Sciences and the Department of Electronics at the Department of Engineering. Together, they employ more than 200 researchers, who cover a wide range of research topics.

A truly international context

About half of the students in our master’s programme come from Belgium, the other half come from all over the world. Courses are taught and guided by a similarly diverse mix of professors and assistants. The membership of the research groups is truly international, and you can communicate with the university administration in English. You can also go abroad during your studies to one of our prestigious partner universities.

Tom Jaspers, VUB alumnus Computer Science, Google UK, London

Important emphasis on foundations

“Thanks to the diversity of courses taught in the Computer Science programme I was able to find and refine my interests in this very broad field. The Artificial Intelligence specialisation offered a challenging and interesting path into a subject that is embedded in nearly every new technological advancement. The style of teaching pushed us to keep exploring beyond the course material, and allowed me to gain a deep familiarity with the latest research. There was an important emphasis on the foundations of Computer Science and Artificial Intelligence, something that helps me in my career when keeping up with the latest academic work.”

Yasmin Fathy, VUB alumna Computer Science

Grasped the essence of research in different disciplines

"I am from Egypt and just graduated from the two-year Master in Computer Science, profile Artificial Intelligence (AI). I would definitely recommend this challenging programme to all graduate students who want to reach a high level of research. The diversity of courses also allowed me to grasp the essence of research in different disciplines. I had a great time in Brussels, learned so much and made friends from all over the world."

Faculty


Sciences and Bioengineering Sciences

More info

Any questions?


Don’t hesitate to write us an email. We’d be happy to help you on your way!

Contact us

VUB in the media

For all VUB news and recent developments, check our newspage vubtoday!

Four specialisations

Our master programme has been designed for students with a solid, fundamental academic background in computer science (such as a bachelor in computer science, or equivalent). It will provide you with a deeper knowledge and understanding of computer science in general, and one of four specialisations in particular. The programme prepares you for an active role in computer science research and development, in academia as well as in the ICT industry. In addition to a meticulously designed core programme complemented by state-of-the-art specialisations, the curriculum offers a wide range of electives that allow you to tailor your education to your interests. Our courses promote an active style of learning. As well as regular lectures, we use a broad range of instruction techniques, such as group and individual projects, seminars, workshops, talks by invited experts in the field, and research trainings. We offer the following four specialisations:

Artificial Intelligence

Specialisation

Data Management and Analytics

Specialisation

Multimedia

Specialisation

Software Languages and Software Engineering

Specialisation

Example time table

Take a look at an example of your future timetable!

Learning outcomes

Learning outcomes describe the intended knowledge and understanding, skills and attitudes that you must master after completing your studies.

Do you want to know more about the specific learning outcomes of this programme? Click here for more information.

After Graduation: Industry or Academia?

You will be equipped with exactly those skills that are paramount to a successful career in high-end industry or academia: a sharp, inquisitive mind dedicated to pushing the boundaries of knowledge and human accomplishment.

You can even become part of one of the highly professional research teams at VUB with a societal and economic impact. Here you will be able to implement an active policy in technology and knowledge transfer, patenting, spin-off creation, industrial networking and innovation.

Careercenter


The VUB helps you to make your first step in the job market with workshops, networking events, job fairs, tips ‘n tricks for job interviews. All an ambitious student needs!

First step in the market

Phd?


If you want to continue your academic career, you can apply for a PhD position at the Vrije Universiteit Brussel. All you need is a promoter, research subject and sufficient funding. Are you up for this challenge?

More info

Our Artificial Intelligence specialisation is all about building intelligent software artefacts. We emphasise the theories of complex dynamic systems and self-organisation, starting from the theory of complex dynamic systems as developed in related fields, such as mathematics, physics and biology. In addition to data mining and big data, students will be exposed to current research in the areas of adaptive systems, multi-agent systems, the origins of language and bioinformatics.

Opening of the VUB AI Experience Center on November 21, 2019

Artificial Intelligence

The VUB’s AI Laboratory is the longest-established AI research centre in mainland Europe, dating from 1982. Our unique history and expertise gives our Artificial Intelligence (AI) master’s specialisation broad and deep expertise in Artificial Intelligence research and technology, covering foundations of the field right through to the latest developments. The specialisation is focused on AI engineering skills: you will learn to program computational intelligent systems and to study their capabilities rigorously. Having successfully finished the specialisation, you will be well-prepared for a career in Artificial Intelligence, at the cutting edge of the current wave of intelligent computational systems. Acknowledging that AI changes very quickly, this specialisation aims to equip you with the technical and intellectual skills of an independent self-directed learner, who is able to stay ahead of the current trend and thus contribute to industry or academia at the highest possible level throughout an exciting career.  

As a student in the AI specialisation, you will study, use and apply state-of-the-art AI techniques, including logic-based, statistical and probabilistic, and neural inference systems, cognitive modelling, multi-agent societies with emergent intelligence, language processing, reinforcement learning and computational creativity, all set in a rigorous mathematical and scientific context, bridging the gap between application and theory. In your Master’s thesis, you will conduct original research under the guidance of an internationally renowned AI specialist, and your work may well contribute to the ongoing projects of the Lab, making a lasting contribution to AI science.

The AI specialisation comprises three mandatory courses and a broad choice of electives that allow you to put your own personal emphasis on your studies. For example, you can learn how to store knowledge so that it can be understood both by humans and computers, and how to use it afterwards to automatically solve problems; if you are interested in machine learning, you can study how computers and robots can learn by searching for interesting patterns in data, or how they can learn from experience and get gradually better at performing a task; if you are interested in language you can study how artificial intelligence can be used to investigate how language works, how it evolved, and how computers can understand, produce and learn it; if you are interested in how computers might contribute to creative activities in science, arts and music, you can study creative production from the cognitive perspective (how do humans do it?), from an engineering perspective (which AI systems can do it?) or from a philosophical perspective (what is creativity anyway?); if you are interested in the effect of AI on the world, you can study its ethics and social impact. The choice is yours.

120 ECTS

Artificial Intelligence is a specialisation in our 2-year MsC in Computer Science of 120 ECTS. Students of this specialisation need to succeed for the carefully designed core of 30 ECTS that is common to all four specialisations, the 23 ECTS of four mandatory courses within this specialisation, at least 7 ECTS of electives within the specialisation, an additional 30 ECTS of electives from this or any of the other specialisations, and for a research training of 6 ECTS and a master's thesis of 24 ECTS.

The following courses comprise a carefully designed core that is mandatory regardless of the chosen specialisation:

Software Architectures (foundational, 6 ECTS, sem 1)
This course covers the design and implementation of large-scale software systems that operate worldwide with thousands of concurrent users. We discuss architectural patterns and tactics for ensuring their qualities such as reactivity (react in a timely manner to inputs), resilience (react to and recover from failures), and elasticity (react to variable load conditions). We illustrate these patterns using frameworks for the programming language Scala, of which the relevant features are reviewed at the beginning of the course.
Theory of Computation (foundational, 3 ECTS, sem 2)
This course covers the basic concepts of the theory of computation and complexity theory. The addressed concepts of the theory of computation are: Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility and the recursion theorem. The following concepts of complexity theory are discussed: time complexity and the classes P and NP, NP-completeness, the Cook-Levin theorem, and other NP-complete problems.
Information Theory (foundational, 3 ECTS, sem 1)
The course aims to introduce the information theory based on the approaches of Shannon on the one hand and Kinchine on the other. Concepts of auto-information, entropy, conditional entropies, ambiguity, transinformation and redundancy are introduced and many practical examples are treated and computed. The channel capacity of a channel is estimated and applied to practical examples; e.g. DSL on twisted pair telephony cables and for wireless radio channels.
Declarative Programming (foundational, 6 ECTS, sem 2)
Declarative Programming involves specifying the input-output relation that a user requires from their program while, as far as possible, leaving the actual execution method to the compiler. In this hands-on course, advanced constraint logic programming is studied in depth, from both theoretical and practical perspectives. The Logic Programming language Prolog is covered in detail, from a historical perspective that prepares you for exposure to logic programs in industry, up to the latest developments in constraint logic programming and numerical constraint satisfaction.
Methods for Scientific Research (foundational, 3 ECTS, sem 1)
This course provides a basic introduction to scientific methods: how scientists ensure they do not reinvent the wheel, do not fool themselves and do not disseminate incorrect results. It is evaluated with a number of practical challenges to the students.
Scientific Integrity (broadening, 3 ECTS, sem 1)
In the movie Jurassic Park the character of Dr. Ian Malcolm utters “your scientists were so preoccupied with whether they could, they didn’t stop to think if they should.” That's one of the ethical aspects this course looks into; you will have to write a column about such issues. Other topics covered are academic fraud and sloppy science. In other words: you peek behind the scene of science and learn about the reasons to perform your own research as ethically as possible.
Open Information Systems (foundational, 6 ECTS, sem 1)
In Open Information Systems, we aim to enable computer-based agents to exchange and process data in a meaningful (semantic) manner. We discuss both semantic elicitation and semantic application. The former is concerned formally specifying a shared understanding of a Universe of Discourse into an ontology. The latter is concerned with querying, integrating, and using data from heterogeneous sources with these ontologies. We adopt the Semantic Web and its W3C specifications (such as RDF, OWL, and SPARQL) for illustrating various principles.

The following is the list of mandatory courses within this specialisation:

Statistical Foundations of Machine Learning (foundational, 6 ECTS, sem 2)
Machine Learning is applicable to many real-world tasks, and mainly consists of learning correlations in data, or between inputs and outputs. This course explains all the fundamental aspects of the most common Machine Learning approaches, to allow the students to perfectly understand how to design well-behaving Machine Learning systems, accurately measure their performance, and use the result of the learning procedure as efficiently as possible. This course also explains how various algorithms work, such as least-squares regression, neural networks or decision trees.
Heuristic Optimisation (foundational, 5 ECTS, sem 2) 
Many tasks solved with computers can be seen as optimization problems, for which a program has to build a solution that maximizes or minimizes one or more scalar objectives. Finding the shortest route between two points in a city, or how to minimize the cost of travelling by plane, are examples of optimization problems. This course explores the wide variety of algorithms that solve optimization problems in an approximate way, to ensure very good solutions at low computational costs.
Actual Trends in Artificial Intelligence (deepening, 6 ECTS, sem 1+2) 
Artificial Intelligence is moving at an incredible pace. In this course, the latest progress in state-of-the-art AI is introduced. Over the course of ten guest lectures, experts in their field come to talk about their latest research. Next to the theoretical part, in the AI challenges students will apply learned techniques in a team, to create an AI powered application!
Computational Game Theory (foundational, 6 ECTS, sem 1) 
Just as humans, AI systems don’t live in isolation. It doesn’t make sense to make a single traffic light smart, rather the traffic lights need to organise themselves as a team to optimise traffic throughput. The aim of the course is to introduce the students to the field of learning agents, where the learning happens in a group or population of agents. The students will also obtain a basic understanding of (evolutionary) game theory and complex networks which will allow them to understand the scientific literature in that field and the relevance of this domain to learning in general.
 

The following courses help you prepare you own research contribution:

Research Training (deepening, 6 ECTS, sem 1+2)
This course is organised as an intensive internship within one of the research groups of the department of computer science. Students are asked to work autonomously on a specific part of an experiment or on an ongoing development project. They are followed up very closely and frequently receive feedback.
Master's Thesis Computer Science (deepening, 24 ECTS, sem 1+2)
Students develop, publish, and defend an original contribution to the field of Computer Science in general and to their chosen specialisation in particular. They can determine the subject freely in consensus with a promotor from the department. To this end, a list of recommended subjects is communicated.

In addition, up to 12 ECTS can be chosen from our Bachelor programme in Computer Science with approval of the examiniation commission.

 

Research in the picture

Professor Nowé, who teaches in the Artificial Intelligence specialisation, and her team apply reinforcement learning to the problem of optimising the use of the electrical network by a fleet of electronic vehicles. You can read more about the research on their website.

Our Data Management and Analytics specialisation (as from 2020-2021) covers scalable and distributed data management systems, information retrieval and data mining algorithms, as well as information visualisation and human-data interaction techniques. You will study algorithms, techniques, architectures and methods for the management, processing and interaction with both structured and unstructured data. The acquired theoretical knowledge will be applied in the design of applications that extract insights from streams as data such as for instance produced by Internet of Things devices. 

At the confluence of Big Data and Interactive Data Science!

Data Management and Analytics

The Data Management and Analytics specialisation within the 2-year MsC in Computer Science covers the interdisciplinary aspects of interactive data science and big data management, including scalable and distributed data management systems, information retrieval and data mining algorithms as well as information visualisation and human-data interaction techniques. Our goal is to prepare students for the future challenges in managing and analysing the rapidly growing amounts of data that is produced manually by humans as well as automatically generated by, for example, sensors in emerging Internet of Things solutions, data capturing on the Web or as an outcome of scientific experiments. Thereby, we focus on the scientific aspects and concepts for scalable data management solutions, information retrieval and data mining as well as different information visualisation and interaction techniques rather than on existing mainstream technologies, and provide students the necessary education for a future career as data scientists and data engineers.

As a student in the Data Management and Analytics specialisation, you will study, design and develop big data solutions for the storage, processing, analysis and interaction with big and complex data. Thereby, a special focus is on the system aspects of solutions for big data management and analytics. You will study specialised systems and algorithms for the development of data-intensive applications at scale that store their data in a distributed manner as, for example, used by players such as Google or Facebook as well as needed for future applications in the emerging field of the Internet of Things. You will further learn machine learning and information retrieval techniques to search for information in large collections of documents (e.g. as applied in Google's search algorithms) and study the theory as well as practical aspects for the automatic detection of structure in big and complex data. This knowledge about methods and techniques for the machine-based analytics of large datasets will play a major role in future business solutions since it is not enough to capture the data without having the tools and skills to further process, analyse and get new insights from these datasets. Given that many analytical tasks cannot automated, you will also learn about state-of-the art information visualisation and interaction techniques which keep the human in the loop, augment the human capabilities and enable the exploratory analysis of big and complex datasets. You will further learn how to design interactive visualisation solutions for the presentation of known data-supported facts to support decision making processes as well as the delivery of existing knowledge.

120 ECTS

Data Management and Analytics is a specialisation in our 2-year MsC in Computer Science of 120 ECTS. Students of this specialisation need to succeed for the carefully designed core of 30 ECTS that is common to all four specialisations, the 24 ECTS of four mandatory courses within this specialisation, at least 6 ECTS of electives within the specialisation, an additional 30 ECTS of electives from this or any of the other specialisation, and for a research training of 6 ECTS and a master's thesis of 24 ECTS.

The following courses comprise a carefully designed core that is mandatory regardless of the chosen specialisation:

Software Architectures (foundational, 6 ECTS, sem 1)
This course covers the design and implementation of large-scale software systems that operate worldwide with thousands of concurrent users. We discuss architectural patterns and tactics for ensuring their qualities such as reactivity (react in a timely manner to inputs), resilience (react to and recover from failures), and elasticity (react to variable load conditions). We illustrate these patterns using frameworks for the programming language Scala, of which the relevant features are reviewed at the beginning of the course.
Theory of Computation (foundational, 3 ECTS, sem 2)
This course covers the basic concepts of the theory of computation and complexity theory. The addressed concepts of the theory of computation are: Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility and the recursion theorem. The following concepts of complexity theory are discussed: time complexity and the classes P and NP, NP-completeness, the Cook-Levin theorem, and other NP-complete problems.
Information Theory (foundational, 3 ECTS, sem 1)
The course aims to introduce the information theory based on the approaches of Shannon on the one hand and Kinchine on the other. Concepts of auto-information, entropy, conditional entropies, ambiguity, transinformation and redundancy are introduced and many practical examples are treated and computed. The channel capacity of a channel is estimated and applied to practical examples; e.g. DSL on twisted pair telephony cables and for wireless radio channels.
Declarative Programming (foundational, 6 ECTS, sem 2)
Declarative Programming involves specifying the input-output relation that a user requires from their program while, as far as possible, leaving the actual execution method to the compiler. In this hands-on course, advanced constraint logic programming is studied in depth, from both theoretical and practical perspectives. The Logic Programming language Prolog is covered in detail, from a historical perspective that prepares you for exposure to logic programs in industry, up to the latest developments in constraint logic programming and numerical constraint satisfaction.
Methods for Scientific Research (foundational, 3 ECTS, sem 1)
This course provides a basic introduction to scientific methods: how scientists ensure they do not reinvent the wheel, do not fool themselves and do not disseminate incorrect results. It is evaluated with a number of practical challenges to the students.
Scientific Integrity (broadening, 3 ECTS, sem 1)
In the movie Jurassic Park the character of Dr. Ian Malcolm utters “your scientists were so preoccupied with whether they could, they didn’t stop to think if they should.” That's one of the ethical aspects this course looks into; you will have to write a column about such issues. Other topics covered are academic fraud and sloppy science. In other words: you peek behind the scene of science and learn about the reasons to perform your own research as ethically as possible.
Open Information Systems (foundational, 6 ECTS, sem 1)
In Open Information Systems, we aim to enable computer-based agents to exchange and process data in a meaningful (semantic) manner. We discuss both semantic elicitation and semantic application. The former is concerned formally specifying a shared understanding of a Universe of Discourse into an ontology. The latter is concerned with querying, integrating, and using data from heterogeneous sources with these ontologies. We adopt the Semantic Web and its W3C specifications (such as RDF, OWL, and SPARQL) for illustrating various principles.
Scalable Data Management Systems (foundational, 6 ECTS, sem 1)
In the course Scalable Data Management Systems we study specialized systems and algorithms developed to support data-intensive applications at scale. The course takes a principled approach and covers aspects from distributed databases, MapReduce derivatives, and other relevant systems. Course topics include data partitioning, distributed query planning, and scalable transaction management.
Information Retrieval and Data Mining (foundational, 6 ECTS, sem 2)
Information Retrieval covers the essential theory and practice of automated document search, explaining the technology that drives, for example, Google. It is related to Data Mining, the theory and practice of automatically understanding the structure in data. This combined course covers a range of topics from practical issues such as how to index very large bodies of data space-efficiently, to how to detect the significance of words and other forms of meaning in structured and unstructured documents.
Information Visualisation (foundational, 6 ECTS, sem 2)
In this course students learn about the representation (abstraction) and presentation of data in terms of different visualisation techniques supporting the exploratory analysis for scientific discovery as well as the design of tools for the presentation of large datasets. The theory further covers specific elements of human perception and colour theory and we discuss different design principles and interaction techniques for human-in-the-loop data exploration, underlined by various case studies. The theory is applied and further deepened in a group assignment where interactive visualisation solutions are designed and implemented for different big and complex datasets.
Advanced Topics in Big Data (foundational, 6 ECTS, sem 2)
In this seminar, we review and discuss research papers in the domain of big data through which the student gains knowledge about the recent developments in the fields of big data and its underlying technologies with a focus on data management, retrieval and human-data interaction as well as the corresponding human-in-the-loop data management aspects. Students are assigned a research paper and learn how to critically analyse the assigned material, as well as how to formulate their evaluation by writing scientific reports and giving oral presentations.
 
Cloud Computing and Big Data Processing (deepening, 6 ECTS, sem 1)
Cloud Computing and Big Data Processing is an advanced two-part course that introduces the foundational concepts and techniques of these fields, and motivates and illustrates their use within related frameworks and tools. Topics for Cloud Computing include security, consistency, reactivity, and decentralization (blockchain). Big Data Processing topics include cluster computing, fault tolerance, and data locality, partitioning and streaming. Knowledge of JavaScript and Scala is a plus.
Statistical Foundations of Machine Learning  (deepening, 6 ECTS, sem 2)
Machine Learning is applicable to many real-world tasks, and mainly consists of learning correlations in data, or between inputs and outputs. This course explains all the fundamental aspects of the most common Machine Learning approaches, to allow the students to perfectly understand how to design well-behaving Machine Learning systems, accurately measure their performance, and use the result of the learning procedure as efficiently as possible. This course also explains how various algorithms work, such as least-squares regression, neural networks or decision trees.
Advanced Databases (deepening, 5 ECTS, sem 1)
This course covers advanced concepts from the database domain which facilitate the integration of databases in object-oriented and distributed software systems, such as active databases which replicate data and maintain its consistency. The course also discusses the management of non-relational non-relational data types, such as temporal, graph, and spatial data. The course covers the theoretical foundations as well as their application in innovative domains.
Database Systems Architecture (deepening, 5 ECTS, sem 1)
From searching on the web to booking a hotel: modern applications inherently need to store, process, and retrieve data. The goal in this course is to get a fundamental insight into the implementation aspects of systems designed to manage and process large amounts of data. Our objective in this respect is two-fold. (1) To gain the background required to design and implement future data management and processing systems and (2) to gain an understanding of how performance of practical data management systems can be tweaked.
Next Generation User Interfaces  (deepening, 6 ECTS, sem 1)
After attending the course on Next Generation User Interfaces, the student has an understanding of the interaction principles introduced by new devices such as smartphones, multi-touch tables or gesture-based interfaces as well as the theoretical background behind these interaction principles. The student is able to reflect on the qualities and shortcomings of different interaction styles, while placing the user at the core of the interface design process. The theory is applied in a group project where students design and develop their individual next generation user interface.
 
Research Training (deepening, 6 ECTS, sem 1+2)
This course is organised as an intensive internship within one of the research groups of the department of computer science. Students are asked to work autonomously on a specific part of an experiment or on an ongoing development project. They are followed up very closely and frequently receive feedback.
Master's Thesis Computer Science (deepening, 24 ECTS, sem 1+2)
Students develop, publish, and defend an original contribution to the field of Computer Science in general and to their chosen specialisation in particular. They can determine the subject freely in consensus with a promotor from the department. To this end, a list of recommended subjects is communicated.

The following elective can only be chosen with the approval of the examination commission. It is intended as a boosting course for students who did their bachelor at an institution where there was less emphasis on web technologies.

Web Technologies (boosting, 6 ECTS, sem 1)
In this course, we investigate the origins of hypermedia and the World Wide Web and discuss current and future developments on the Web. We have a detailed look at the architecture of the Internet and various protocols such as the Hypertext Transfer Protocol (HTTP) as well as HTML5, JavaScript, CSS3, Web 2.0, the Semantic Web, web search, and security and privacy. The theory is applied in various exercise sessions as well as in a rich internet application that is developed as part of the course.

Research in the picture

Professor Signer, who teaches the Information Visualisation course in the Data Management and Analytics specialisation, and his team have developed a new type of physical user interface for interacting with Big Data datasets. You can read more about the research on his website.

Our Multimedia specialisation explores techniques for signal processing and communication of multimedia content. The programme is designed to build thorough technological and scientific knowledge of various multimedia domains, such as digital television, telephony and videophony, computer animation, computer games, and the Internet. Students will gain experience with complex ICT architectures for the processing, distribution, and consumption of multimedia content.

120 ECTS

Multimedia is a specialisation in our 2-year MsC in Computer Science of 120 ECTS. Students of this specialisation need to succeed for the carefully designed core of 30 ECTS that is common to all four specialisations, the 20 ECTS of five mandatory courses within this specialisation, at least 10 ECTS of electives within the specialisation, an additional 30 ECTS of electives from this or any of the other specialisations, and for a research training of 6 ECTS and a master's thesis of 24 ECTS.

The following courses comprise a carefully designed core that is mandatory regardless of the chosen specialisation:

Software Architectures (foundational, 6 ECTS, sem 1)
This course covers the design and implementation of large-scale software systems that operate worldwide with thousands of concurrent users. We discuss architectural patterns and tactics for ensuring their qualities such as reactivity (react in a timely manner to inputs), resilience (react to and recover from failures), and elasticity (react to variable load conditions). We illustrate these patterns using frameworks for the programming language Scala, of which the relevant features are reviewed at the beginning of the course.
Theory of Computation (foundational, 3 ECTS, sem 2)
This course covers the basic concepts of the theory of computation and complexity theory. The addressed concepts of the theory of computation are: Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility and the recursion theorem. The following concepts of complexity theory are discussed: time complexity and the classes P and NP, NP-completeness, the Cook-Levin theorem, and other NP-complete problems.
Information Theory (foundational, 3 ECTS, sem 1)
The course aims to introduce the information theory based on the approaches of Shannon on the one hand and Kinchine on the other. Concepts of auto-information, entropy, conditional entropies, ambiguity, transinformation and redundancy are introduced and many practical examples are treated and computed. The channel capacity of a channel is estimated and applied to practical examples; e.g. DSL on twisted pair telephony cables and for wireless radio channels.
Declarative Programming (foundational, 6 ECTS, sem 2)
Declarative Programming involves specifying the input-output relation that a user requires from their program while, as far as possible, leaving the actual execution method to the compiler. In this hands-on course, advanced constraint logic programming is studied in depth, from both theoretical and practical perspectives. The Logic Programming language Prolog is covered in detail, from a historical perspective that prepares you for exposure to logic programs in industry, up to the latest developments in constraint logic programming and numerical constraint satisfaction.
Methods for Scientific Research (foundational, 3 ECTS, sem 1)
This course provides a basic introduction to scientific methods: how scientists ensure they do not reinvent the wheel, do not fool themselves and do not disseminate incorrect results. It is evaluated with a number of practical challenges to the students.
Scientific Integrity (broadening, 3 ECTS, sem 1)
In the movie Jurassic Park the character of Dr. Ian Malcolm utters “your scientists were so preoccupied with whether they could, they didn’t stop to think if they should.” That's one of the ethical aspects this course looks into; you will have to write a column about such issues. Other topics covered are academic fraud and sloppy science. In other words: you peek behind the scene of science and learn about the reasons to perform your own research as ethically as possible.
Open Information Systems (foundational, 6 ECTS, sem 1)
In Open Information Systems, we aim to enable computer-based agents to exchange and process data in a meaningful (semantic) manner. We discuss both semantic elicitation and semantic application. The former is concerned formally specifying a shared understanding of a Universe of Discourse into an ontology. The latter is concerned with querying, integrating, and using data from heterogeneous sources with these ontologies. We adopt the Semantic Web and its W3C specifications (such as RDF, OWL, and SPARQL) for illustrating various principles.

The following is the list of mandatory courses:

Image and Video Technology (foundational, 3 ECTS, 1 sem)
This course provides the theoretical background of digital image and video coding and illustrates the use in practical systems such as digital photography, television and cinema. Topics include coding theory, still image coding, video coding, and adaptation to channel characteristics. Applications include MPEG systems, DVD, digital video broadcast, media production and distribution platforms, and digital cinema.
Computer Vision (foundational, 4 ECTS, 1 sem)
This course aims for students to understand and apply fundamental mathematical and computational techniques in computer vision, and to implement basic computer vision applications.
Capita Selecta Multimedia (deepening, 3 ECTS, 2 sem)
This course is based on interactive sessions where students discuss with the teacher and/or an invited expert. The themes are selected based on the interests of the participating students. A non-exclusive list of potential themes encompasses: forensic image processing, high-dynamic range imaging, sociological aspects of new media, error-resilient coding, distributed source coding, the human visual system and perceptual metrics, digital video broadcasting and HDTV, 3D video, 3D graphics and multimedia security.
Image Processing (foundational, 5 ECTS, 2 sem)
The fundamental grounds in digital image processing are set by linear algebra, digital signal processing and statistics. The extracted information varies depending on the goals that are pursued or the application field (context) that is considered. This course is focused on processing of measured and discretized image data, without taking into account a priori contextual models of the scene.
Virtual Reality (foundational, 5 ECTS, 1 sem)
The course describes methods and tools for 3D view synthesis and animation in 3D game engines. It provides an overview of the 3D OpenGL rendering pipeline (vertex and fragment shaders, clipping, mipmapping, Z-buffering, Gouraud/Phong shading, physics engine, raytracing, radiosity, etc) and data acquisition/representation formats (meshes, Bézier curves, textures, octree partitioning, particle systems, etc). By the end of the course, the student will have implemented simple 3D viewers in OpenGL (Open Graphics Library) using C/C++ and GLSL (Graphics Library Shader Language) for special effects, 3D modeled content (e.g. Blender 3D, exported in OBJ format), ultra-realistic 3D rendering (raytracing and radiosity), as well as multi-camera captured content with depth sensing (Point Clouds and/or Depth Image Based Rendering) for Free Navigation Virtual Reality.

The following is the list of electives within this specialisation:

Physical Communication (broadening, 6 ECTS, 1 sem)
This course focuses on the practical aspects of the physical layer of the OSI communication model. Its aim is to give hands-on experience in setting up a wired or wireless communication system. To make the course accessible to students with various background, from novices to specialists, the course starts with a recap of the important telecommunications aspects required to practically build the physical layer of a communication system.
Computational Geometry (broadening, 5 ECTS, 1 sem)
This course studies some fundamental problems in computational geometry and several algorithmic concepts that can be used to solve them. Among the topics we will cover: Convex hulls, polygon triangulation, Delaunay triangulations, Voronoi Diagrams, arrangements, projective duality, geometric optimization, linear programming, range searching, point location and other geometric data structures.
Multimedia Seminar (deepening, 3 ECTS, 1 sem)
With this seminar the student comes into contact with scientific research in multimedia. The student is involved in one of the research groups where he/she can collaborate on a current topic.
Voice Image Coding Media and Systems (broadening, 5 ECTS, 1 sem)
This course provides students an insight into the different types of channel coding schemes that are used to detect and correct transmission errors. Topics include an introduction to telephony including DSL, an introduction to switching boards including queueing theory, channel coding, and navigation using GPS, Glonass and Galileo.
Biomedical Signals and Images (broadening, 3 ECTS, 1 sem)
The course starts with an introduction to one-dimensional digital signal processing: linear systems (convolution), Fourier representation, sampling, signal transformations (extensible to more dimensions), filters (FIR), sampling conversion, and reconstruction of the analog signal from its samples. The main part of the course deals with medical imaging: image enhancement, image visualization (including 3D), segmentation and labeling of images (i.e., delineation and recognition of anatomical entities in medical images) and image fusion.
 

The following courses help you prepare you own research contribution:

Research Training (deepening, 6 ECTS, sem 1+2)
This course is organised as an intensive internship within one of the research groups of the department of computer science. Students are asked to work autonomously on a specific part of an experiment or on an ongoing development project. They are followed up very closely and frequently receive feedback.
Master's Thesis Computer Science (deepening, 24 ECTS, sem 1+2)
Students develop, publish, and defend an original contribution to the field of Computer Science in general and to their chosen specialisation in particular. They can determine the subject freely in consensus with a promotor from the department. To this end, a list of recommended subjects is communicated.

Electives from this specialisation or any of the other three specialisations.

Our Software Languages and Software Engineering specialisation covers the programming languages, development tools, and abstraction & composition mechanisms that are needed for building and maintaining large-scale applications. We offer courses ranging from theoretical foundations (e.g., type theory in Haskell, formal proofs in Agda), over programming language paradigms (e.g, multicore and distributed programming in Clojure and Scala) and implementation techniques (e.g., compilers and virtual machines), to advanced software engineering topics (e.g., quality assurance and security, meta programming).

Programming languages, tools, or frameworks ... at a conceptual, technical, or theoretical level!

Software Languages and Software Engineering

The Software Languages and Software Engineering specialisation is all about studying the Art, Science and Engineering of software construction. Obviously, the students entering our master already have good programming skills. The SOFT specialisation both broadens and deepens this competence to the level of academic mastery. Our ambition is to educate top-notch specialists in the domain of “software construction technologies of the future”. After all, graduating students still have a career of more than 40 years ahead of them! The specialisation therefore heavily focuses on the scientific aspects of programming languages and software engineering, rather than the mainstream software construction technologies that are trendy today but might no longer exist tomorrow. 

As a student in the SOFT specialisation, you will study, use and design state-of-the-art programming languages, powerful software development tools and highly innovative software frameworks. Depending on your personal interests you will study them on a conceptual level, on a technical level or —for the diehards— on a theoretical and/or implementation level. Whatever sparks your academic interest, our department is well-equipped with state-of-the-art hardware to explore it in depth (a distributed computing cluster, some many-core machines, smartphones, microcontrollers, Arduinos, Raspberry Pis, GPUs, …).

The SOFT specialisation comprises three mandatory electives and a long list of electives that allow students to put their own personal emphasis on their studies. Students interested in programming languages can deepen their fundamental scientific knowledge of the semantics of programming languages or implementation techniques for programming languages. Students interested in the art of programming can become more expert in various advanced programming techniques such as distributed programming and multicore programming. Students interested in engineering large systems can take courses on analysing software construction data and on software quality. Finally, students with a broad interest can pick and choose from any of these strands of courses. 

120 ECTS

Software Languages and Software Engineering is a specialisation in our 2-year MsC in Computer Science of 120 ECTS. Students of this specialisation need to succeed for the carefully designed core of 30 ECTS that is common to all four specialisations, the 18 ECTS of three mandatory courses within this specialisation, at least 12 ECTS of electives within the specialisation, an additional 30 ECTS of electives from this or any of the other specialisation, and for a research training of 6 ECTS and a master's thesis of 24 ECTS.

The following courses comprise a carefully designed core that is mandatory regardless of the chosen specialisation:

Software Architectures (foundational, 6 ECTS, sem 1)
This course covers the design and implementation of large-scale software systems that operate worldwide with thousands of concurrent users. We discuss architectural patterns and tactics for ensuring their qualities such as reactivity (react in a timely manner to inputs), resilience (react to and recover from failures), and elasticity (react to variable load conditions). We illustrate these patterns using frameworks for the programming language Scala, of which the relevant features are reviewed at the beginning of the course.
Theory of Computation (foundational, 3 ECTS, sem 2)
This course covers the basic concepts of the theory of computation and complexity theory. The addressed concepts of the theory of computation are: Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility and the recursion theorem. The following concepts of complexity theory are discussed: time complexity and the classes P and NP, NP-completeness, the Cook-Levin theorem, and other NP-complete problems.
Information Theory (foundational, 3 ECTS, sem 1)
The course aims to introduce the information theory based on the approaches of Shannon on the one hand and Kinchine on the other. Concepts of auto-information, entropy, conditional entropies, ambiguity, transinformation and redundancy are introduced and many practical examples are treated and computed. The channel capacity of a channel is estimated and applied to practical examples; e.g. DSL on twisted pair telephony cables and for wireless radio channels.
Declarative Programming (foundational, 6 ECTS, sem 2)
Declarative Programming involves specifying the input-output relation that a user requires from their program while, as far as possible, leaving the actual execution method to the compiler. In this hands-on course, advanced constraint logic programming is studied in depth, from both theoretical and practical perspectives. The Logic Programming language Prolog is covered in detail, from a historical perspective that prepares you for exposure to logic programs in industry, up to the latest developments in constraint logic programming and numerical constraint satisfaction.
Methods for Scientific Research (foundational, 3 ECTS, sem 1)
This course provides a basic introduction to scientific methods: how scientists ensure they do not reinvent the wheel, do not fool themselves and do not disseminate incorrect results. It is evaluated with a number of practical challenges to the students.
Scientific Integrity (broadening, 3 ECTS, sem 1)
In the movie Jurassic Park the character of Dr. Ian Malcolm utters “your scientists were so preoccupied with whether they could, they didn’t stop to think if they should.” That's one of the ethical aspects this course looks into; you will have to write a column about such issues. Other topics covered are academic fraud and sloppy science. In other words: you peek behind the scene of science and learn about the reasons to perform your own research as ethically as possible.
Open Information Systems (foundational, 6 ECTS, sem 1)
In Open Information Systems, we aim to enable computer-based agents to exchange and process data in a meaningful (semantic) manner. We discuss both semantic elicitation and semantic application. The former is concerned formally specifying a shared understanding of a Universe of Discourse into an ontology. The latter is concerned with querying, integrating, and using data from heterogeneous sources with these ontologies. We adopt the Semantic Web and its W3C specifications (such as RDF, OWL, and SPARQL) for illustrating various principles.

The following is the list of mandatory courses within the Software Languages and Software Engineering specialisation:

Functional Programming (foundational, 6 ECTS, sem 1)
This course exposes students to advanced programming techniques and properties of statically typed functional languages such as Haskell. It requires prior knowledge in basic functional programming, as taught in our bachelor curriculum or in the boosting elective Higher Order Programming which can be taken in parallel to this course.
Meta Programming and Reflection (foundational, 6 ECTS, sem 1)
This course introduces the different principles and techniques of meta-programming (i.e. programs that manipulate programs). Students are exposed to a number of compile-time and run-time techniques. In particular, the course discusses the programming model and meta facilities of two seminal languages in the domain, Smalltalk and Lisp, and it discusses mainstream forms of meta-programming such as aspect-oriented development.
Cloud Computing and Big Data Processing (deepening, 6 ECTS, sem 1)
Cloud Computing and Big Data Processing is an advanced two-part course that introduces the foundational concepts and techniques of these fields, and motivates and illustrates their use within related frameworks and tools. Topics for Cloud Computing include security, consistency, reactivity, and decentralization (blockchain). Big Data Processing topics include cluster computing, fault tolerance, and data locality, partitioning and streaming. Knowledge of JavaScript and Scala is a plus.

The following is the list of electives within the Software Languages and Software Engineering specialisation:

Multicore Programming (broadening, 6 ECTS, sem 2)
Whether you are using a laptop, a smartphone, or a server in the cloud, your machine likely contains a multicore processor. If you want your program to efficiently use this hardware, you’ll have to learn how to write parallel programs. In this course, we study different programming models and techniques for parallelism and concurrency, including techniques based on message passing such as actors, shared memory using transactions, and programming for massive parallelism on a GPU.
Software Quality Analysis (deepening, 6 ECTS, sem 2)
This course is about algorithms that represent programs as data in order to reason about their quality. Topics include static analysis for detecting bugs, symbolic execution for generating tests, abstract interpretation for predicting information leaks, and program transformation for modernising programs. The lectures cover the formal foundations of these techniques, while the exercise sessions study skeleton implementations in Scala.
Distributed and Mobile Programming Paradigms (broadening, 6 ECTS, sem 2)
With the advent of wireless technology and mobile hardware, distribution and mobility of hardware and software are getting ever more important. This course studies different programming models and techniques for distributed applications that run on mobile hardware (including message passing, tuple spaces, etc). The course also teaches a number of fundamental results in distributed algorithms such as the FLT theorem, CAP theorem and their implications. Students apply the acquired knowledge by building a mobile system on Android.
Next Generation User Interfaces (broadening, 6 ECTS, sem 2)
After attending the course on Next Generation User Interfaces, the student has an understanding of the interaction principles introduced by new devices such as smartphones, multi-touch tables or gesture-based interfaces as well as the theoretical background behind these interaction principles. The student is able to reflect on the qualities and shortcomings of different interaction styles, while placing the user at the core of the interface design process. The theory is applied in a group project where students design and develop their individual next generation user interface.
Interpretation of Computer Programs 2 (broadening, 6 ECTS, sem 2)
This course focuses on the semantics of advanced programming languages. Interpreters are used to study advanced control mechanisms such as generators and continuations. Macro’s are added to a dialect of Scheme to study advanced data organisation techniques such as objects, classes, and actors. The boosting elective Higher Order Programming is required in case your bachelor did not include an introduction to functional programming.
Compilers (broadening, 6 ECTS, sem 2)
This is a traditional course in compilers. Knowledge of any modern programming language is assumed, as well as a background in elementary formal language theory (i.e. automata, regular expressions, context free grammars, etc.).
Programming Language Engineering (deepening, 6 ECTS, sem 2)
This course bridges the gap between conceptual approaches to programming language engineering and their practical applications in terms of efficient language processors. This course studies a family of virtual machines that start from a straightforward mapping of a reference implementation in Scheme onto a C implementation and progressively addresses concerns such as automated memory management, lexical addressing, partial evaluation, runtime pools and optimization in general.
Fundamentals of Programming Languages (deepening, 6 ECTS, sem 1)
This course is about theoretical aspects of advanced programming languages (type theory, Hoare logic, dependent types, …) and proving their properties in the proof assistant Coq. The course is officially taught at the University of Ghent by a professor who was formerly working at VUB. We have booked one of VUB’s tele classing rooms such that VUB students do not have to travel to Ghent. The course is taught in Dutch with English course notes and exercises.
Capita Selecta of Software Engineering (broadening, 6 ECTS, sem 1+2)
This course is about creating truly intelligent development tools by applying advanced machine learning and data mining algorithms to software engineering data. Topics include predicting the location of defects in source code using classifiers such as Support Vector Machines, prioritizing test cases using Genetic Algorithms, and uncovering repetition in commit histories using Pattern Mining.
Capita Selecta of Programming Languages (deepening, 6 ECTS, sem 1+2)
In this course, students first learn to work with Agda, a dependently-typed functional programming language that can be used to rigorously prove properties of programs and even general mathematical theorems. Next, they apply this knowledge to study the basics of verified and secure compilation. The course is taught in a hands-on way and is evaluated through a course project.
 

The following courses help you prepare you own research contribution:

Research Training (deepening, 6 ECTS, sem 1+2)
This course is organised as an intensive internship within one of the research groups of the department of computer science. Students are asked to work autonomously on a specific part of an experiment or on an ongoing development project. They are followed up very closely and frequently receive feedback.
Master's Thesis Computer Science (deepening, 24 ECTS, sem 1+2)
Students develop, publish, and defend an original contribution to the field of Computer Science in general and to their chosen specialisation in particular. They can determine the subject freely in consensus with a promotor from the department. To this end, a list of recommended subjects is communicated.

The following elective can only be chosen with the approval of the examination commission. It is intended as a boosting course for students who did their bachelor at an institution where there was less emphasis on functional programming.

Higher Order Programming (boosting, 6ECTS, sem 1)
This is a boosting course designed for students who already know how to program well in a mainstream language with only limited functional characteristics (e.g., Java, C#, Python,...), but who have not yet been exposed to truly functional languages (e.g., Scheme, Lisp, ML, Haskell, ...). It can be combined in the same semester with Functional Programming.

Research in the picture

Professor De Meuter, who teaches in the Software Languages and Software Engineering specilisation, and his team have developed a visual programming language that makes conducting citizen science projects a piece of cake. With a minimal amount of code, anyone can build a mobile application that submits sensor data to a central processing server. You can read more about the research at https://flamenco.vlaanderen

 

Admission criteria

Application prerequisite for the programme Master of Computer Science is an academic bachelor’s degree in Computer Science or equivalent. Equivalency and admission to the programme will be based on a review of the student’s academic record and will be evaluated case by case. Entering in the second semester (February) is possible under certain conditions.

Application

Admission is based upon acceptance of the application (proof of meeting the academic and language requirements, satisfactory background...). All necessary information regarding the admission requirements, deadlines and application forms can be found on the application page

For more details on admission requirements and application

Click here