Algorithmic Problems and Interview Questions in Java

Course

Online

£ 10 + VAT

Description

  • Type

    Course

  • Methodology

    Online

  • Start date

    Different dates available

This course is about the fundamental concepts of algorithmic problems, focusing on backtracking and dynamic programming. As far as I am concerned these techniques are very important nowadays, algorithms can be used (and have several applications) in several fields from software engineering to investment banking or R& D.Section 1:what are recursion and recursive methods
linear and binary search
tower of Hanoi problemSection 2:what are selection algorithms
quickselect algorithm
the secretary problemSection 3:what is backtracking
n-queens problem and Hamiltonian cycle problem
knight's tour problem
Sudoku gameSection 4:what is dynamic programming
knapsack problem
coin change problem and rod cutting problemSection 5:bin packing problem
closest pair of points problemSection 6:top interview questions (Google, Facebook and Amazon)The first chapter is about backtracking: we will talk about problems such as n-queens problem or hamiltonian cycles, coloring problem and Sudoku problem. In the second chapter we will talk about dynamic programming, theory then the concrete examples one by one: fibonacci sequence problem and knapsack problem.In each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems together from scratch in Java.FINALLY YOU CAN LEARN ABOUT THE MOST COMMON INTERVIEW QUESTIONS (Google, MicroSoft, EPAM etc.)Thanks for joining the course, let's get started!

Facilities

Location

Start date

Online

Start date

Different dates availableEnrolment now open

About this course

Recursion
Backtracking
Search algorithms: linear and binary search
Dynamic programming

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

This centre's achievements

2021

All courses are up to date

The average rating is higher than 3.7

More than 50 reviews in the last 12 months

This centre has featured on Emagister for 4 years

Subjects

  • Programming
  • Secretary
  • Simulation
  • Algorithms
  • Java

Course programme

Introduction 1 lecture 01:36 Introduction Introduction 1 lecture 01:36 Introduction Introduction Introduction Introduction Introduction Recursion 9 lectures 52:16 Recursion introduction Adding numbers: iteration vs recursion House building problem Factorial function Euclidean algorithm - greatest common divisor Linear and binary search introduction Linear and binary search implementation Towers of Hanoi problem introduction Tower of Hanoi problem implementation Recursion 9 lectures 52:16 Recursion introduction Adding numbers: iteration vs recursion House building problem Factorial function Euclidean algorithm - greatest common divisor Linear and binary search introduction Linear and binary search implementation Towers of Hanoi problem introduction Tower of Hanoi problem implementation Recursion introduction Recursion introduction Recursion introduction Recursion introduction Adding numbers: iteration vs recursion Adding numbers: iteration vs recursion Adding numbers: iteration vs recursion Adding numbers: iteration vs recursion House building problem House building problem House building problem House building problem Factorial function Factorial function Factorial function Factorial function Euclidean algorithm - greatest common divisor Euclidean algorithm - greatest common divisor Euclidean algorithm - greatest common divisor Euclidean algorithm - greatest common divisor Linear and binary search introduction Linear and binary search introduction Linear and binary search introduction Linear and binary search introduction Linear and binary search implementation Linear and binary search implementation Linear and binary search implementation Linear and binary search implementation Towers of Hanoi problem introduction Towers of Hanoi problem introduction Towers of Hanoi problem introduction Towers of Hanoi problem introduction Tower of Hanoi problem implementation Tower of Hanoi problem implementation Tower of Hanoi problem implementation Tower of Hanoi problem implementation Selection Algorithms 6 lectures 42:21 Selection algorithms introduction Quickselect introduction - Hoare algorithm Quickselect simulation Quickselect implementation Advanced selection - median of medians, introselect Online selection - the secretary problem Selection Algorithms 6 lectures 42:21 Selection algorithms introduction Quickselect introduction - Hoare algorithm Quickselect simulation Quickselect implementation Advanced selection - median of medians, introselect Online selection - the secretary problem Selection algorithms introduction Selection algorithms introduction Selection algorithms introduction Selection algorithms introduction Quickselect introduction - Hoare algorithm Quickselect introduction - Hoare algorithm Quickselect introduction - Hoare algorithm Quickselect introduction - Hoare algorithm Quickselect simulation Quickselect simulation Quickselect simulation Quickselect simulation Quickselect implementation Quickselect implementation Quickselect implementation Quickselect implementation Advanced selection - median of medians, introselect Advanced selection - median of medians, introselect Advanced selection - median of medians, introselect Advanced selection - median of medians, introselect Online selection - the secretary problem Online selection - the secretary problem Online selection - the secretary problem Online selection - the secretary problem Backtracking 22 lectures 02:22:42 Backtracking introduction N-queens problem introduction N-queens problem implementation I N-queens problem implementation II Hamiltonian cycle introduction Hamiltonian cycle illustration Hamiltonian cycle implementation I Hamiltonian cycle implementation II Coloring problem introduction Coloring problem implementation I Coloring problem implementation II Knight's tour introduction Knight's tour implementation I Knight's tour implementation II UPDATE: Knight's Tour Hi! Unfortunately I made a mistake in the implentation: in the for loop we consider all the possible moves so instead of boardSize.length we should use xMoves.length (so the number of possible moves)public boolean solveProblem(int stepCount, int x, int y) { if (stepCount == Constants.BOARD_SIZE * Constants.BOARD_SIZE) { return true; } for (int i = 0; i < xMoves.length; ++i) { int nextX = x + xMoves[i]; int nextY = y + yMoves[i]; if ( isValidMove(nextX, nextY) ) { this.solutionMatrix[nextX][nextY] = stepCount; if ( solveProblem(stepCount + 1, nextX, nextY) ) { return true; // good solution, keep going } this.solutionMatrix[nextX][nextY] = Integer.MIN_VALUE; } } return false; } Sorry for the inconvenience! Maze problem introduction Maze problem implementation I Maze problem implementation II Sudoku introduction Sudoku implementation I Sudoku implementation II NP-complete problems Backtracking 22 lectures 02:22:42 Backtracking introduction N-queens problem introduction N-queens problem implementation I N-queens problem implementation II Hamiltonian cycle introduction Hamiltonian cycle illustration Hamiltonian cycle implementation I Hamiltonian cycle implementation II Coloring problem introduction Coloring problem implementation I Coloring problem implementation II Knight's tour introduction Knight's tour implementation I Knight's tour implementation II UPDATE: Knight's Tour Hi! Unfortunately I made a mistake in the implentation: in the for loop we consider all the possible moves so instead of boardSize.length we should use xMoves.length (so the number of possible moves)public boolean solveProblem(int stepCount, int x, int y) { if (stepCount == Constants.BOARD_SIZE * Constants.BOARD_SIZE) { return true; } for (int i = 0; i < xMoves.length; ++i) { int nextX = x + xMoves[i]; int nextY = y + yMoves[i]; if ( isValidMove(nextX, nextY) ) { this.solutionMatrix[nextX][nextY] = stepCount; if ( solveProblem(stepCount + 1, nextX, nextY) ) { return true; // good solution, keep going } . this.solutionMatrix[nextX][nextY] = Integer ...

Additional information

Students should have some basic programming background (loops, classes, objects etc.)

Algorithmic Problems and Interview Questions in Java

£ 10 + VAT