Tutorial: Type-Based Analysis of  Higher-Order Programs