The midterm will take place over the weekend of April 30--May 1. It will be due before class time on Tuesday 3; extensions till before class time on Thursday May 5 may be considered. If you cannot take the midterm on this weekend due to travel or conflicts with other hard midterms, there will be a make-up midterm variant offered the _next_ weekend. The midterm will be open-shell, open-book, open-Internet, as discussed in class today. The topics will include: 1. The x86 computation model; functions and scopes in compiled C code; the ABI and calling conventions. 2. Functional programming in LISP: - "loop-less" style of functional programming, recursive traversals of lists and trees; - accumulator-style recursive functions and tail-recursion - tail-recursive optimization vs stack exhaustion See OnLisp 2.7-8, 4.3, and 5.5-6 (also, 15.2-3 for macros). 3. Lexical binding vs dynamic binding (based on ELISP). 4. Ruby: the bytecode and VM execution model.