Algorithmic Techniques

Course Goals: To master commonly used algorithm techniques and computational thinking skills for scalable, many-core/many-thread programming

  • Many-core hardware limitations and constraints
  • Desirable and undesirable computation patterns
  • Practical algorithm techniques to convert undesirable computation patterns into desirable ones

High performance computing algorithms and software technology, with an emphasis on using distributed memory systems for scientific computing.

Learn how to design and implement applications for extreme scale systems, including analyzing and understanding the performance of applications, the primary causes of poor performance and scalability, and how both the choice of algorithm and programming system impact achievable performance.The course covers multi-and many-core processors, interconnects in HPC systems, parallel I/O, and the impact of faults on program and algorithm design.

This semester-long course is offered to students who are interested in learning how to use visualization to analyze large scale scientific data sets. This course will also be of interest to students who are considering scientific visualization as a research topic for their advanced studies. The desired audience will be graduate students who are majoring in computer science, or areas related to computational sciences. Students are expected to be able to program in C or C++. Prior experience in parallel programming is a plus.