A shared academic foundation. These required modules build essential skills for long-term growth in your field.
Must Take
Introduction
Start your journey with a bootcamp-style course that brings students from every programme together. Learn the fundamentals of Harbour.Space’s hands-on model, meet your peers, and get ready to collaborate across disciplines.
From Zero to Hero
The course represents a deep dive into concepts and frameworks introduced during orientation. It is designed to teach students the process of creating a new venture. It introduces its participants to the concepts, challenges, and tools needed to create a successful new venture. Business model design & validation frameworks are studied and applied to the teams’ startups.
Must Take All
Major Core
These modules form the backbone of your education. They are designed to help you think critically, solve complex problems, and build the deep technical or strategic skills required for your discipline.
Python Refresher for Masters
The course covers basic Python methods for data analysis: pandas, numpy, scipy, and sklearn, along with advanced techniques for their application. We’ll also review basic integrations of Python with external libraries like xgboost, tensorflow, and pytorch, along with data wrangling and some hyperparameter optimisation methods. Jupyter notebook usage and tricks will also be given as an organic part of the course. At the end of the module, everyone is expected to be ready to work with ssh and git as long as they come up with a simple data wrangling system.
Advanced Algorithms and Data Structures
This course focuses on key and in-depth algorithms and data structures that form a modern computer specialist’s toolkit. The computational complexity of algorithms and their comparative analysis will also be discussed. Students will be extensively trained in implementing data structures and algorithms on many problems reducible to the discussed data structures and techniques. The programs will be tested against carefully prepared test cases using an automated testing system.
Data Storages
All contemporary software platforms, whether developed by large corporations (Facebook, Google, OpenAI, etc.) or small businesses, rely on the use of databases or data storage. The foundation of this course is the notion that data storage is an answer or a solution to a problem rather than a technology in and of itself. During this course, we will study what problems modern software can solve with data storage. We will study the whole spectrum of existing data storages, such as classical RDBMS, key-value storages, NOSQL, document storages, column storages, OLAP, vector databases, embedded and serverless databases, and their weak and strong points. Students will learn to understand how to identify requirements for the data storages in a given software system and how to wisely choose a particular data storage (or multiple storages), taking into consideration both business requirements and the chosen software architecture (monolithic, microservice, etc.). We will study all concepts and mental models needed to understand data storage, wisely choose them, and embed them into software - manually, as a manager, or using an LLM, such as ChatGPT.
Modern Web Application
This course will focus on how a modern framework (e.g. Laravel) can be used to quickly get from (a business) idea to implementation (proof-of-concept, MVP). This module focuses on understanding the core concepts behind modern frameworks and the development of workflows. At the end, students will have a working application on their local development server.
Mobile Application Development
Are you searching for a place that teaches you how to start and go through the entire process and content of developing an Android application? Did you know that, currently, there are over three billion Android devices active worldwide that come in the form of smartphones, tablets, watches, TVs’, and even cars? So, if you want to learn about mobile development for Android, look no further. In this course, you’ll start from scratch, and you will build new features for your app in each class, going from the Android basics through the latest libraries, always following the best practices for development. This course will give you a unique opportunity to have your app running everywhere and anywhere. Are you ready? Let’s start!
Software Engineering (Java\Spring)
There is a big difference between coding and engineering, working on a project alone or contributing to a large software system. In this course, we will discuss what software engineering is and how to become one. We will cover all phases of software development from requirements gathering to project maintenance, and discuss processes and best practices. Most of the concepts will be tried in practice using Java and Spring Framework.
Choose 1
Capstone Project
The Capstone Project is the culmination of the Computer Science program, where you apply your technical expertise to build robust, scalable software solutions. Working individually or in teams, you will design, develop, and deploy systems that demonstrate strong software architecture, algorithmic thinking, and engineering best practices. Your capstone showcases your readiness for roles in software development, systems engineering, or technical leadership.
Client Work
Work on a real-world project for an external client. This capstone option provides hands-on experience collaborating with industry partners, managing client expectations, and delivering professional solutions to real business challenges.
Thesis
Conduct original research in your field of study and produce a formal thesis. This capstone option is ideal for students interested in pursuing further academic research or diving deep into a specific topic of interest with scholarly rigor.
Startup
Launch your own startup as your capstone project. From ideation to MVP development, you will work through the entire startup lifecycle, applying entrepreneurial principles, product development, and go-to-market strategies learned throughout the program.
Independent Project
Design and execute your own independent project, driven by your unique interests and career goals. This capstone option offers maximum flexibility to explore innovative ideas, conduct research, or develop solutions that reflect your personal vision and professional aspirations.
Choose from a rotating selection of specialised topics to deepen your interests. Availability may vary year to year.
Choose at least 4
Major Electives
Go deeper into your discipline by choosing electives that align with your personal and professional goals. These courses offer advanced knowledge and flexible focus areas.
Data Engineering
The idea of this course is to introduce the engineering way of looking at data analytics in modern companies. It presents basic knowledge, tools and concepts that may be required to design and implement Data Engineering processes to simplify making data-driven decisions. In practice, this helps to make it easier to access datasets, tame huge amounts of data in a proper manner and gain insights, using the available hardware efficiently. Students will be able to choose components for building data pipelines, including retrieval, processing and storing the data using popular open source tools like Python, Airflow, Hadoop, Spark, Kafka, various types of databases and storages for Data Lake and Data Warehouse architectures.
Modern Software Architectures
At the heart of every well-engineered software system lies a software architecture. This course is tailored for students who wonder how to design architecture, what driving forces influence it, how to evaluate architecture, and what good architectural documentation looks like. We'll explore these concepts and their application in modern software architectures based on case studies from the industry. This course will also be helpful to prepare students for system design interviews.
DevOps
DevOps and SRE specialization has emerged as an answer to the increasing complexity and the diversity of tasks around the development and implementation of technical solutions. This course focuses on the practical aspects of DevOps, and the problems it is targeting to resolve. The goal is to help participants learn the tools and techniques required to support development activities nowadays.
Distributed Systems & Clouds
Clouds are an essential part of today’s life. Therefore, cloud computing skills are in high demand right now. The course curriculum includes the foundations of clouds: virtualisation and fundamental principles of distributed systems. In this module, different aspects of the design and implementation of distributed systems are explained. We will deep-dive into technologies like: google file system, spanner, dynamo DB, s3, and consensus algorithms like Raft and Paxos. The course also covers public clouds (AWS, GCP and Azure), and cost analysis of cloud solutions. Throughout the course, we will design and deploy cloud-native applications.
Parallel and Distributed Computing
Modern computing is all about distribution. Big Data, Machine Learning, Systems – all these new and fancy subjects require us to leverage the power of many available cores and devices. This course aims to provide students with background knowledge in parallel programming and concurrent and distributed computing. Students will learn how to structure, write, run and debug multithreaded applications in Java. More importantly, they will also learn how to reason about the code running in parallel to ensure that the desired safety and liveness properties are present in a scalable way without sacrificing performance. As a teaser, by the end of the course students are introduced to distributed computing. The course builds on the classical model of computation with a single processor and memory, and iteratively introduces one more bit of complexity at once. First, the course explores the effects of introducing several processors into the computational model while keeping a shared memory. Then, the course explores the effects of replacing the shared memory model with the message-passing model (as in distributed computing). If time permits, the effects of failures on the computational model will be discussed. On the practical side, the course includes a lot of labs and programming exercises to ensure enough hands-on experience. Performance matters are covered as well, as students will be delivered content on basic performance analysis capabilities.
Fundamentals of Blockchain
In this course, students will learn about the fundamentals of blockchains by building one from scratch. The curriculum is structured around a group project, with interactive lectures providing all the required theoretical and practical knowledge to succeed. The course will cover major classical and modern blockchain architectures as well as applications such as DeFi, NFT, DAO, etc.
Software Testing, Verification and Validation
Java Programming & OOP
Java is one of the most popular programming languages in the software development industry. This course covers topics about the Java programming language as it is applied to networking, databases, web services, mobile applications, and other practical aspects. The course is designed for graduate students with some programming experience who would like to develop software in Java to solve real problems.
Practical Linux & Scripting Languages
Computers are great at helping us with repetitive tasks, and this applies just as much to our use of the computer as it does to the computations we want it to perform. Because of today’s technology, we have a vast range of tools to choose from that enables us to be more productive. Yet, many of us only use a small fraction of these tools; this course is an attempt to address this issue. To do so, this course will cover topics such as command-line, bash scripts, debugging, profiling, version control, testing, and data wrangling. We will also cover how to use a powerful text editor called Vim.
Modern C++ Programming
C++ is a powerful multi-paradigm language. Learning C++ will grow your ability to think and solve problems in many different ways. This course is an introduction to C++ language and the usage of object-oriented programming. You'll also learn how to think algorithmic and solve problems regardless of the tools you have. Modern C++ is expressive, readable, and fast. It has many high-level features added to it. This course will teach you how to use them effectively.
Modern Web Application 2.0
This course will focus on how a modern framework (e.g. Laravel) can be used to quickly get from (a business) idea to an app in production. This module focuses on advanced concepts (testing, API access, optimising for speed/traffic, …) and everything needed for putting an application into production. At the end, students will have a working application on a production server.
Job Interview in Software Development
This course is designed to equip students with the necessary skills and knowledge to excel in technical job interviews for software engineering positions. Through a combination of lectures, practical exercises, coding challenges, and mock interviews, students will gain a deep understanding of key topics such as data structures and algorithms, system design, behavioral interviews, and more. By the end of the course, students will have acquired essential interview preparation techniques, enhanced their problem-solving abilities, and gained confidence in their technical and communication skills. The course adopts a hands-on approach, providing ample opportunities for practice and feedback to ensure students are well-prepared for real-world job interviews.
Combinatorics and Graph Theory
The course will provide students with a comprehensive understanding of graph theory and necessary combinatorics. The course covers basic concepts of combinatorics, theoretical fundamentals of graph theory, and algorithms on graphs. Students will gain practical skills and knowledge that can be applied in advanced algorithms and data structure courses.
Theory of Probability and Statistics
The first part of the course provides an introduction to combinatorics and probability theory by uncovering their basic notions and techniques. We will learn how to compute the probability of an event and discuss standard probability distributions and their properties. Then, we will move to statistical inference. Topics covered in this part of the course include point estimates, confidence intervals, and hypothesis testing. In the last part of the course, we will learn to model the relationship between several variables with linear regression. Since statistical analysis is typically done on the computer, homework will include not only pen-and-paper exercises but also practical assignments with Python.
Machine Learning
This course aims to introduce students to the contemporary state of Machine Learning and Artificial Intelligence. It combines theoretical foundations of Machine Learning algorithms with comprehensive practical assignments. The course covers materials from classical algorithms to Deep Learning approaches and recent achievements in the field of Artificial Intelligence. Programming assignments will be implemented in Python 3.
Unity Game Development
The course introduces participants to the fundamentals of game development using Unity. Utilising this game engine (or, more precisely, ecosystem), most mobile games are developed. It uses one of the most popular programming languages, C#, and allows projects to be ported to dozens of different platforms. During the course, we will get acquainted with both the editor itself and Unity services that make it easy to integrate multiplayer, analytics, monetization, and various tools for team development into the project. Participants will have the opportunity to study both existing games and develop their own.
Secure Software Development
In today’s world, where development becomes faster, and companies are rushing their products to the market, it is crucial to apply security practices as early as possible. Software developers must understand security concepts, and cybersecurity engineers should adjust their practices to agile environments. The course covers the modern approach to secure coding from both the development and security point of view.
Use Remaining Credits
Collaborative & Cross-disciplinary
Work with students from other fields to tackle real-world challenges from multiple angles. These electives are designed to stretch your thinking and build collaborative problem-solving skills.
Creative Writing, Storytelling, and Creative Performing
Creativity is the engine of the 21st century. The contemporary world is full of ideas, concepts, products, and people trying to find their way through this maze. Every start-up has to have not only the idea and (future) product but first of all the story to tell both to the potential investors as well as users, now and future, which brings us to the necessity of creativity and storytelling. Whatever you do, you have to have a story. Another intent of this course is bringing together people of different backgrounds and knowledge, to engage them in working towards a common goal in a new way – through writing a piece of fiction and performing it. Uniting those two fields gives students the possibility to try out their abilities in a safe environment as well as cooperate with other students, bringing in new viewpoints and experiences. This is one of the best ways of establishing teams that have innovation at their core.
Leadership
This course is designed to equip participants with the necessary skills to cultivate long-lasting leadership influence and make a meaningful impact, even in the face of change, crises, and criticism. While technical or "hard" skills may secure high-potential individuals top positions, this course focuses on the development of "real skills" that enable leaders to build, sustain, and thrive in their leadership roles. The course will empower future leaders with the transformative Three Pillars of Leadership: Awareness, Behavior, and Visibility to take their leadership to the next level.
English Business Communication
This course is a business English course for business people. It consists of authentic topics of great interest to everyone involved in or studying international business. The course reflects the latest trends in the business world. If you are into business, the course will greatly improve your ability to communicate in English in a wide range of situations. If you are a student of business, the course will develop the communication skills you need to succeed in a professional environment and will broaden your knowledge of the business world. Everybody studying this course will become more fluent and confident in using the language of business in a variety of contexts.
Pitching to Investors
Pitching to Investors prepares students to craft and deliver concise, high-impact presentations to one of the most demanding audiences: investors. Over three weeks, participants refine their individual presentation style, learn how to frame startup narratives, and master the use of visual storytelling to support funding goals. The course culminates in a polished, investor-grade pitch.
Product Analytics Fundamentals
Product Analytics Fundamentals is a comprehensive course that covers the essential elements of analytics, including applied statistics, programming skills, AB-testing, visualization, and understanding data. This course is designed to provide students with a solid foundation in analytics so they can make data-driven decisions. Students will learn how to collect and analyze data using statistical methods, how to extract insights from data, how to conduct AB-testing to optimize product performance, and how to visualize data to communicate insights effectively.
Technical Product Management
This course has two parts: (1) building and launching a user-facing software product with a special emphasis on understanding user needs, and (2) applying data-driven product development techniques to iteratively improve the product. Students will learn how to transform an idea into software requirements through user research, prototyping, and usability tests, and then they will proceed to launch the MVP version of the product. The students will apply an iterative, data-driven approach to developing a product, integrate event analytics, and run controlled experiments.
Agile Product Development
Building great tech requires more than great product knowledge and management - it requires a deep understanding of Agile ways of working. “Being agile” is so much more than dev team practices, it is being mentally flexible and highly adaptable to constant change. In this class, students will learn how to navigate the jargon and use agile concepts to achieve terrific results with teams and organizations. In addition to learning about the frameworks scrum and kanban, we will review the philosophical principles behind why these frameworks can be useful, how to modify or recombine them, and how to be sensitive to the human psychology that makes it all work. Through a combination of lectures, small-group work, learning games, workshops, and projects (both structured and self-directed), students will learn to avoid the pitfalls and leverage Agile for their product and business success.
Use Remaining Credits
Free Electives
Take courses outside your programme to broaden your perspective. As long as you meet the technical requirements and there's space, you're welcome to explore new topics and expand your toolkit.