Structure and Interpretation of Computer Programs with JavaScript