6.827 Multithreaded Parallelism: Languages and Compilers (Fall2006) 

6.827 Multithreaded Parallelism: Languages and
Compilers (Information on this website is preliminary and subject to change) Instructor: Arvind Lectures: TR9:3011AM, 36156 Units: 309, Hlevel, 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 singlethread 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 singlethread 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 closedbook quiz. The second part will cover several well established models of parallel computation (e.g., dataflow, multithreading) 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 atomictransactions. 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 InformationLectures: Lectures will be from 9:30 AM to 11:00 AM every Tuesday and Thursday in room 36156. Grading: Grades will be based on homeworks (25%), 3 quizes(25%), or a project which may substitute for the final quiz.
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:
