Computer Science

programme curriculum Book this course

  • OVERVIEW

    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.

      elective
      5 credits
    • Programming and Tools for Computer Scientists
      Networks

      The course introduces students to the principles and practice of computer networking. Structure and components of computer networks, packet switching, layered architectures. Applications: web/http, voice-over-IP, p2p file sharing and socket programming. Reliable transport: TCP/IP, reliable transfer, flow control, and congestion control. The network layer: names and addresses, routing. Local area networks: ethernet and switches. Wireless networks and network security.

      elective
      5 credits
    • Programming and Tools for Computer Scientists
      Java Programming

      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.

      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Automata Theory, Languages, and Computation

      The course introduces the notion of regular expressions, grammars, finite automata, Turing machines, and NP-completeness

      5 credits
    • Programming, Operating Systems
      Software Design

      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.

      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Foundations of Cryptography

      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.

      elective
      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Computational Geometry

      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.

      elective
      5 credits
    • Programming, Operating Systems
      Compilers

      Principles and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects.

      elective
      5 credits
    • Programming, Operating Systems
      Software Engineering

      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.

      elective
      5 credits
    • Applications & Tools
      Neural Networks and Deep Learning
      elective
      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Discrete Optimization

      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.

      elective
      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Nonlinear Optimization

      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.

      elective
      5 credits
    • Applications & Tools
      Computer Graphics

      Reyes and advanced rasterization, including motion blur and depth of field; ray tracing and physically based rendering; Monte Carlo algorithms for rendering, including direct illumination and global illumination; path tracing and photon mapping; surface reflection and light source models; volume rendering and subsurface scattering; SIMD and multi-core parallelism for rendering. Written assignments and programming projects.

      elective
      5 credits
    • Communication & Interdisciplinary
      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.

      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.

      elective
      5 credits
    • Mathematical Foundations for Computer Science, Algorithms, Theoretical Computer Science
      Information Theory

      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.

      elective
      5 credits
    • Applications & Tools
      Mobile Application Development

      Introduction to building applications for Android platform and iOS. Examines key concepts of mobile programming: tool chain, application life-cycle, views, controls, intents, designing mobile UIs, networking, threading, and more.

      elective
      5 credits
    • Programming, Operating Systems
      Software Testing, Verification and Validation

      Presents theory and practice of software testing. Covers structural testing including such topics as syntax testing, mutation testing, tools for software testing, testing specifications, black-box and white-box testing, code inspections, metrics, usability testing, testing documentation, website testing, security testing, beta testing, quality assurance, and software safety.

      elective
      5 credits
    • Applications & Tools
      Data Visualization

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

      elective
      5 credits
    • Applications & Tools
      Spectral Graph Analysis and Data Science Applications

      This course will cover the following topics: Laplacian matrix, adjacency matrix, eigenvalues of the graph and their estimates, graph conductance, Cheeger inequality, combinatorial and geometric expanders, random walks, pseudo- random generators and random walks on expander graphs, concentration inequalities for graph spectra, spectra of random graphs, basic concepts about codes, expander codes.

      elective
      5 credits
    • Capstone Project
      Capstone Project-2

      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.

      1 credits
Request free information about Harbour.Space
1 minute to complete and fast response time

Thank you!
We call soon
Keep an eye out for an activation email in your inbox. Once you’ve followed the link in our email.
Done