Harbour.Space's Computer Science programme offers students with basic analytic skills and a strong aptitude for mathematics, programming, and logical reasoning the best in the world opportunity for in-depth study of Computer science concepts and theories in highly practical and cutting edge educational environment. It keeps abreast of, and exposes students to, state-of-the-art, as well as state-of-the-practice, computer applications and technologies. Throughout the study students will continuously acquire an understanding of real-world computing needs, as demonstrated by their ability to address technical issues involving computing problems encountered in industry, government and graduate programmes.

The Master's programme in Computer Science offers students with a Bachelor's degree the opportunity to improve their training with advanced study in Computer Science.
The programme is based on a fixed set of courses. Many of the required Master’s courses require a level of competency in foundational areas similar to that typically found in Bachelor’s in CS. So we mix Bachelor’s and Master’s courses to be sure that our students get necessary background in maths and programming. The programme consists entirely of coursework; there is generally no research component. Students will complete the educational programme in four semesters. For those students who are interested in Research in second year we could propose Master's Thesis (optionally).

First Year

Students begin the programme already having foundational knowledge
of programming and mathematics including data structures and
algorithms, statistics and machine learning.

During the first year their knowledge of mathematics,
programming and data analysis will be significantly extended.
The program also offers opportunity to learn the key soft skills
for the professional world including technical project
management, writing and presenting.

Finally during the first
year students are expected to attend many of the talks and
workshops offered by the university and being work on the
capstone project.

Mathematical Foundations of Computer Science, Algorithms

Combinatorics and Graph Theory

TThis course provides a basic review of combinatorics and graph theory. After that, the course delves into deeper facts and modern methods of discrete analysis underlying the several mathematical disciplines necessary for data analysis.

5 credits

Programming and Tools for Computer Scientists

Object-Oriented Programming (C++)

This course is particularly important for those who are new to or looking to improve their understanding of C ++. The course will help students familiarize themselves with algorithms and data structures. However, there will be also tools that may be new to those who have studied C++ at the bachelor’s level. At the master’s level, the student is ready - at least mentally - to do "industrial programming." In addition, the course will continue in the second semester, and it will eventually give the student an idea of the many subtleties of this programming language.

5 credits

Mathematical Foundations of Computer Science, Algorithms

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.

5 credits

Programming and Tools for Computer Scientists

Functional Programming

The purpose of this course is to introduce the theory and practice of functional programming (FP). The characteristic feature of FP is the emphasis on computation as evaluation. The traditional distinction between program and data characteristic of imperative programming (IP) is replaced by an emphasis on classifying expressions by types that specify their applicative behavior. Types include familiar (fixed and arbitrary precision) numeric types, tuples and records (structs), classified values (objects), inductive types such as trees, functions with specified inputs and outputs, and commands such as input and output. Well-typed expressions are evaluated to produce values, in a manner that is guaranteed to be type-safe. Because functional programs do not cause side-effects we can take advantage of simple mathematical principles in reasoning about applicative behavior and analyzing the runtime properties of programs.

5 credits

Mathematical Foundations of Computer Science, Algorithms

Theory of Probability and Statistics

In this course, students will move from the foundations of probability to more advanced concepts, facts, and tools needed to analyze data. In particular, the course examines the main types of distributions, limit theorems and laws of large numbers, the methods of parametric statistics (point and interval estimation of parameters, hypothesis testing), regression, and nonparametric statistics.

5 credits

Programming and Tools for Computer Scientists

Practical Unix

A practical introduction to using the Unix operating system with a focus on Linux command line skills. Topics include: grep and regular expressions, ZSH, Vim and Emacs, basic and advanced GDB features, permissions, working with the file system, revision control, Unix utilities, environment customization, and using Python for shell scripts.

elective

5 credits

Communication & Interdisciplinary

Introduction to Interaction Design

The course is offered in cooperation with Interaction Design program of Harbour.Space University. The students in the data science programme get an opportunity to learn about challenges in creating usable, inyuitive, efficient and practical design for software applications and websites. The course describes challenges in the field of interaction design and discusses solutions. The course project will help students to appreciate the value that design can bring to a product. The course is cross-listed with Interaction Design curriculum, giving students of both programmes an opportunity to collaborate and work on a project that requires significant input from both fields.

elective

5 credits

Programming and Tools for Computer Scientists

Advanced Databases

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 working 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 schema to solve applied problems, study the principles of query optimization, and get to know the mechanisms of database fault tolerance and concurrent database access.

elective

5 credits

Applications & Tools

Master's Machine Learning

