Master of Science in Applied Sciences and Engineering: Computer Science
The Master in Computer Science is a two-year (120 ECTS) advanced study in computer science organised by the Vrije Universiteit Brussel. The programme is designed for students with a solid, fundamental academic background in computer science (i.e., 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 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 own interests.
Our courses promote an active style of learning. In addition to regular lectures, a broad range of instruction techniques are employed, such as group and individual projects, seminars, workshops, invited talks by experts in the field, and research trainings.
The courses are strongly embedded in the ongoing research activities of research groups that participate in various international networks and projects, and have experience in developing research trajectories with societal and economic impact – often in collaboration with industrial partners.
The following specialisations are offered:
- Artificial Intelligence (AI)
- Data Management and Analytics (DAMA)
- Multimedia (MM)
- Software Languages and Software Engineering (SOFT)
30 ECTS shared between the 4 specialisations
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 1)
- 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 1)
- 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.
These courses are taught in a truly international context. About half of the students in our master’s programme come from Belgium, whereas 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.
30 ECTS dedicated to research
Our courses and specialisations are strongly embedded in the ongoing activities of research groups each specialised in a particular domain of computer science. The groups publish in international journals and at international conferences, and participate in various 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 receive maximal opportunities to learn and develop scientific skills, and to participate in worldclass 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.
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.
At least 30 ECTS within a chosen specialisation
In order to graduate within a specialisation of your choosing, you need to succeed for 30 ECTS of courses specific to that specialisation. Every specialisation maintains a dedicated list of mandatory courses and electives to choose from. Typically, students complete the mandatory courses of the common core and the mandatory courses of one specialisation in the first year.
Remaining ECTS from any specialisation
The remaining ECTS need to be chosen from the electives within the same or within another specialisation. This freedom still allows one to change specialisation after the first year.
Artificial Intelligence (AI)
The AI 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.
Read more about the AI specialisation.
Data Management and Analytics (DAMA)
In the interdisciplinary context of Data Science and Big Data, the DAMA specialisation 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.
Read more about the DAMA specialisation.
The MM 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.
Read more about the MM specialisation.
Software Languages and Software Engineering (SOFT)
The SOFT 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).
Read more about the SOFT specialisation.