| Units: 3
T/Th 11:00am - 12:15pm
Staff mailing list
Scala mailing list
| Hassan Chafi |
This course is an advanced undergraduate/graduate level introduction to developing domain specific languages (DSLs) for productivity and performance using the Scala programming language. The goal of this course is to equip students with the knowledge and tools to develop DSLs that can dramatically improve the experience of using high performance computation in important scientific and engineering domains. The course is aimed at two sorts of students: domain experts who can define key domain specific language elements that capture domain knowledge and computer scientists who can implement these DSLs using a new DSL framework in Scala. In the first half of the class we will focus on understanding the infrastructure for implementing DSLs in Scala and developing techniques for defining good DSLs. In the second half of the course we will focus on example DSLs that provide both high-productivity and performance. During the second half of the course groups of students will develop and implement their own DSLs using the Delite DSL infrastructure. Delite is a Scala infrastructure that simplifies the process of implementing DSLs for parallel computation.
|Tue Mar 29||Intro to DSLs||Kunle|
|Thu Mar 31||Intro to Scala||Hassan||Scala PA, Final Project|
|Tue Apr 5||Scala II (OO, functional)||Hassan|
|Thu Apr 7||Scala III (advanced topics)||Hassan|
|Tue Apr 12||Lightweight Modular Staging in Scala||Arvind|
|Thu Apr 14||Delite||Kevin||Delite PA||Scala PA|
|Tue Apr 19||OptiML||Arvind||FP proposal|
|Thu Apr 21||Designing DSLs||Zach DeVito|
|Tue Apr 26||Phantom Midterm|
|Thu Apr 28||Phantom Midterm||Delite PA|
|Tue May 3||Course feedback and project discussion||Kunle||FP proposal|
|Thu May 5||DSLs for visualization||Jeff Heer|
|Tue May 10||Liszt||Niels Joubert|
|Thu May 12||Scala STM||Nathan Bronson|
|Tue May 17||DSLs for graphs||Sungpack|
|Thu May 19||DSLs for data querying||Hassan|
|Tue May 24||Rogue: A Scala DSL for MongoDB||Jorge Ortiz|
|Thu May 26||Presentations|
|Tue May 31||Presentations / wrap up||Final project|
The Final Project is an open-ended research project. The final project will be completed by groups of two to three students. The project will consist of defining a new DSL or adapting an existing DSL and implementing the DSL using Delite. The goal will be to demonstrate that using the DSL improves both productivity and performance. We encourage you to propose your own project, and also provide a few ideas here.
20% programming assignments
70% final project
You are encouraged to discuss their ideas with others. However, you should work on your programs independently and hand in original code. If you receive significant help from others, you should attribute them when handing in your assignments.
Signing up for the class on Axess will automatically subscribe you to the class mailing list. Please make sure to do so as soon as possible.
The class will use two versions of the Scala compiler. The first programming assignment will use the Scala 2.8.1-final release of the language. It can be obtained from: http://www.scala-lang.org/ Instructions on how to install Scala will be included with the assignment. The second assignment and final project will use the scala-virtualized compiler that is being developed at EPFL in collaboration with the PPL specifically for embedding domain-specific languages in Scala. Scala-virtualized can be downloaded from github. We will provide a detailed getting started guide later in the quarter to help you get the environment up and running.
On June 2-3 the second Scala Days conference will be held here at Stanford. Those of you who are or become passionate about Scala may wish to look into attending. More information about the conference is available at the Scala Days 2011 site. This is a fantastic opportunity to meet many of the people in the Scala community, including Prof. Martin Odersky.