Make The Crust: Preheat the oven to 350º and lightly spray a 9" or 10" pie plate with cooking spray.
Crush the graham cracker sheets into fine crumbs and place in a medium sized bowl with the sugar and salt.
Add the melted butter and stir until the cracker crumbs are evenly moistened and clumping.
Pour the crumbs into the pie plate and press into a compact and even layer. Use a flat bottomed glass to help tamp down the crust. Press the graham crackers up the side of the pie plate as well, packing the crumbs together as tightly and evenly as possible.
Bake your graham cracker crust in a 350º oven for 10-15 minutes until golden brown and smells toasty.
Make the Chocolate Filling: Place the chocolate pieces in a large bowl and set aside.
In a small saucepan, heat the milk and cream over medium heat until steaming and just starts to simmer, do not boil. Take the pan off the heat.
In a small dish, whisk together the egg yolks and sugar.
SLOWLY drizzle ½ a cup of the hot cream into the egg yolks. Whisk until smooth and the yolks are warmed. This is called tempering.
Add the yolks back to the pot with the cream and turn the heat back up to medium heat. Stir until the custard has thickened and starts to bubble. Remove from the heat and stir in the vanilla extract.
Set a fine mesh strainer over the bowl with the chocolate pieces. Pour the pudding base through the strainer (this will catch any scrambled egg bits) and let the hot liquid sit on the chocolate for 3-5 minutes.
Whisk the pudding until the chocolate is completely melted and smooth. Pour the chocolate pudding into the prepared graham cracker crust. Chill in the fridge until set, about 5 hours or overnight is best.
Make Homemade Whipped Cream: Before serving, make the whipped cream by beating the heavy cream on medium speed (with a hand mixer or stand mixer) until frothy. Add in the vanilla and sugar and beat on high speed until thick, doubled in volume, and the whipped cream stands on the end of the beater without falling over.
Decorate the pie with the whipped cream, or serve on the side!