Preheat Oven: Set to 375°F (190°C). Grease a baking dish.
Cook Potatoes: In a pot, boil diced potatoes for 5-7 minutes until slightly tender. Drain.
Make Sauce: In a saucepan, melt butter over medium heat. Stir in flour and cook for 1 minute. Gradually whisk in milk, stirring until thickened. Season with salt, pepper, and paprika.
Assemble: In a bowl, combine potatoes, ham, onion, and garlic. Pour sauce over the mixture and stir. Transfer to a baking dish.
Bake: Sprinkle with cheddar cheese and bake for 30-35 minutes until bubbly and golden.