The MSC program is an intensive one-year program designed for those who desire to deepen their comprehension with the practical aspects of Computer Science.
The program is heavily geared towards developing students’ professional skills needed for employment, while being able to adapt to rapidly changing technology, to work effectively, professionally and ethically in computing-related professions, as demonstrated by their communications, teamwork and leadership skills.
Applicants could be graduates from other degrees with a strong mathematical core, or those continuing their academic pursuit after achieving a BSc in computer science.
This course introduces computer programming using the Java programming language with object-oriented programming principles. Students will learn all complex aspects of the language: data types, memory management and garbage collection, generics, annotations, standard data structures, IO, JDBS/JPA and multithreading. Special attention will be paid to the process of applications development, debugging and testing. Also, emphasis is placed on the development of the web server application.
The class offers an overview of the emergence of computing and the technology that enables it. The course begins with the basics of the hardware architecture starting from logic gates and instructions, covers compilers and operating systems, surveys networks, and concludes with a description of large computing systems at the scale of cloud server farms.
The course on databases is designed for students who know the basics of programming, and it requires students to be familiar with the basic principles of the workings of a computer, in particular how memory and disk subsystems work. Students will learn the basics of relational algebra and SQL. They will also familiarize themselves with the configuration of a database management system (DBMS), learn to design a database schematic to solve applied problems, study the principles of query optimization, and get to know the mechanisms of database fault tolerance and concurrent database access.
Introduction to building applications for Android platform and iOS. Examines key concepts of mobile programming: toolchain, application life-cycle, views, controls, intents, designing mobile UIs, networking, threading, and more.
Information Technology Management
Information Management is a multi-disciplinary course that focuses on the integration of engineering, computer science, information technology, and business management for two purposes: the technology of management, which includes the design of information technology to solve business problems, and the management of technology, which includes the management of new-product development and entrepreneurship.
Cryptography and Secure Programming
The course will introduce students to the basic concepts of modern cryptography, and will then go over methods of synthesis and analysis of cryptographic protocols, and finally explore the numerous protocols required for various applications. These applications include: the protocols for the authentication of key distribution based on private-key cryptography, protocols for key exchange based on public-key cryptography, protocols for authenticated key establishment based on password information, and more.
Parallel and Distributed Computing + Cloud
The purpose of this course is to acquaint students with the principles of organization, technologies, and the place and role of distributed and parallel computing in the field of information technology. Students will work with practical training elements to consolidate the information received, and to prepare for further studies in modern means of network computing and their effective application in research. There are many methods because modern analysis of big data is very deep and diverse.
Python for Machine Learning
Students will become familiar with the programming language Python, which is an important tool. The course will pay special attention to the basis of the language, object-oriented programming (naturally extending from C ++), treatment of errors, code design and testing, string manipulation, memory model, functional programming, review of libraries, and concurrent computing in Python. The last topic will serve as an excellent way to improve the knowledge of the module on concurrent and distributed computing, which the students would have just passed before this course.
Data Structures and Algorithms
In this course, students first review the basics of algorithms and data structures, and then study and model complex modern algorithms, including algorithms on graphs (the construction of a spanning tree, topological sorting, shortest paths) and their associated data structures, such as a system of disjoint-set data structures, binomial and Fibonacci heaps. Students will also learn more about another set of problems associated with string and index construction text such as Rabin-Karp algorithm, Knuth-Morris-Pratt (KMP) algorithm, and Ukkonen's algorithm to build suffix trees and suffix arrays.
Statistical Data Analysis
By this point, students would have accumulated a vast knowledge of probabilistic and statistical methods and tools with which a variety of data can be analyzed. This course will cover a substantial part of these techniques and will consist of three modules.
Foundations of Cybersecurity
The course introduces students to different dimensions of cybersecurity field. Subjects range from Application, Mobile and Network Security, Vulnerability Analysis, Penetration Testing, Intrusion Detection and Incident Handling. Additionally, students learn from real-world examples of security incidents, what leads to them and how they can be avoided.
Foundations of Machine Learning
The course introduces students to the foundational problems of machine learning and covers the algorithms for solving problems of classification and clustering. Classification algorithms covered in this course include nearest neighbor algorithm, support vector machine (SVM) algorithm, Bayesian methods, decision trees, lists of rules. Clustering problems are solved by considering algorithms as a fixed number of clusters (K-Means, Expectation-Maximization (EM)), as well as methods for automatically determining the number of clusters (agglomerative and divisive clustering).
Practical Machine Learning
The module is devoted to studying the problems of regression analysis, building the composition of algorithms, learning about model selection criteria and feature selection methods.
Advanced Machine Learning
In this module, students learn classical and modern architectures in neural networks, understand and training a wide variety of neural architectures suited for different tasks and to implement these ideas in standard neural network libraries.
Ph.D., Director of Software Development Europe, Rational Retention
Konstantin Mertsalov is European Director of Development at Rational Enterprise, a globally leading software development company specializing in enterprise information management.
Originally from Russia, he moved to New York in 1998 to study Computer Science and Applied Mathematics and continued his academic career with a Rensselaer Polytechnic Institute Ph.D. on large dynamic social networks. He's an expert on machine learning, information diffusion in social network, semantic web search, unstructured data, big data, and data analytics in general. He developed U Rank, a search engine that allows people to organize, edit and annotate search results as well as share information. Konstantin aims to lead the Harbour.Space Data Science program with unbridled enthusiasm about the relatively new field, and he’s determined to use his industry knowledge to share, teach and create for the future with his students.
About the School
Harbour.Space is an innovative private university that combines technology and design, taught by industry leaders from around the world. The university is located in Barcelona, Spain.