• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!



Page history last edited by Krste Asanovic 15 years ago

Welcome to CS294-33: Towards Highly-Productive Parallel Programming Languages


Instructors: Krste Asanovic, David Patterson, and Koushik Sen


Tuesday-Thursday 2:30-4PM 310 Soda Hall



The goal of the course is to investigate highly-productive parallel programming languages (HPPPL) for multicore processors.  The projects at the end of the course will demonstrate new language constructs and/or working prototypes that advance the state of the art. Performance thus has two meanings: 1) performance of the programmer, in time to complete a task; 2) scalability of performance of the program as the number of cores increase.  Our view is that a highly-productive parallel programming system will not have as good as performance on a single core as programs written in C or Java, but that it should scale at least as well as the number of cores increase. Thus, programmer can improve productivity by using more cores, which should increase biennally. This figure below captures that notion.



An interesting possibility is that the figure above is unrealistic because memory bandwidth and I/O bottlenecks will prevent this linear scaleup for the C or Java version, so most of the cores will be underutilized as the number of cores increase. Hence, there would be plenty of CPU time available to handle the extra overhead of an HPPPL, and the efficiency gap would close with the number of cores.

For this alternative to be realized, we need two features of a new HPPPL:

  1. The interpreter needs to fit in cache. Likely fits if it is a byte-code interpreter, since the compilation phase can optimize the code, resolve types where possible, and so on.
  2. HPPPL also inflate the space required and reduce locality due to "boxing" of primitive types.  It will be critical to work to reduce this kind of overhead.


Course Description:

The course will have several phases.

  1. The first phase involves reading papers and inviting guest lectures on related topics. When we have invited speakers, the first hour will be a public talk and then we will invite the speaker to spend an hour with the class in an informal question and answer session. Everyone in the class will have read one paper related to the talk before the class to improve the quality of discussion. On days with speakers, class will last from 2:30 to 4:30.
  2. To explore how to express parallelism in a HPPPL, students will pick 3 of the 9 parallel programming patterns and propose how they should be expressed in a HPPPL.   What syntax/model would make it really easy to write programs that fit these patterns?   Common themes will come out both in expression and in how to implement them fast.  The trick here is to reduce the expressive power in some sense to make intent more clear (similar to map reduce).  We will then go over these expressions and how they might be excuted. This phase will ultimately lead to picking a project and a group to work on the project. (See below for project suggestions.)
  3. After the projects are picked, the next phase will be providing advice on the project. We expect to have half the projects meet on Tuesday and half meet on Thursday. The faculty will meet with each group for 15 to 20 minutes. The remaining groups will have their own meeting during that class period. We will invite visitors to occasionally review progress and give feedback on the projects.
  4. This final phase will consist of presentations and poster session followed by a written report. The written report should be approximately the length and style of a workshop paper (5-6 pages of two column format text), and should be emailed to instructors in PDF format by May 12.

The schedule below lists the speakers, assigned papers, project milestones, and when and how long each phase occurs.



  1. Konrad Hinsen, "Parallel Scripting with Python," IEEE Computer, Nov/Dec 2007.
  2. Ruby on Rails: "Create a Weblog in 15 minutes"
  3. maude-primer.pdf



Free help:

1. Learn how to use PBwiki: The PBwiki Manual

2. If you prefer video, watch a recording of our popular webinar, PBwiki 101: Your Guide to Wiki Basics.

3. Need more help? Sign up for a Free introductory webinar




Comments (0)

You don't have permission to comment on this page.