Overview

This module covers basic algorithmic techniques and ideas for computational problems that arise frequently in various branches of computer science. It is essential for students who are looking to get a job as a software engineer at a top technology company. The module is a mix of theory and practice: students will prove the correctness of algorithms, as well as analyse how long it takes for algorithms to run. 

 

BARCELONA / NOVEMBER 28 - DECEMBER 16, 2016

BY ALEXANDER KULIKOV

HARBOUR.SPACE UNIVERSITY

We offer innovative university degrees taught in English by industry leaders from around the world, aimed at giving our students meaningful and creatively satisfying top-level professional futures. We think the future is bright if you make it so.

At Harbour. Space the protagonist is the student, because it’s our students who are in charge of the future. Our mission is to nurture and accelerate talent, supported by the most knowledgeable and successful people in technology and design. Harbour. Space allows for brilliant ideas to flourish and produce solutions to contemporary societal challenges around themes such as the environment, health, energy and security.

Our immersive learning approach means realworld problems take centre stage in the classroom, not textbook challenges. Brilliant ideas are born in collaboration, through experimentation by crossing every possible academic boundary. We know this is true in business, now we’re making it happen in our university.

 

Tech Heart
Harbour.Space University

All rights reserved. 2016

LEARN MORE

DATA STRUCTURES AND ALGORITHMS

Learning essential algorithmic design techniques
● Practicing solving computatuional problems, designing algorithms, provinging that an algorithm is correct and fast
Learning how to implement efficient algorithms
 Becoming a better programmer

 

LEARNING OUTCOMES

Course content

1. Introduction 

In this session students will learn that programs based on efficient algorithms can solve the same problem billions of times faster than programs based on naïve algorithms.
Their programs will be tested against carefully prepared test cases using an automated testing system. The system has been tested by tens of thousands of students and is essential for learning how to write programs which really work. Some of the assignments will contain problems which were previously used at the interviews to top tech companies.

 

2. Greedy algorithms

In this session students will learn about seemigly naïve yet powerful class of algorithms called greedy algorithms.

3. Divide and conquer

In this session students will learn about a powerful algorithmic tecnique called divide and conquer. 

5. Basic data structures

In this session students will learn about the basic dara structures used throughout the rest of this course.

6. Priority queues and disjoint sets

We start this session by considering priority queues which are used to efficiently schedule jobs and sort huge files, which is the most important building block for any big data processing algorithm.

4. Dynamic programming

In this session students will learn about a powerful tecnique for solving problems called dynamic programming.

7. Hash tables

In this session students will learn about a very powerful and widely used tecnique called hashing.

8. Balanced serch trees

In this session students will study binary search trees, which are a data structure for doing searches on dynamically chaging ordered sets.

9. Decomposition of graphs

Graphs arise in various real-world situations as there are road networks, computer networks and most recently, social networks.

10. Path in Graphs

In this session students will study algorithms for finding shortest path in graphs. These algorithms have many applications.

11. Minimum spanning trees 

In this session students will study the minimum spanning tree problem.

12. NP-Completeness

Although many of the algorithms students have learned so far are applied in practice a lot, it turns out that the world is dominated by real-world problems without a known probably efficient algorithm.

This module covers basic algorithmic techniques and ideas for computational problems that arise frequently in various branches of computer science. It is essential for students who are looking to get a job as a software engineer at a top technology company. The module is a mix of theory and practice: students will prove the correctness of algorithms, as well as analyze how long it takes for algorithms to run.

Their programs will be tested against carefully prepared test cases using an automated testing system. The system has been tested by tens of thousands of students and is essential to learn writing programs which really work. Some of the assignments will contain problems which were previously used at the interviews to top tech companies.

 

DATA STRUCTURES AND ALGORITHMS

BIOGRAPHY

Alexander Kulikov - Senior research fellow, Laboratory of Mathematical Logic, St. Petersburg Department of Steklov Institute of Mathematics. Alexander graduated from St. Petersburg State University in 2005 and received Ph.D. from St. Petersburg Department of Steklov Mathematical Institute in 2009 under the supervision of Edward A. Hirsch. His main research interests are algorithms for NP-hard problems and circuit complexity, most of his publications are in these fields. Alexander is running the Computer Science club and Computer Science center that provide students of St. Petersburg with advanced computer science lectures. He teaches courses and runs seminars on algorithms and circuit complexity and from time to time organizes computer science conferences and student schools in Russia. Alexander is one of the authors and teachers of the unique Coursera Specialization for Master Algorithmic Programming Techniques.

 

TAKE THE COURSE