This course covers abstraction and design in computation. Topics include functional and object-oriented styles of programming, software engineering in the small, and models of computation. The goal is to understand how to design large programs to make them readable, maintainable, efficient, and elegant. Exercises are conducted in OCaml. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 51. Formerly CSCI E-250.
Prerequisites: CSCI E-20 and CSCI E-50, or the equivalents. (4 credits)