# Interpreters I don't have any notes from previous semesters on this material. I suggest you study the code accompanying the lecture. To a first approximation, what we covered is a mixture of the first lecture of CS 4110 and the first lecture of CS 4120. If you want some addition reading, I recommend the following: * Chapter 1 of [*Modern Compiler Implementation in ML*][tiger] by Andrew Appel. * Chapters 3 and 4 of [*Types and Programming Languages*][tapl] by Benjamin C. Pierce. [tiger]: https://newcatalog.library.cornell.edu/catalog/9490245 [tapl]: https://newcatalog.library.cornell.edu/catalog/6174362 But be aware that those dive into greater depth than we covered in lecture. <!-- * * * <i> Topics: * black box testing * glass box testing * testing data abstractions * randomized testing * debugging </i> * * * In this lecture we covered chapter 10 of [*Program Development in Java: Abstraction, Specification, and Object-Oriented Design*,][liskov-guttag] by Barbara Liskov with John Guttag. The book can be freely accessed through the Cornell Library. I refer you to it in place of writing my own notes. Prof. Liskov (MIT) is a winner of the Turing Award and was our own Prof. Andrew Myers's PhD advisor. Since Prof. Myers was my own PhD advisor, that makes Prof. Liskov my grand-advisor. [liskov-guttag]: https://newcatalog.library.cornell.edu/catalog/9494027 ## Terms and concepts * black box * boundary case * bug * debugging by scientific method * glass box * inputs for classes of output * inputs that satisfy of precondition * inputs that trigger exceptions * path coverage * paths through implementation * paths through specification * producer and consumer operations * randomized testing * representative inputs * typical input ## Further reading * -->