Lehigh University
COLLEGE HOME | LEHIGH HOME | SEARCH




   

CSE 375   Parallel Architectures and Programming (3) 

Instructor:  Michael Spear

Current Catalog Description
Introduction to parallel computing, covering both hardware and software topics such as interconnection networks, SIMD, MIMD, and hybrid parallel architectures, parallel languages, parallelizing compiler techniques and operating systems for parallel computers. Prerequisites: ECE 201 and CSE 303 previously or concurrently, or consent of the instructor.

Textbooks:
None

References

Herlihy M & Shavit N., "The Art of Multiprocessor Programming", 1st Ed., Morgan Kaufmann, 2008

Course Outcomes

Students will have:

  1. Understanding of parallel hardware constructs, to include instruction-level parallelism, supercomputer architecture, multicore processor design
  2. Understanding of language design issues related to parallel programming
  3. Understanding of Operating System support for parallel computing
  4. Ability to use OpenMP and MPI
  5. Ability to identify and classify dependencies
  6. Ability to produce medium-scale parallel programs

Relationship between Course Outcomes and Program Outcomes

CSE 375 substantially supports the following Program Outcomes:

B. An ability to analyze a problem and identify and define the computing requirements appropriate to its solution

C. An ability to design,  implement, and evaluate a computer-based system process, component, or program to meet desired needs

I. An abiltiy to use current techniques, skills,  and tools necessary for computing practices

CSE 375 provides modest support to the following program outcomes:

D. An ability to function effectively on teams to accomplish a common goal

F. An ability to communicate effectively with a range of audiences

 

Prerequisites by Topic
1. Knowledge of operating system resourse allocation
2. Knowledge of an assembly language
3. Knowledge of microprocessor design
4. Knowledge of memory hierarchy design
5. Fluency in a programming language
 

Major Topics Covered in the Course
1. Dependency Analysis
2. Design and Implementation of Threads
3. Design of Multicore Architectures
4. Cache Coherence and Memory Consistency
5. Linearizability
6. Locking and Nonblocking Synchronization
7. Parallel Language Design
8. Speculation and Transactional Memory

Assessment Plan for the Course

The students are given two short programming assignments, and a semester-long programming assignment. Each programming assignment includes a written portion, describing results achieved, obstacles encountered, and analysis required to achieve results. Semester-ling programming project also includes an in-class presentation.

How Data in the Course are Used to Assess PRogram Outcomes:(unless adequately covered already in the assessment discussion under Criterion 4)

Objectives 1,4, and 5 are measured directly through the first two programming assignments. Objectives 1,2,3 and 6 are measured in the semester project. During my self-assessment for the course, I evaluate the degree to which each objective was met by the best, worst, and average student.

     
image


©2012 P.C. Rossin College of Engineering & Applied Science
Computer Science & Engineering, Packard Laboratory, Lehigh University, Bethlehem PA 18015