Trim at least 1 inch off the asparagus bottoms, pare, and wash.
In a pan where asparagus can lie flat, add water to come about 2 inches up the sides and add 1 Tbsp salt. Boil, add asparagus, cover, and cook 4-8 minutes after the water returns to a boil, until tender but firm. Drain, wipe the pan dry, and keep it for later.
When cool enough to handle, cut off the tips and cut the stalks into about 3/4-inch pieces, discarding any woody parts.
Cut ham into strips about 1/4 inch wide. Cook ham with butter over medium-low heat for 2-3 minutes without letting it turn crisp.
Add asparagus pieces, raise heat to medium-high, and cook 1-2 minutes, turning to coat. Add cream, lower heat to medium, and stir constantly about 30 seconds until thickened. Taste and correct for salt.
Toss sauce with hot drained pasta, add Parmesan, toss again, and serve with extra cheese.