Bring water to a boil for pasta in kettle. Preheat oven to 350°F. Butter casserole dish.
Salt water and add macaroni to rapidly boiling water and cook until slightly tender, 6-7 minutes. Pasta will cook further in the oven, so it should be slightly underdone.
In saucepan, heat 4 tablespoons of butter and stir in flour to make a roux. Cook over medium heat for about 3 minutes, stirring until bubbly. Remove pan from heat and vigorously stir in milk to blend well. Return pan to heat and stir and cook until sauce in thickened.
Add 3 tablespoons of grated cheese and stir until blended. Add salt and pepper to taste.
Cut ham slices into ¼-inch cubes. Drain macaroni. Return macaroni to pot and toss with cream sauce and ham.
Arrange layer of macaroni in casserole; cover with generous dusting of paprika and layer of the shredded cheese. Continue layering until all are used, ending with cheese layer, about three layers deep.
Dot top with remaining 2 tablespoons of butter. Bake 25-30 minutes, or until bubbling.