Typing for Programmers