This course on machine learning consists of two modules. It introduces students to some of the elements of modern data analysis. In the first module , students get an introduction to the foundational problems of machine learning and get more fully acquainted with 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). The second module of the course is devoted to studying the problems of regression analysis, building the composition of algorithms, learning about model selection criteria and feature selection methods.

5 credits

Programming and Tools for Computer Scientists

Python

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.

This course introduces computer programming using the Java programming language with object-oriented programming principles. You 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, the emphasis is placed on the development of the web server application.

5 credits

Programming and Tools for Computer Scientists

Operating Systems

The objective of the Operating Systems course is to familiarise students with the basic organising principles and technologies used in modern computing platforms (the operating systems together with the computer hardware), as well as their place and role in the IT field. The course will offer ample practical exercises to strengthen the understanding of core topics and to prepare students to advance their knowledge of the modern means of parallel and distributed processes for their effective application in scientific research and computing.

5 credits

Programming and Tools for Computer Scientists

R

elective

5 credits

Applications & Tools

Robotics

Robotics foundations in modeling, design, planning, and control. Class covers relevant results from geometry, kinematics, statics, dynamics, motion planning, and control, providing the basic methodologies and tools in robotics research and applications. Concepts and models are illustrated through physical robot platforms, interactive robot simulations, and video segments relevant to historical research developments or to emerging application areas in the field.

elective

5 credits

Communication & Interdisciplinary

Leadership and Group Dynamics

The course introduces students to practical aspects of working within a group of peers. We discuss ways of splitting the tasks, facilitating productive meetings in a situation of professional disagreement and different styles and personalities. The course is heavily centered around discussions and exploration of practical examples. Students are split into groups and given an opportunity to observe the described phenomena.

elective

4 credits

Communication & Interdisciplinary

Technical Writing and Presenting

The course covers methods for efficient, structured and organised presentation of technical data in written and oral form. It introduces common structures and formats for technical documents ranging from workplace email communication and presentations to software requirements, API documentation and conference presentations. Students are taught to recognise audience and to present information that meets their needs at appropriate technical level. Students will be introduced to professional writing and presentation instruments and will gain introductory experience using such tools through extensive exercises. Additionally course focuses on the creation of visual materials including diagrams and charts.

elective

4 credits

Mathematical Foundations of Computer Science, Algorithms

Сomplexity Theory

The course will introduce students to the methods of assessing how difficult are certain computational problems are to solve, as well as the limits of mathematical algorithms and computers. The issues and challenges discussed in this course include computational models, complexity assessment, polynomial solvable problems, polynomial algorithms, theorem hierarchy and its use for evidence of solvability, polynomial reductions, reducible NP, proof of NP completeness, NP-complete problems, approximate solution of optimization problems, problems in the polynomial hierarchy and PSPACE, probabilistic polynomial algorithms, PSPACE completeness, circuit complexity, first-order complexity, interactive proofs, interactive protocols, one-way functions and their use in cryptography.

elective

5 credits

Communication & Interdisciplinary

Technical Project Management

The course covers methods for efficient, structured and organised presentation of technical data in written and oral form. It introduces common structures and formats for technical documents ranging from workplace email communication and presentations to software requirements, API documentation and conference presentations. Students are taught to recognise audience and to present information that meets their needs at appropriate technical level. Students will be introduced to professional writing and presentation instruments and will gain introductory experience using such tools through extensive exercises. Additionally course focuses on the creation of visual materials including diagrams and charts.

elective

4 credits

Applications & Tools

Bioinformatics

The course offers training that builds a solid foundation in chemistry, biology, computer science, mathematics and statistics. This training will enable students to communicate fluently with experts across these disciplines, and to have the skills necessary to apply computing tools to address contemporary problems in biology and medicine. The training will enhance the professional opportunities for undergraduates to pursue careers in pure or applied research in academia, government, pharmaceutical, medical, or biotechnology sectors.

elective

5 credits

Applications & Tools

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.

elective

5 credits

Capstone Project

Capstone Project-1

In their first year, Master programme students will work on identifying the approach for implementation of the project. This will include creation of a development plan and implementation of a prototype. At the end of the year students will submit an outline document detailing the progress, the results of the literature research and description of a prototype. Students will also rehearse a presentation for their mentor to practice for the end of programme presentation that will take place at the end of the final year.

2 credits

Seminars & Workshops

Seminars & Workshops-1

The university will offer regular open lectures by professors, experts and key figured by technology field. Students in data science program are required to attend many of the lectures and submit a write up describing what they learned during the talk. During the first year, students will be required to describe the problem statement, its significance and outline the presented approach of the solution.

1 credits

Second Year

During the second year of the programme students will primarily
focus on learning key applications of the computer science as well
as advanced methods in programming. A significant part of the
year will be allocated to the completion of the capstone project.

