6.827 Multithreaded Parallelism: Languages and Compilers (Fall-2006)

Course Info
Problem Sets
6.827 Multithreaded Parallelism: Languages and Compilers

(Information on this website is preliminary and subject to change)

Instructor: Arvind
Lectures: TR9:30-11AM, 36-156
Units: 3-0-9, H-level, Grad Credit, 4 EDP

Parallel computers have been touted as the "next big thing" for three decades, but the software developers have been able to ignore it, largely by leveraging the ever increasing single-thread performance of modern microprocessors. This situation has completely changed within the last three years: flagship microprocessors from Intel, AMD and IBM are all "multicores" and there is no roadmap for increasing the single-thread performance. Parallel languages and compilers have moved to the central stage; even companies like Microsoft need a strategy to move their software to multicores.

This class is aimed at bringing students to the level of sophistication that they can start tackling this crucial problem. Students will receive an introduction to parallelism approaches pioneered in the eighties with an eye towards understanding what was missing.

The first part of the course will cover some classical material in programming languages (e.g., the Lambda calculus, types, functional programming languages such as Haskell and pH) and will end with a closed-book quiz. The second part will cover several well established models of parallel computation (e.g., dataflow, multi-threading) and some newly emerging ones (e.g., atomic transactions, transactional memory). We will explore if students can collectively help to implement a compiler for a new parallel language based on atomic-transactions.

Prerequisites: This course is intended for graduate students and seniors. Some programming and mathematical sophistication (e.g., 6.001 and 6.042J) will be assumed. Additional knowledge of compilers (6.035) and computer architectures (6.004) would be helpful.

Course Information

Lectures: Lectures will be from 9:30 AM to 11:00 AM every Tuesday and Thursday in room 36-156.

Grading: Grades will be based on homeworks (25%), 3 quizes(25%), or a project which may substitute for the final quiz.

Problem Sets 25%
Quiz 1 25%
Quiz 2 25%
Quiz 3/ Course Project 25%

Quizes: Quizes will occur regularly throughout the semester and will be based on material from the lectures, assigned readings, and class notes. Final Project: We are designing a final project which will be to implement the front end of a language based on Atomic Transactions. Students may substitute this project for the third quiz. The last day of classes will be reserved for the final project presentations and the third quiz. More details will be provided later in the term.

Homework: There will be 3 homework assignments. Homework assignments are due at the beginning of class on the due date. To facilitate grading, each problem must be stapled separately. Contact the TA in advance to request an extension. No homeworks will be accepted once solutions are handed out.

Collaboration and Academic Honesty Policy: The course policy on collaboration and the use of past course materials is as follows:

For problem sets, students are encouraged to work in pairs. A pair needs to hand in only one copy of the solution to a problem set. Pairs need not remain the same throughout the course. Students in different groups are not allowed to collaborate on a problem set.

Collaboration amongst students to understand the course material and the statement of problems sets is always encouraged.

Referring to course bibles (e.g. old problem sets and solutions) is strictly forbidden. Normal ethics dictate that, if you have been exposed to an old solution through any means, you should explicitly state this fact on the first page of an affected problem set submission.

If you have any questions about the above policy, please consult the TA.

Course Reading Materials: Implicit Parallel Programming in pH by Rishiyur S. Nikhil and Arvind is the main textbook used in this course. This book is available at Quantum Books for around $65. This book will be useful for approximately half the course. Bluespec material will be available from the Bluespec site free of charge.

Facilities: Programming assignments for the course will be implemented in two programming languages: Haskell (Hugs implementation) and Bluespec. A Hugs compilers will be available.

Home Page
: The home page for the course is: http://csg.csail.mit.edu/6.827/. Here you will find course related information like handouts, manuals, problem set hints, etc... Make sure you refresh this page frequently, as it will change often and caching in your Web browser may prevent you from seeing the latest version.

Computer Communication: Course Staff can be reached for questions, etc., via email at 6827-staff@lists.csail.mit.edu. We will mail all announcements, clarifications to assignments, answers to common questions, etc., to the course email list -- 6.827-students@lists.csail.mit.edu.