(baden+260@eng.ucsd.edu)
(sarya@eng.ucsd.edu)
We will use Piazza for announcements and for on line conversations. To sign up for this class, use the following URL: https://piazza.com/ucsd/fall2015/cse260. Once signed up, you may access Piazza using via the following URL: https://piazza.com/ucsd/fall2015/cse260/home
Grades will be distributed via Moodle. Access our Moodle page via this URL.
The course has 2 required textbooks.
Programming Massively Parallel Processors: A Hands-on Approach, Second Edition, by David Kirk and Wen-mei Hwu, Morgan Kaufmann Publishers (2012).
An Introduction to Parallel Programming, by Peter Pacheco, Morgan Kaufmann (2011).
Parallel computation has a rich history, and the techniques for solving problems on parallel computers are both intriguing and intellectually appealing. Technological disruption has periodically changed the course of the field, stimulating novel ways of solving problems, making tomorrow’s problems tractable today. But this capability is a double-edged sword: the best practices for building a parallel program for high performance are constantly changing.
CSE 260 will give you a firm foundation for understanding best programming practices, and trends to help you understand how to respond to future technological change. The course will enable you to design and implement parallel algorithms, assess and implement performance tradeoffs, and to generalize these skills to new problems. We’ll consider applications–both ordinary and extraordinary–and develop a systematic approach for building effective parallel programs.
The course will cover the principles and practices of parallel programming on Graphical Programming Units (GPUs), multicore processors and computing clusters, with applications to real world problems. There will be a fair bit of programming. Our computational platforms will include cutting edge systems located in the CSE and Math Departments at UCSD and the The Texas Advanced Computing Center located in Austin, Texas.
The prerequisite for CSE 260 is Graduate standing. An undergraduate background in computer architecture and operating systems is desirable but not required. Knowledge of C is required and C++ is recommended. Students from other departments are welcome; contact me if you have any questions about your academic background, including programming experience.