Whisk together the egg yolks and cornstarch. Set aside.
Pour the half and half into a small saucepan and bring it to a simmer. Keep it warm on low until you need it.
Combine the brown sugar, salt, and water in a medium saucepan and bring to a boil over medium high heat.
Boil the mixture, without stirring, until it is dark brown, 8-10 minutes.
Whisk in the butter until combined.
Pour in 1/2 cup of the half and half. Whisk to combine, then slowly add the rest. Whisk smooth while making sure to get the edges and corners of the saucepan.
While whisking the eggs constantly, slowly drizzle about 1 cup of the butterscotch into the prepared egg yolks. Then, while whisking the butterscotch, pour the tempered egg mixture into the saucepan.
Cook the pudding on medium heat while whisking constantly. The pudding will start to slowly bubble as it thickens. Let it bubble for 1 minute to fully activate the cornstarch. This should all take about 2 minutes.
Off the heat, add the vanilla and stir in. Taste the pudding and add a pinch more salt if needed.
Ladle the pudding into 6-8 small cups. Cover the cups with plastic wrap (let the wrap touch the surface of the pudding if you don't want it to form a skin).
Refrigerate the pudding until firm, cold, and set. This will take 3-4 hours.
Serve with whipped cream, chopped chocolate, chocolate ganache or other toppings of your choosing.