Course Description:

Nearly all of us have a parallel computer at our fingertips, yet most of us use the parallel processors only indirectly, through software packages written by others. In this course you’ll learn how to write parallel programs, as well as the skills needed to make parallelism work for you. We’ll consider applications--both ordinary and extraordinary--and develop a systematic approach for tackling them. The goal of the course is to learn how to devise and implement parallel algorithms, to understand performance tradeoffs, and to learn how to generalize these skills to new problems. The course will provide an overview of important topics and issues for parallel architectures, models, algorithms and software. We will focus on multi-core processors, which are the latest trend in processor design, programming with the PJ parallel Java library.

CSE 160 provides a foundation for pursuing more advanced topics in parallel computation, and conducting research in this exciting field.

The course has 1 required textbook: Building Parallel Programs: SMPs, Clusters, and Java, by Alan Kaminsky, Cengage Course Technology, 2010.

Catalog copy: Introduction to HPCC; parallel architecture, algorithms, software and problem-solving techniques.  Areas covered: Flynn's taxonomy, processor-memory organizations, shared and non-shared memory models; message passing and multithreading, data parallelism; speed up, efficiency and Amdahl's law, communication and synchronization, isoefficiency and scalability.  Topics; run time software techniques, compilers, and grid computing.  Assignments given to provide practical experience.

The prerequisite  for CSE 160 is CSE 100 or Math 176.



Maintained by baden @ ucsd.
edu   [ Thu Dec 17 23:26:30 PST 2009]