This assignment delves into the realm of optimization techniques, focusing on two key methods: dynamic programming and linear integer programming. Dynamic programming is explored through its application in solving simpler sub-problems recursively, emphasizing the concept of 'memorization' to optimize computational efficiency. Linear integer programming models are introduced as a framework for mathematical optimization where variables are restricted to integers, highlighting their applicability in scenarios involving discrete quantities or decision-making processes.