Get a pot boiling for water. I use about a 2 gallon pot and 1 gallon of water, but check your pastas instructions. Cook pasta al dente.
Meanwhile, melt butter in a heavy bottom medium-sized pot on med-low heat (roughly 1 gallon).
Add flour, stir around for a minute or two. Add garlic, stir around for 15-30 sec then add about ⅓ of the milk. Whisk well, don't forget about it. You don't have to whisk constantly but don't leave it fully alone.
When it starts to thicken, add another roughly ⅓ of the milk. again, whisk, don't forget about it, when it starts to thicken, add the rest of the milk.
Take off the heat, whisk in salt and pepper. Add cheese, let melt, whisk in, then stir in the frozen peas and ham. If the pasta isn't finished cooking, set the cheese sauce aside.
Drain cooked pasta, then stir it into the cheese sauce. Serve right away, or pour into a greased 9x13 pan, let cool, cover, and put in the fridge for up to 3 days.
To bake, preheat oven to 350F, and bake without lid for 30-45 minutes until it's hot and bubbly.