An important goal of undergraduate engineering education is to develop students' ability to solve complex, real world problems. Such problems involve the building of physical and mathematical models of real-world scenarios, identifying correct parameters of the model, devising numerical solution methods, and optimizing the solution. In typical engineering courses, solution methods are demonstrated in problem-solving tutorials while programming is relegated to homework or lab, wherein students may not get ample feedback on their choices of optimization or solution evaluation. In this paper, we propose a strategy, Guided Problem Solving and Group Programming (GPGP) to overcome this gap. Students work in peer groups within class, to build and implement their mathematical models and solutions, then write programs to do optimization and evaluation. We implemented this strategy in a 4th year electrical engineering course in which GPGP was done four times over the semester. We assessed students' performance on dimensions of problem solving such as representing the problem, developing solution, making justification for proposed solution and monitoring and evaluating problem space and solutions across the semester and found a statistically significant improvement. Further students perceived that they had learned engineering problem solving via GPGP and reported enjoying the strategy in class.