# Coding Interview Jumpstart: Algorithms and Problem Solving

Learn the principles behind fundamental computer science algorihms asked on interviews for top tech companies.
Rating: 4.3 out of 5 (174 ratings)
14,599 students
Coding Interview Jumpstart: Algorithms and Problem Solving
Rating: 4.3 out of 5 (174 ratings)
14,599 students
Having higher chances to get a job in a place where algorithmic problem solving is a part of interview.
Have one more tool during coding interviews.
Better understanding of principles behind fundamental computer science algorihms.
Becoming a better problem solver.

### Requirements

• Basic knowledge of any programming language.
• Elementary math knowledge.
Description

In this course we will together make the first steps in the exciting world of algorithms. If you have never learned anything about algorithms, don’t be afraid or intimidated. Algorithms aren’t as hard as people often consider them to be. I’m convinced that any programmer can master the art of problem solving and algorithms if he or she has the motivation to succeed. In fact, I believe that most of the algorithms can be very easy to understand if they are explained in a clear and simple way.

Considering that I know how hard can the beginning be, because I have been in the same situation once, I have invested my knowledge and experience into this course, to help you guys making the first steps towards mastering algorithms and bringing you one step  closer to your dream job.

HOW IS THIS COURSE STRUCTURED?

Section 1: Introduction

In this section, I will introduce you with the material and the structure of the course.

Section 2: Algorithm Analysis

In section 2, we are going to talk about algorithm analysis. For some of you, this will be your first step into the world of algorithms and you will understand why is this such an important topic.

We are going to learn several things:

• First, we will learn about the importance of analysis, and why do we have to analyze our solutions.

• Then we are going to focus on Asymptotic notation, which is basically a language that allows us to analyze program running time by identifying its behavior as the input size for the algorithm increases.

• After that we will focus on a specific type of notation, called Big-O notation, and we  will use the Big-O notation to compare algorithms.

• Finally we are going to practice these concepts by calculating time and space complexity of some given algorithms.

Section 3: Sorting

Sorting is one of the most common algorithms in the world, if you look all around you can find a lot of applications that are using a sorting algorithm to put elements of some list in a certain order. The elements don’t have to be numbers, they can be strings or maybe some events which are sorted by date.

In this section we will learn several sorting algorithms:

• Bubble Sort

• Selection Sort

• Insertion Sort

• Merge Sort

• Quick Sort

• Counting Sort

For each algorithm we will determine the time and space complexity and compare trade-offs.

At the end of this section you will learn the most important sorting algorithms and you will be able to determine what is the best algorithm to use depending on the type and range of the data which needs to be sorted.

Section 4: Binary Search

This section is dedicated to a fundamental searching algorithm in computer science: binary search.

Then we are going to explore some variations of binary search and how we can implement them:

• Finding the first occurrence of a target value in the input array

• Finding the last occurrence of a target value in the input array

• Finding the number of occurrences of a target value in the input array

Section 5: BONUS: Interview Problems

This section is a special bonus section, here I will post detailed interview problems solutions. I encourage you to post some interesting problems in the discussions, and each one-two weeks I will choose new problems and post a new video in this section where we solve those new problems.

I also encourage you to post questions about problems that you don't know how to solve or if you have some bugs in your code and you're not sure why your program isn't working

Who this course is for:
• Software developers preparing for coding interviews.
• Anybody who wants to kickstart knowledge in algorithms.
Curriculum
5 sections • 31 lectures • 6h 20m total length
• Course Introduction
• Course Overview
• Resources and help
• Section Introduction
• Lecture info
• Why analyzing algorithms?
• Asymptotic notation
• Big-O notation
• Time Complexity Examples
• Time Complexity Quiz
• Space Complexity Examples
• Space Complexity Quiz
• Section Introduction
• Bubble Sort introduction
• Bubble Sort implementation
• Selection Sort introduction
• Selection Sort implementation
• Insertion Sort introduction
• Insertion Sort implementation
• Merge Sort introduction
• Merge Sort implementation
• Quick Sort introduction
• Quick Sort implementation
• Counting Sort introduction
• Counting Sort implementation
• Sorting Quiz
• Section Introduction
• Binary Search introduction
• Binary Search implementation
• First occurrence
• Last occurrence
• Number of occurrences
• Binary Search Quiz
• Section Introduction
• Coding Interview Problem #1 - Unique Number
• Unique number

Instructor
Proffessional programming tutor, 2x Microsoft intern, 5+ years of competitive programming, Full-Stack developer

Hi, I'm Branko.

I’ve been working as a programming tutor in an educational center for more than two years, where I am teaching algorithms and problem solving and preparing students for national and international programming competitions.

Last year I have done a 5-month internship at Microsoft as a part of the Office team. In the summer of 2018 I’m starting my second internship at Microsoft.  I was part of the Bubble Cup judge team which was responsible for creating the programming challenges - international programming competition organized by Microsoft.

I love competitive programming and since 2013 I have participated and won prizes on several competitions like the IOI (International Olympiad in Informatics), BOI (Balkan Olympiad in informatics), and the ACM-ICPC.

Together with my friends, I have participated and won multiple hackathons.

During last 2 years, I have been part of a team which organized the national olympiad in programming.

I'm also working as a full-stack developer on several freelance and private projects.