This is the dynamic programming, branch and bound and branch and bound low memory solver to solve large instances of the knapsack problem. This was written as part of the course Discrete Optimization on Coursera by Professor. Pascal Van Hentenryck of University of Melbourne.