Programming, Operating Systems

Parallel and Disrtibuted Computing

The purpose of the ‘Parallel and Distributed Computing’ discipline 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.

This course focuses on techniques for software design in the development of large and complex software systems. Topics will include software architecture, modeling (including UML), object-oriented design patterns, and processes for carrying out analysis and design.

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 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.

elective

5 credits

Applications & Tools

Computer Vision

An introduction to the concepts and applications in computer vision. Topics include: cameras and projection models, low-level image processing methods such as filtering and edge detection; mid-level vision topics such as segmentation and clustering; shape reconstruction from stereo, as well as high-level vision tasks such as object recognition, scene recognition, face detection and human motion categorization.

This is an introductory course on computational geometry and its applications. The main topics covered in the course include the following: Convex Hulls, Object Intersection, Polygon triangulation, Range Searching, Planar Point Location, Proximity and Voronoi Diagram, Delaunay Triangulation, Arrangements, Sampling and Epsilon Nets, Paradoxical behavior of Higher Dimensions, Metric Embeddings.

Study of the principles and practices of software engineering. Topics include software quality concepts, process models, software requirements analysis, design methodologies, software testing and software maintenance. Hands-on experience building a software system using the waterfall life cycle model. Students work in teams to develop all life cycle deliverables: requirements document, specification and design documents, system code, test plan, and user manuals.

This is an intensive course, which will outline a set of algorithms and approaches to a variety of complex topics which in turn have a large number of applications in modern computer science. These topics include set cover problem, vertex cover, shortest path problem, minimum spanning tree, matching, assignment problems, job shop scheduling problems, the problem of packing (bin packing, rucksack problem), flow problems (highest value flow, lowest value flow, multiproduct flows), transportation theory (Hitchcock-Koopmans problem), traveling salesman problem.

elective

5 credits

Programming, Operating Systems

Virtualization and Java VM

The current wave of virtualization technology from VMware, Xen, and Microsoft have revived interest in virtualization and virtual machine monitors. This course will cover the design and implementation of virtual machine monitors as well other recent trends in virtualization. The first half of the course will cover traditional virtualization techniques such as trap-and-emulate, binary translation, shadow page tables and device emulation. New hardware features introduced by Intel and AMD to assist virtualization will also be covered. The second half of the course will survey the classic papers and other recent developments in virtualization.

This course will cover the following important topics: general nonlinear optimization and its complexity, lower complexity bounds of smooth functions, fast gradient methods, lower complexity bounds of non-smooth functions, subgradient methods, polynomial algorithms, structural optimization, interior point polynomial methods, the most important applications of methods interior point, and many others.

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.

elective

4 credits

Applications & Tools

Big Data Analysis

This course will describe the specifics of working with large data. Students will see that many methods they have learned over the previous semesters do not work without additional tools. Some of these instruments will be discussed in greater detail in special courses like MapReduce, Distributed Databases etc.

The many issues examined in this course, which is important both for theory and practice, include: Hartley function, topics on sorting, topics on communication protocols, application of the rectangle method, Shannon entropy, the logic of knowledge, conditional Shannon entropy and the amount of information, coding with a small average code length, information inequality, Shannon limit, text encryption, use of Shannon entropy in statistics, forecasting, Kolmogorov complexity, conditional complexity, PAC learning, Vapnik-Chervonenkis (VC) dimension.

The course introduces popular data visualization packages. We discuss methods and approaches to ad-hoc data visualizations as well as factors that make visualization clear, informative and attractive.

elective

5 credits

Applications & Tools

Algorithms in Bioinformatics

For the analysis of character sequences that occur in a variety of practical problems, it is useful to apply the concept of bioinformatics, which essentially deals with the analysis of protein sequences in DNA. The various topics covered in this course include: introduction to the analysis of character sequences, dynamic programming in graphs, dynamic programming for hypergraphs, pairwise alignment of sequences, other methods of comparison sequences in general, search for local similarities, multiple sequence alignment, search for multiple local similarities, examples of multiple sequence comparisons, probabilistic model families of sequences, examples of the use of cell mixture model (CMM).

Students will complete the project in their final year. By the end of year two, they will finish the development of software, testing, deployment, data acquisition and analysis, preparation of their project report and documentation and the final presentation. The project will be presented to peers, mentors, the programme director, academic and industrial partners as well as venture capital organisations.

3 credits

Seminars & Workshops

Seminars & Workshops-2

The university will offer regular open lectures by professors, experts and key figured by technology field. Students in data science program are required to attend many of the lectures and submit a write up describing what they learned during the talk. During the first year, students will be required to describe the problem statement, its significance and outline the presented approach of the solution.