6.3: Functions of Semantic Analysis
6.3.2: Static vs. Dynamic Scope Checking
Read these slides.
6.3.3: Type Checking
Read Chapter 6, which presents an overview of type checking, nicely organized: symbol table environment, type checking for expressions, functions, and then, for programs.
6.3.3.1: Type Expressions, Type Equivalence, Type Inference, and What to Check
Study the slides on type systems and what to check for when building intermediate representations for various language constructs.
Read slides 2 through 14 and use them as a review or supplement to the above readings. Slides 15 through 31 give examples of type inference for the languages Prolog, Java, and Python.
These lectures correspond to the notes and are optional. They may be helpful in understanding some of the notes.
6.3.3.2: Type Systems as Proof Systems-Type Checking as Proofs
Study the very interesting presentation on type checking by proofs.
Read slides 1 through 8. The slides are somewhat formal and present a "type calculus." Use these slides to add to your understanding of types.
This video corresponds to these notes and is optional. If it adds to the notes and helps you, watch it.
6.3.3.3: Applications of Type Proofs
Study the application of the type proof system (introduced above) to the detection of type errors.
6.3.3.4: Type Equations, Unification and Binding of Type Expressions
Study slides 8 through 19. The slides supplement the readings above with type examples. A binding is a substitution of a type expression for a type variable.