This course focuses on domain-specific models of computation that sidestep the trade-off between high-level and high-performance found in general purpose programming languages. Course readings will draw from the primary literature and span several domains, including stream processing, stencil computations, and graphics. Emphasis is placed on the relationship between language design and implementation opportunities. Hands-on labs will involve programming in and evaluating specialized languages. The second half of the course will segue from standalone languages to those embedded in a general purpose host language (EDSLs and metaprogramming), particularly in the context of Haskell and Scala.
The syllabus for the course can be found here.
For all announcements, assignments, course policies, and other information see the Oncourse site.