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
We are verifying your question adjusts to our publishing rules. According to your answers, we noticed you might not be elegible to enroll into this course, possibly because of: qualification requirements, location or others. It is important you consult this with the Centre.
Thank you!
We are reviewing your question. We will publish it shortly.
Or do you prefer the center to contact you?
Reviews
Have you taken this course? Share your opinion
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 lecture01:36Introduction
Introduction
1 lecture01:36IntroductionIntroductionIntroductionIntroductionIntroduction
Recursion
9 lectures52:16Recursion introductionAdding numbers: iteration vs recursionHouse building problemFactorial functionEuclidean algorithm - greatest common divisorLinear and binary search introductionLinear and binary search implementationTowers of Hanoi problem introductionTower of Hanoi problem implementation
Recursion
9 lectures52:16Recursion introductionAdding numbers: iteration vs recursionHouse building problemFactorial functionEuclidean algorithm - greatest common divisorLinear and binary search introductionLinear and binary search implementationTowers of Hanoi problem introductionTower of Hanoi problem implementationRecursion introductionRecursion introductionRecursion introductionRecursion introductionAdding numbers: iteration vs recursionAdding numbers: iteration vs recursionAdding numbers: iteration vs recursionAdding numbers: iteration vs recursionHouse building problemHouse building problemHouse building problemHouse building problemFactorial functionFactorial functionFactorial functionFactorial functionEuclidean algorithm - greatest common divisorEuclidean algorithm - greatest common divisorEuclidean algorithm - greatest common divisorEuclidean algorithm - greatest common divisorLinear and binary search introductionLinear and binary search introductionLinear and binary search introductionLinear and binary search introductionLinear and binary search implementationLinear and binary search implementationLinear and binary search implementationLinear and binary search implementationTowers of Hanoi problem introductionTowers of Hanoi problem introductionTowers of Hanoi problem introductionTowers of Hanoi problem introductionTower of Hanoi problem implementationTower of Hanoi problem implementationTower of Hanoi problem implementationTower of Hanoi problem implementation
Selection Algorithms
6 lectures42:21Selection algorithms introductionQuickselect introduction - Hoare algorithmQuickselect simulationQuickselect implementationAdvanced selection - median of medians, introselectOnline selection - the secretary problem
Selection Algorithms
6 lectures42:21Selection algorithms introductionQuickselect introduction - Hoare algorithmQuickselect simulationQuickselect implementationAdvanced selection - median of medians, introselectOnline selection - the secretary problemSelection algorithms introductionSelection algorithms introductionSelection algorithms introductionSelection algorithms introductionQuickselect introduction - Hoare algorithmQuickselect introduction - Hoare algorithmQuickselect introduction - Hoare algorithmQuickselect introduction - Hoare algorithmQuickselect simulationQuickselect simulationQuickselect simulationQuickselect simulationQuickselect implementationQuickselect implementationQuickselect implementationQuickselect implementationAdvanced selection - median of medians, introselectAdvanced selection - median of medians, introselectAdvanced selection - median of medians, introselectAdvanced selection - median of medians, introselectOnline selection - the secretary problemOnline selection - the secretary problemOnline selection - the secretary problemOnline selection - the secretary problem
Backtracking
22 lectures02:22:42Backtracking introductionN-queens problem introductionN-queens problem implementation IN-queens problem implementation IIHamiltonian cycle introductionHamiltonian cycle illustrationHamiltonian cycle implementation IHamiltonian cycle implementation IIColoring problem introductionColoring problem implementation IColoring problem implementation IIKnight's tour introductionKnight's tour implementation IKnight's tour implementation IIUPDATE: 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 introductionMaze problem implementation IMaze problem implementation IISudoku introductionSudoku implementation ISudoku implementation IINP-complete problems
Backtracking
22 lectures02:22:42Backtracking introductionN-queens problem introductionN-queens problem implementation IN-queens problem implementation IIHamiltonian cycle introductionHamiltonian cycle illustrationHamiltonian cycle implementation IHamiltonian cycle implementation IIColoring problem introductionColoring problem implementation IColoring problem implementation IIKnight's tour introductionKnight's tour implementation IKnight's tour implementation IIUPDATE: 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.)